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*=:: + Use 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= 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"