From: Peter Hjalmarsson <xake@rymdraket.net>
Date: Wed, 23 Feb 2011 06:10:51 +0000 (+0100)
Subject: Introducing MDADM_CONFIG
X-Git-Tag: v3.4.14~1^2~7
X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=7ae5e10474ef720a50b6ae01574036beaa017c38;p=genkernel.git

Introducing MDADM_CONFIG

Make it possible to choose a custom mdadm.conf for your ramdisk.
If not set, no mdadm.conf will be copied, and ramdisk will auto-detect.
This also fixes a regression where genkernel always tried to copy
/etc/mdadm.conf to the ramdisk, failing if it was non-existant.
---

diff --git a/doc/genkernel.8.txt b/doc/genkernel.8.txt
index cd276d2..e82f1ec 100644
--- a/doc/genkernel.8.txt
+++ b/doc/genkernel.8.txt
@@ -246,11 +246,14 @@ INITIALIZATION
     exist.
 
 *--mdadm*::
-    Copy '/etc/mdadm.conf' and mdadm/mdmon binaries to initramfs.
+    Include mdadm/mdmon support.
     Without sys-fs/mdadm[static] installed, this will compile mdadm for you.
 
+*--mdadm-config*=<file>::
+    Use <file> as configfile for MDADM.
+
 *--dmraid*::
-    Add DMRAID support.
+    Include DMRAID support.
 
 *--multipath*::
     Include Multipath support
diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index ebf69ea..506ca3f 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -79,7 +79,8 @@ longusage() {
   echo "				--> 'emerge evms' in the host operating system"
   echo "				first"
   echo "	--lvm			Include LVM support"
-  echo "	--mdadm			Copy /etc/mdadm.conf to initramfs"
+  echo "	--mdadm			Include MDADM/MDMON support"
+  echo "	--mdadm-config=<file>	Use file as mdadm.conf in initramfs"
   echo "	--dmraid		Include DMRAID support"
   echo "	--multipath		Include Multipath support"
   echo "	--iscsi			Include iSCSI support"
@@ -248,6 +249,10 @@ parse_cmdline() {
 			CMD_MDADM=1
 			print_info 2 "CMD_MDADM: $CMD_MDADM"
 			;;
+		--mdadm-config=*)
+			CMD_MDADM_CONFIG=`parse_opt "$*"`
+			print_info 2 "CMD_MDADM_CONFIG: $CMD_MDADM_CONFIG"
+			;;
 		--no-busybox)
 			CMD_BUSYBOX=0
 			print_info 2 "CMD_BUSYBOX: ${CMD_BUSYBOX}"
diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index a55ccec..e680569 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -119,6 +119,7 @@ determine_real_args() {
 	set_config_with_override 1 LUKS                 CMD_LUKS
 	set_config_with_override 1 GPG                  CMD_GPG
 	set_config_with_override 1 MDADM                CMD_MDADM
+	set_config_with_override 2 MDADM_CONFIG         CMD_MDADM_CONFIG
 	set_config_with_override 1 MULTIPATH            CMD_MULTIPATH
 	set_config_with_override 1 FIRMWARE             CMD_FIRMWARE
 	set_config_with_override 2 FIRMWARE_DIR         CMD_FIRMWARE_DIR         "/lib/firmware"
diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 582df2c..2d017fd 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -342,8 +342,19 @@ append_mdadm(){
 	mkdir -p "${TEMP}/initramfs-mdadm-temp/sbin/"
 	if [ "${MDADM}" = '1' ]
 	then
-		cp -a /etc/mdadm.conf "${TEMP}/initramfs-mdadm-temp/etc" \
-			|| gen_die "Could not copy mdadm.conf!"
+		if [ -n "${MDADM_CONFIG}" ]
+		then
+			if [ -f "${MDADM_CONFIG}" ]
+			then
+				cp -a "${MDADM_CONFIG}" "${TEMP}/initramfs-mdadm-temp/etc/mdadm.conf" \
+				|| gen_die "Could not copy mdadm.conf!"
+			else
+				gen_die '${MDADM_CONFIG} does not exist!'
+			fi
+		else
+			print_info 1 '		MDADM: Skipping inclusion of mdadm.conf'
+		fi
+
 		if [ -e '/sbin/mdadm' ] && LC_ALL="C" ldd /sbin/mdadm | grep -q 'not a dynamic executable' \
 		&& [ -e '/sbin/mdmon' ] && LC_ALL="C" ldd /sbin/mdmon | grep -q 'not a dynamic executable'
 		then
diff --git a/genkernel.conf b/genkernel.conf
index 779d71f..d510339 100644
--- a/genkernel.conf
+++ b/genkernel.conf
@@ -70,9 +70,14 @@ USECOLOR="yes"
 # If included, busybox is rebuilt if the cached copy is out of date.
 # BUSYBOX="yes"
 
-# Copy /etc/mdadm.conf, mdadm/mdmon binaries to initramfs.
+# Includes mdadm/mdmon binaries in initramfs.
 # Without sys-fs/mdadm[static] installed, this will build a static mdadm.
 # MDADM="no"
+# Specify a custom mdadm.conf.
+# If not set the ramdisk will be built without a mdadm.conf and will auto-detect
+# arrays during bootup.
+# This should generally not be needed.
+# MDADM_CONFIG=""
 
 # Add Multipath support.
 # MULTIPATH="no"