Instead of adding modprobe and rmmod, create symlinks to /bin/true to don't produce unnecessary errors. Anyway it's a workaround for following desired behaviour: modprobe tries to insert module only if it's not built into kernel --- dracut | 10 +++++++++- dracut.8 | 4 ++++ modules.d/99base/install | 13 ++++++++++--- 3 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/dracut b/dracut index c22051c..e0c2186 100755 --- a/dracut +++ b/dracut @@ -46,6 +46,10 @@ Creates initial ramdisk images for preloading modules firmwares, separated by : --kernel-only Only install kernel drivers and firmware files --no-kernel Do not install kernel drivers and firmware files + --ignore-kernel-modules + Don't try to load modules. It automatically implies + '--no-kernel'. It's assumed that everything needed + is built into kernel. --strip Strip binaries in the initramfs --nostrip Do not strip binaries in the initramfs (default) --mdadmconf Include local /etc/mdadm.conf @@ -86,6 +90,10 @@ while (($# > 0)); do --fwdir) fw_dir_l="$2"; shift;; --kernel-only) kernel_only="yes"; no_kernel="no";; --no-kernel) kernel_only="no"; no_kernel="yes";; + --ignore-kernel-modules) kernel_only="no"; no_kernel="yes" + ignore_kmodules="yes" + omit_dracutmodules_l+=\ kernel-modules + ;; --strip) do_strip_l="yes";; --nostrip) do_strip_l="no";; --mdadmconf) mdadmconf_l="yes";; @@ -228,7 +236,7 @@ chmod 755 "$initdir" export initdir hookdirs dracutbasedir dracutmodules drivers \ fw_dir drivers_dir debug beverbose no_kernel kernel_only \ - add_drivers mdadmconf lvmconf filesystems + add_drivers mdadmconf lvmconf filesystems ignore_kmodules if [[ $kernel_only != yes ]]; then # Create some directory structure first diff --git a/dracut.8 b/dracut.8 index 3a85cb5..4890357 100644 --- a/dracut.8 +++ b/dracut.8 @@ -52,6 +52,10 @@ only install kernel drivers and firmware files .BR \-\-no-kernel do not install kernel drivers and firmware files .TP +.BR \-\-ignore-kernel-modules +don't try to load modules; it automatically implies \fB--no-kernel\fR; it's +assumed that everything needed is built into kernel +.TP .BR \-\-mdadmconf include local /etc/mdadm.conf .TP diff --git a/modules.d/99base/install b/modules.d/99base/install index 6ba9e7e..9cdb086 100755 --- a/modules.d/99base/install +++ b/modules.d/99base/install @@ -1,6 +1,13 @@ #!/bin/bash -dracut_install mount mknod mkdir modprobe pidof sleep chroot \ - sed ls flock cp mv dmesg rm ln rmmod mkfifo less +dracut_install mount mknod mkdir pidof sleep chroot sed ls flock cp mv dmesg \ + rm ln mkfifo less +if [[ ${ignore_kmodules} = yes ]]; then + inst /bin/true + ln -s /bin/true "${initdir}"/sbin/modprobe + ln -s /bin/true "${initdir}"/sbin/rmmod +else + dracut_install modprobe rmmod +fi if [ ! -e "${initdir}/bin/sh" ]; then dracut_install bash (ln -s bash "${initdir}/bin/sh" || :) @@ -18,7 +25,7 @@ if which switch_root >/dev/null 2>&1; then dracut_install switch_root else inst "$moddir/switch_root" "/sbin/switch_root" \ - || derror "Failed to install switch_root" + || derror "Failed to install switch_root" fi inst "$moddir/dracut-lib.sh" "/lib/dracut-lib.sh" inst_hook cmdline 10 "$moddir/parse-root-opts.sh" -- 1.7.2
signature.asc
Description: PGP signature