diff --git a/0001-get-rid-of-libdir-and-usrlibdir.patch b/0001-get-rid-of-libdir-and-usrlibdir.patch new file mode 100644 index 0000000..1e550ab --- /dev/null +++ b/0001-get-rid-of-libdir-and-usrlibdir.patch @@ -0,0 +1,138 @@ +From d77540c8e4caf557d472786711ef17838a4a24f1 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 4 Jun 2012 15:23:15 +0200 +Subject: [PATCH] get rid of libdir and usrlibdir + +--- + dracut.sh | 23 ++++++++-------------- + modules.d/01fips/module-setup.sh | 2 +- + modules.d/50plymouth/plymouth-populate-initrd.sh | 12 ++++------- + modules.d/95nfs/module-setup.sh | 8 +++----- + 4 files changed, 16 insertions(+), 29 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index c9e412e..65398a8 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -527,22 +527,15 @@ ddebug "Executing $0 $dracut_args" + } + + # Detect lib paths +-if ! [[ $libdir ]] || ! [[ $usrlibdir ]] ; then ++if ! [[ $libdirs ]] ; then + if strstr "$(ldd /bin/sh)" "/lib64/" &>/dev/null \ + && [[ -d /lib64 ]]; then +- libdir=/lib64 +- usrlibdir=/usr/lib64 ++ libdirs+=" /lib64" ++ [[ -d /usr/lib64 ]] && libdirs+=" /usr/lib64" + else +- libdir=/lib +- usrlibdir=/usr/lib ++ libdirs+=" /lib" ++ [[ -d /usr/lib ]] && libdirs+=" /usr/lib" + fi +- for i in $libdir $usrlibdir; do +- if [[ -d $i ]]; then +- libdirs+=" $i" +- else +- dwarn 'No $i directory??!!' +- fi +- done + fi + + # This is kinda legacy -- eventually it should go away. +@@ -660,7 +653,7 @@ done + export initdir dracutbasedir dracutmodules drivers \ + fw_dir drivers_dir debug no_kernel kernel_only \ + add_drivers omit_drivers mdadmconf lvmconf filesystems \ +- use_fstab fstab_lines libdir usrlibdir fscks nofscks \ ++ use_fstab fstab_lines libdirs fscks nofscks \ + stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \ + debug host_fs_types host_devs sshkey add_fstab \ + DRACUT_VERSION +@@ -672,13 +665,13 @@ export initdir dracutbasedir dracutmodules drivers \ + [[ $prefix ]] && ln -sfn "${prefix#/}/lib" "$initdir/lib" + + if [[ $prefix ]]; then +- for d in bin etc lib "$libdir" sbin tmp usr var; do ++ for d in bin etc lib $libdirs sbin tmp usr var; do + ln -sfn "${prefix#/}/${d#/}" "$initdir/$d" + done + fi + + if [[ $kernel_only != yes ]]; then +- for d in usr/bin usr/sbin bin etc lib "$libdir" sbin tmp usr var var/log var/run var/lock; do ++ for d in usr/bin usr/sbin bin etc lib $libdirs sbin tmp usr var var/log var/run var/lock; do + [[ -e "${initdir}${prefix}/$d" ]] && continue + if [ -L "/$d" ]; then + inst_symlink "/$d" "${prefix}/$d" +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index 075fc24..a576a4a 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -41,7 +41,7 @@ install() { + inst_libdir_file libfreebl3.so + inst_libdir_file libfreebl3.chk + +- dracut_install $usrlibdir/hmaccalc/sha512hmac.hmac ++ inst_libdir_file 'hmaccalc/sha512hmac.hmac' + if command -v prelink >/dev/null; then + dracut_install prelink + fi +diff --git a/modules.d/50plymouth/plymouth-populate-initrd.sh b/modules.d/50plymouth/plymouth-populate-initrd.sh +index 25657ae..7ab1a5d 100755 +--- a/modules.d/50plymouth/plymouth-populate-initrd.sh ++++ b/modules.d/50plymouth/plymouth-populate-initrd.sh +@@ -12,8 +12,8 @@ dracut_install /bin/plymouth \ + mkdir -m 0755 -p "${initdir}/usr/share/plymouth" + + if [[ $hostonly ]]; then +- dracut_install "${usrlibdir}/plymouth/text.so" \ +- "${usrlibdir}/plymouth/details.so" \ ++ inst_libdir_file "plymouth/text.so" "plymouth/details.so" ++ dracut_install \ + "/usr/share/plymouth/themes/details/details.plymouth" \ + "/usr/share/plymouth/themes/text/text.plymouth" \ + +@@ -28,7 +28,7 @@ if [[ $hostonly ]]; then + inst /usr/share/plymouth/themes/default.plymouth + # Install plugin for this theme + PLYMOUTH_PLUGIN=$(grep "^ModuleName=" /usr/share/plymouth/themes/default.plymouth | while read a b c; do echo $b; done;) +- inst "${usrlibdir}/plymouth/${PLYMOUTH_PLUGIN}.so" ++ inst_libdir_file "plymouth/${PLYMOUTH_PLUGIN}.so" + fi + else + for x in /usr/share/plymouth/themes/{text,details}/* ; do +@@ -37,11 +37,7 @@ else + mkdir -m 0755 -p "${initdir}/$THEME_DIR" + dracut_install "$x" + done +- for x in "${usrlibdir}"/plymouth/{text,details}.so ; do +- [[ -f "$x" ]] || continue +- [[ "$x" != "${x%%/label.so}" ]] && continue +- dracut_install "$x" +- done ++ inst_libdir_file "/plymouth/{text,details}.so" + ( + cd ${initdir}/usr/share/plymouth/themes; + ln -s text/text.plymouth default.plymouth 2>&1; +diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh +index 1d62e95..bf87762 100755 +--- a/modules.d/95nfs/module-setup.sh ++++ b/modules.d/95nfs/module-setup.sh +@@ -43,11 +43,9 @@ install() { + dracut_install rpc.idmapd + dracut_install sed + +- for _i in {"$libdir","$usrlibdir"}/libnfsidmap_nsswitch.so* \ +- {"$libdir","$usrlibdir"}/libnfsidmap/*.so \ +- {"$libdir","$usrlibdir"}/libnfsidmap*.so*; do +- [ -e "$_i" ] && dracut_install "$_i" +- done ++ inst_libdir_file 'libnfsidmap_nsswitch.so*' ++ inst_libdir_file 'libnfsidmap/*.so' ++ inst_libdir_file 'libnfsidmap*.so*' + + _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \ + | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|') diff --git a/0002-dasd_mod-change-rd.dasd-to-dasd_mod-kernel-parameter.patch b/0002-dasd_mod-change-rd.dasd-to-dasd_mod-kernel-parameter.patch new file mode 100644 index 0000000..ae0eb6a --- /dev/null +++ b/0002-dasd_mod-change-rd.dasd-to-dasd_mod-kernel-parameter.patch @@ -0,0 +1,85 @@ +From 4d76a85df17b600553af1f58ced1dc7bea8a0e7c Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 5 Jun 2012 20:23:35 +0200 +Subject: [PATCH] dasd_mod: change rd.dasd to dasd_mod kernel parameter + +--- + dracut.cmdline.7.asc | 9 ++------- + modules.d/95dasd_mod/parse-dasd-mod.sh | 34 -------------------------------- + 2 files changed, 2 insertions(+), 41 deletions(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 8a74cf5..9fa0ee8 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -434,14 +434,9 @@ NBD + + DASD + ~~~~ +-**rd.dasd_mod.dasd=**....:: ++**rd.dasd=**....:: + same syntax as the kernel module parameter (s390 only) + +-**rd.dasd=**__[,readonly=_X_][,use_diag=_X_][,erplog=_X_]:: +- activate DASD device with the given adaptor device bus ID and setting the +- sysfs attributes to the specified values. This parameter can be specified +- multiple times. +- + ZFCP + ~~~~ + **rd.zfcp=**__,__,__:: +@@ -510,7 +505,7 @@ rdbreak:: rd.break + + rd_CCW:: rd.ccw + +-rd_DASD_MOD:: rd.dasd_mod.dasd ++rd_DASD_MOD:: rd.dasd + + rd_DASD:: rd.dasd + +diff --git a/modules.d/95dasd_mod/parse-dasd-mod.sh b/modules.d/95dasd_mod/parse-dasd-mod.sh +index 7b197d1..c37aca8 100755 +--- a/modules.d/95dasd_mod/parse-dasd-mod.sh ++++ b/modules.d/95dasd_mod/parse-dasd-mod.sh +@@ -3,41 +3,7 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + mod_args="" + +-convert_dasd_param() { +- local bus_id params +- params="" +- bus_id=$1; shift +- while [ $# -gt 0 ]; do +- case "$1" in +- use_diag\=1) +- params="$params,diag" +- ;; +- readonly\=1) +- params="$params,ro" +- ;; +- erplog\=1) +- params="$params,erplog" +- ;; +- failfast\=1) +- params="$params,failfast" +- ;; +- esac +- shift +- done +- params="${params#*,}" +- if [ -n "$params" ]; then +- echo "$bus_id($params)" +- else +- echo "$bus_id" +- fi +-} +- + for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do +- OLD_IFS=$IFS +- IFS="," +- set -- $dasd_arg +- IFS=$OLD_IFS +- dasd_arg=$(convert_dasd_param "$@") + mod_args="$mod_args,$dasd_arg" + done + diff --git a/0003-kernel-modules-module-setup.sh-include-omapdrm-in-th.patch b/0003-kernel-modules-module-setup.sh-include-omapdrm-in-th.patch new file mode 100644 index 0000000..998dc6b --- /dev/null +++ b/0003-kernel-modules-module-setup.sh-include-omapdrm-in-th.patch @@ -0,0 +1,23 @@ +From b6fd45163a18d19434de33de3f3ed324bc560a97 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 6 Jun 2012 11:45:30 +0200 +Subject: [PATCH] kernel-modules/module-setup.sh: include omapdrm in the arm + modules to include + +--- + modules.d/90kernel-modules/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index 4df180b..1d39c85 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -36,7 +36,7 @@ installkernel() { + hostonly='' instmods usb_storage sdhci sdhci-pci + + # arm specific modules +- hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio omap sdhci_dove ahci_platform pata_imx sata_mv ++ hostonly='' instmods sdhci_esdhc_imx mmci sdhci_tegra mvsdio omap omapdrm sdhci_dove ahci_platform pata_imx sata_mv + + # install keyboard support + hostonly='' instmods atkbd i8042 usbhid hid-apple hid-sunplus hid-cherry hid-logitech hid-logitech-dj hid-microsoft ehci-hcd ohci-hcd uhci-hcd xhci-hcd diff --git a/0004-Avoid-annonying-warnings-when-pkg-config-is-not-inst.patch b/0004-Avoid-annonying-warnings-when-pkg-config-is-not-inst.patch new file mode 100644 index 0000000..836d483 --- /dev/null +++ b/0004-Avoid-annonying-warnings-when-pkg-config-is-not-inst.patch @@ -0,0 +1,43 @@ +From 2cf4f4fb747803ff31d53507bc047232c4ef99ea Mon Sep 17 00:00:00 2001 +From: Juan RP +Date: Wed, 6 Jun 2012 14:19:59 +0200 +Subject: [PATCH] Avoid annonying warnings when pkg-config is not installed. + +--- + dracut-functions.sh | 2 +- + modules.d/95udev-rules/module-setup.sh | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index f788878..4180f03 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -531,7 +531,7 @@ inst_symlink() { + ln -sfn $(convert_abs_rel "${_target}" "${_realsrc}") "$initdir/$_target" + } + +-udevdir=$(pkg-config udev --variable=udevdir) ++udevdir=$(pkg-config udev --variable=udevdir 2>/dev/null) + if ! [[ -d "$udevdir" ]]; then + [[ -d /lib/udev ]] && udevdir=/lib/udev + [[ -d /usr/lib/udev ]] && udevdir=/usr/lib/udev +diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh +index e8c1c04..ff47021 100755 +--- a/modules.d/95udev-rules/module-setup.sh ++++ b/modules.d/95udev-rules/module-setup.sh +@@ -5,13 +5,13 @@ + install() { + local _i + +- systemdutildir=$(pkg-config systemd --variable=systemdutildir) ++ systemdutildir=$(pkg-config systemd --variable=systemdutildir 2>/dev/null) + if ! [[ -d "$systemdutildir" ]]; then + [[ -d /lib/systemd ]] && systemdutildir=/lib/systemd + [[ -d /usr/lib/systemd ]] && systemdutildir=/usr/lib/systemd + fi + +- udevdir=$(pkg-config udev --variable=udevdir) ++ udevdir=$(pkg-config udev --variable=udevdir 2>/dev/null) + if ! [[ -d "$udevdir" ]]; then + [[ -d /lib/udev ]] && udevdir=/lib/udev + [[ -d /usr/lib/udev ]] && udevdir=/usr/lib/udev diff --git a/0005-make-udevdir-systemdutildir-systemdsystemunitdir-glo.patch b/0005-make-udevdir-systemdutildir-systemdsystemunitdir-glo.patch new file mode 100644 index 0000000..7c77ad1 --- /dev/null +++ b/0005-make-udevdir-systemdutildir-systemdsystemunitdir-glo.patch @@ -0,0 +1,127 @@ +From d161561290909523818e5ec16271e5f88b6152de Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 6 Jun 2012 15:12:59 +0200 +Subject: [PATCH] make udevdir systemdutildir systemdsystemunitdir global vars + +your distribution should ship those settings in +/etc/dracut.conf.d/01-distro.conf + +see dracut.conf.d/fedora.conf.example +--- + dracut-functions.sh | 6 ------ + dracut.conf.d/fedora.conf.example | 3 +++ + dracut.sh | 20 +++++++++++++++++++- + modules.d/95udev-rules/module-setup.sh | 12 ------------ + modules.d/98systemd/module-setup.sh | 11 ----------- + 5 files changed, 22 insertions(+), 30 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 4180f03..8aba88d 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -531,12 +531,6 @@ inst_symlink() { + ln -sfn $(convert_abs_rel "${_target}" "${_realsrc}") "$initdir/$_target" + } + +-udevdir=$(pkg-config udev --variable=udevdir 2>/dev/null) +-if ! [[ -d "$udevdir" ]]; then +- [[ -d /lib/udev ]] && udevdir=/lib/udev +- [[ -d /usr/lib/udev ]] && udevdir=/usr/lib/udev +-fi +- + # attempt to install any programs specified in a udev rule + inst_rule_programs() { + local _prog _bin +diff --git a/dracut.conf.d/fedora.conf.example b/dracut.conf.d/fedora.conf.example +index e362e73..f3f57f1 100644 +--- a/dracut.conf.d/fedora.conf.example ++++ b/dracut.conf.d/fedora.conf.example +@@ -8,3 +8,6 @@ stdloglvl=3 + realinitpath="/usr/lib/systemd/systemd" + install_items+=" vi /etc/virc ps grep cat rm " + prefix="/" ++systemdutildir=/usr/lib/systemd ++systemdsystemunitdir=/usr/lib/systemd/system ++udevdir=/usr/lib/udev +diff --git a/dracut.sh b/dracut.sh +index 65398a8..49ea503 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -650,13 +650,31 @@ for dev in "${host_devs[@]}"; do + done + done + ++[[ -d $udevdir ]] \ ++ || udevdir=$(pkg-config udev --variable=udevdir 2>/dev/null) ++if ! [[ -d "$udevdir" ]]; then ++ [[ -d /lib/udev ]] && udevdir=/lib/udev ++ [[ -d /usr/lib/udev ]] && udevdir=/usr/lib/udev ++fi ++ ++[[ -d $systemdutildir ]] \ ++ || systemdutildir=$(pkg-config systemd --variable=systemdutildir 2>/dev/null) ++[[ -d $systemdsystemunitdir ]] \ ++ || systemdsystemunitdir=$(pkg-config systemd --variable=systemdsystemunitdir 2>/dev/null) ++ ++if ! [[ -d "$systemdutildir" ]]; then ++ [[ -d /lib/systemd ]] && systemdutildir=/lib/systemd ++ [[ -d /usr/lib/systemd ]] && systemdutildir=/usr/lib/systemd ++fi ++[[ -d "$systemdsystemunitdir" ]] || systemdsystemunitdir=${systemdutildir}/system ++ + export initdir dracutbasedir dracutmodules drivers \ + fw_dir drivers_dir debug no_kernel kernel_only \ + add_drivers omit_drivers mdadmconf lvmconf filesystems \ + use_fstab fstab_lines libdirs fscks nofscks \ + stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \ + debug host_fs_types host_devs sshkey add_fstab \ +- DRACUT_VERSION ++ DRACUT_VERSION udevdir systemdutildir systemdsystemunitdir + + # Create some directory structure first + [[ $prefix ]] && mkdir -m 0755 -p "${initdir}${prefix}" +diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh +index ff47021..a48b0cb 100755 +--- a/modules.d/95udev-rules/module-setup.sh ++++ b/modules.d/95udev-rules/module-setup.sh +@@ -5,18 +5,6 @@ + install() { + local _i + +- systemdutildir=$(pkg-config systemd --variable=systemdutildir 2>/dev/null) +- if ! [[ -d "$systemdutildir" ]]; then +- [[ -d /lib/systemd ]] && systemdutildir=/lib/systemd +- [[ -d /usr/lib/systemd ]] && systemdutildir=/usr/lib/systemd +- fi +- +- udevdir=$(pkg-config udev --variable=udevdir 2>/dev/null) +- if ! [[ -d "$udevdir" ]]; then +- [[ -d /lib/udev ]] && udevdir=/lib/udev +- [[ -d /usr/lib/udev ]] && udevdir=/usr/lib/udev +- fi +- + # Fixme: would be nice if we didn't have to know which rules to grab.... + # ultimately, /lib/initramfs/rules.d or somesuch which includes links/copies + # of the rules we want so that we just copy those in would be best +diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh +index 1d8aefc..4fda2a2 100755 +--- a/modules.d/98systemd/module-setup.sh ++++ b/modules.d/98systemd/module-setup.sh +@@ -16,17 +16,6 @@ depends() { + } + + install() { +- local systemdutildir systemdsystemunitdir +- +- systemdutildir=$(pkg-config systemd --variable=systemdutildir) +- systemdsystemunitdir=$(pkg-config systemd --variable=systemdsystemunitdir) +- +- if ! [[ -d "$systemdutildir" ]]; then +- [[ -d /lib/systemd ]] && systemdutildir=/lib/systemd +- [[ -d /usr/lib/systemd ]] && systemdutildir=/usr/lib/systemd +- fi +- [[ -d "$systemdsystemunitdir" ]] || systemdsystemunitdir=${systemdutildir}/system +- + dracut_install -o "$i" \ + $systemdutildir/systemd \ + $systemdutildir/systemd-cgroups-agent \ diff --git a/0006-modules-are-now-only-handled-with-sys-modules-and-mo.patch b/0006-modules-are-now-only-handled-with-sys-modules-and-mo.patch new file mode 100644 index 0000000..18fd766 --- /dev/null +++ b/0006-modules-are-now-only-handled-with-sys-modules-and-mo.patch @@ -0,0 +1,207 @@ +From fe1484f3db0c7fe7fe8e6d5cc1e6e4d8f0b17052 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 6 Jun 2012 18:20:35 +0200 +Subject: [PATCH] modules are now only handled with /sys/modules and + modules.dep + +No more "find" and /proc/modules checking. We now rely entirely on +depmod and modules.dep +--- + TODO | 3 +- + dracut-functions.sh | 56 +++++++----------------------- + dracut.sh | 5 +++ + modules.d/50plymouth/module-setup.sh | 62 +++++++++++++++++++++++++--------- + 4 files changed, 65 insertions(+), 61 deletions(-) + +diff --git a/TODO b/TODO +index acbb0a2..095ec97 100644 +--- a/TODO ++++ b/TODO +@@ -17,7 +17,8 @@ INITRAMFS TODO + + GENERATOR TODO + +-- remove /proc/modules use /sys/module ++- add interpreter/plugin-scripts to be sourced at the beginning or end (can use dracut-functions) ++- provide "installkernel" and "new-kernel-pkg" + - add mechanism for module specific command line options + - pkg-config integration, to make it easy for other packages to use us. + - add recovery image creator (mkrecovery) +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 8aba88d..6a72fce 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -1053,7 +1053,7 @@ install_kmod_with_fw() { + fi + done + if [[ $_found != yes ]]; then +- if ! grep -qe "\<${_modname//-/_}\>" /proc/modules; then ++ if ! [[ -d $(echo /sys/module/${_modname//-/_}|{ read a b; echo $a; }) ]]; then + dinfo "Possible missing firmware \"${_fw}\" for kernel module" \ + "\"${_modname}.ko\"" + else +@@ -1086,54 +1086,21 @@ for_each_kmod_dep() { + ) + } + +-# filter kernel modules to install certain modules that meet specific +-# requirements. +-# $1 = search only in subdirectory of /kernel/$1 +-# $2 = function to call with module name to filter. +-# This function will be passed the full path to the module to test. +-# The behaviour of this function can vary depending on whether $hostonly is set. +-# If it is, we will only look at modules that are already in memory. +-# If it is not, we will look at all kernel modules +-# This function returns the full filenames of modules that match $1 +-filter_kernel_modules_by_path () ( +- local _modname _filtercmd +- if ! [[ $hostonly ]]; then +- _filtercmd='find "$srcmods/kernel/$1" "$srcmods/extra"' +- _filtercmd+=' "$srcmods/weak-updates" -name "*.ko" -o -name "*.ko.gz"' +- _filtercmd+=' -o -name "*.ko.xz"' +- _filtercmd+=' 2>/dev/null' +- else +- _filtercmd='cut -d " " -f 1 $initdir/$$.ko +- $2 $initdir/$$.ko && echo "$_modname" +- rm -f $initdir/$$.ko +- ;; +- *.ko.xz) xz -dc "$_modname" > $initdir/$$.ko +- $2 $initdir/$$.ko && echo "$_modname" +- rm -f $initdir/$$.ko +- ;; +- esac +- done +-) ++ + find_kernel_modules_by_path () ( + if ! [[ $hostonly ]]; then +- find "$srcmods/kernel/$1" "$srcmods/extra" "$srcmods/weak-updates" \ +- -name "*.ko" -o -name "*.ko.gz" -o -name "*.ko.xz" 2>/dev/null ++ while read a rest; do ++ if [[ "${a##kernel}" != "$a" ]]; then ++ [[ "${a##kernel/$1}" != "$a" ]] || continue ++ fi ++ echo $srcmods/${a%:} ++ done < $srcmods/modules.dep + else +- cut -d " " -f 1 /dev/null + fi + ) + +-filter_kernel_modules () { +- filter_kernel_modules_by_path drivers "$1" +-} +- + find_kernel_modules () { + find_kernel_modules_by_path drivers + } +@@ -1180,8 +1147,9 @@ instmods() { + fi + # If we are building a host-specific initramfs and this + # module is not already loaded, move on to the next one. +- [[ $hostonly ]] && ! grep -qe "\<${_mod//-/_}\>" /proc/modules \ +- && ! echo $add_drivers | grep -qe "\<${_mod}\>" \ ++ [[ $hostonly ]] \ ++ && ! [[ -d $(echo /sys/module/${_mod//-/_}|{ read a b; echo $a; }) ]] \ ++ && ! [[ "$add_drivers" =~ " ${_mod} " ]] \ + && return + + # We use '-d' option in modprobe only if modules prefix path +diff --git a/dracut.sh b/dracut.sh +index 49ea503..78e7ac8 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -555,6 +555,11 @@ srcmods="/lib/modules/$kernel/" + } + export srcmods + ++[[ -f $srcmods/modules.dep ]] || { ++ dfatal "$srcmods/modules.dep is missing. Did you run depmod?" ++ exit 1 ++} ++ + if [[ -f $outfile && ! $force ]]; then + dfatal "Will not override existing initramfs ($outfile) without --force" + exit 1 +diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh +index 8a675ec..69f1bc7 100755 +--- a/modules.d/50plymouth/module-setup.sh ++++ b/modules.d/50plymouth/module-setup.sh +@@ -14,23 +14,53 @@ depends() { + installkernel() { + local _modname + # Include KMS capable drm drivers +- for _modname in $(find "$srcmods/kernel/drivers/gpu/drm" "$srcmods/extra" \( -name '*.ko' -o -name '*.ko.gz' -o -name '*.ko.xz' \) 2>/dev/null); do +- case $_modname in +- *.ko) grep -q drm_crtc_init $_modname ;; +- *.ko.gz) zgrep -q drm_crtc_init $_modname ;; +- *.ko.xz) xzgrep -q drm_crtc_init $_modname ;; +- esac +- if test $? -eq 0; then +- # if the hardware is present, include module even if it is not currently loaded, +- # as we could e.g. be in the installer; nokmsboot boot parameter will disable +- # loading of the driver if needed +- if [[ $hostonly ]] && modinfo -F alias $_modname | sed -e 's,\?,\.,g' -e 's,\*,\.\*,g' \ +- | grep -qxf - /sys/bus/pci/devices/*/modalias; then +- hostonly='' instmods $_modname +- continue +- fi +- instmods $_modname ++ ++ drm_module_filter() { ++ local _drm_drivers='drm_crtc_init' ++ local _ret ++ # subfunctions inherit following FDs ++ local _merge=8 _side2=9 ++ function nmf1() { ++ local _fname _fcont ++ while read _fname; do ++ case "$_fname" in ++ *.ko) _fcont="$(< $_fname)" ;; ++ *.ko.gz) _fcont="$(gzip -dc $_fname)" ;; ++ *.ko.xz) _fcont="$(xz -dc $_fname)" ;; ++ esac ++ [[ $_fcont =~ $_drm_drivers ++ && ! $_fcont =~ iw_handler_get_spy ]] \ ++ && echo "$_fname" ++ done ++ } ++ function rotor() { ++ local _f1 _f2 ++ while read _f1; do ++ echo "$_f1" ++ if read _f2; then ++ echo "$_f2" 1>&${_side2} ++ fi ++ done | nmf1 1>&${_merge} ++ } ++ # Use two parallel streams to filter alternating modules. ++ set +x ++ eval "( ( rotor ) ${_side2}>&1 | nmf1 ) ${_merge}>&1" ++ _ret=$? ++ [[ $debug ]] && set -x ++ return $_ret ++ } ++ ++ for _modname in $(find_kernel_modules_by_path drivers/gpu/drm \ ++ | drm_module_filter) ; do ++ # if the hardware is present, include module even if it is not currently loaded, ++ # as we could e.g. be in the installer; nokmsboot boot parameter will disable ++ # loading of the driver if needed ++ if [[ $hostonly ]] && modinfo -F alias $_modname | sed -e 's,\?,\.,g' -e 's,\*,\.\*,g' \ ++ | grep -qxf - /sys/bus/pci/devices/*/modalias; then ++ hostonly='' instmods $_modname ++ continue + fi ++ instmods $_modname + done + } + diff --git a/0007-systemd-strip-down-the-installation-of-some-unused-t.patch b/0007-systemd-strip-down-the-installation-of-some-unused-t.patch new file mode 100644 index 0000000..9e406cb --- /dev/null +++ b/0007-systemd-strip-down-the-installation-of-some-unused-t.patch @@ -0,0 +1,35 @@ +From 547bbe4876f2cc8b3eab47dd0ca25b481c54731b Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 7 Jun 2012 10:38:31 +0200 +Subject: [PATCH] systemd: strip down the installation of some unused tools + +--- + modules.d/98systemd/module-setup.sh | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh +index 4fda2a2..dbb9063 100755 +--- a/modules.d/98systemd/module-setup.sh ++++ b/modules.d/98systemd/module-setup.sh +@@ -20,21 +20,16 @@ install() { + $systemdutildir/systemd \ + $systemdutildir/systemd-cgroups-agent \ + $systemdutildir/systemd-initctl \ +- $systemdutildir/systemd-shutdownd \ + $systemdutildir/systemd-shutdown \ + $systemdutildir/systemd-modules-load \ + $systemdutildir/systemd-remount-fs \ + $systemdutildir/systemd-reply-password \ + $systemdutildir/systemd-fsck \ +- $systemdutildir/systemd-timestamp \ +- $systemdutildir/systemd-ac-power \ + $systemdutildir/systemd-sysctl \ + $systemdutildir/systemd-udevd \ + $systemdutildir/systemd-journald \ +- $systemdutildir/systemd-coredump \ + $systemdutildir/systemd-vconsole-setup \ + $systemdutildir/systemd-cryptsetup \ +- $systemdutildir/systemd-localed \ + $systemdsystemunitdir/emergency.target \ + $systemdsystemunitdir/sysinit.target \ + $systemdsystemunitdir/basic.target \ diff --git a/0008-network-ifup.sh-do-not-default-to-dhcp-for-interface.patch b/0008-network-ifup.sh-do-not-default-to-dhcp-for-interface.patch new file mode 100644 index 0000000..0f470e3 --- /dev/null +++ b/0008-network-ifup.sh-do-not-default-to-dhcp-for-interface.patch @@ -0,0 +1,35 @@ +From ede0532c580fdbace548511b07857fb2e004b299 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 29 May 2012 16:34:58 +0200 +Subject: [PATCH] network/ifup.sh: do not default to dhcp, for interfaces + without ip=... + +Don't try to be smarter than the admin configuring the machine. +Does also conflict with other methods trying to setup the interfaces, +like cmsifup.sh from the cms module. +--- + modules.d/40network/ifup.sh | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index c9516bb..f785968 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -213,17 +213,6 @@ if [ "$netif" = "$vlanname" ] && [ ! -e /tmp/net.$vlanname.up ]; then + ip link add dev "$vlanname" link "$phydevice" type vlan id "$(get_vid $vlanname; echo $?)" + fi + +-# No ip lines default to dhcp +-ip=$(getarg ip) +- +-if [ -z "$ip" ]; then +- if [ "$netroot" = "dhcp6" ]; then +- do_dhcp -6 +- else +- do_dhcp -4 +- fi +-fi +- + # Specific configuration, spin through the kernel command line + # looking for ip= lines + for p in $(getargs ip=); do diff --git a/0009-systemd-dracut-initqueue.sh-remove-pre-trigger-sourc.patch b/0009-systemd-dracut-initqueue.sh-remove-pre-trigger-sourc.patch new file mode 100644 index 0000000..ec0f155 --- /dev/null +++ b/0009-systemd-dracut-initqueue.sh-remove-pre-trigger-sourc.patch @@ -0,0 +1,22 @@ +From 521c57aca554f72c7e51ddf22f9c36bfc202cecd Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 7 Jun 2012 11:31:45 +0200 +Subject: [PATCH] systemd/dracut-initqueue.sh: remove pre-trigger sourcing + +Thanks ms77 on #dracut! +--- + modules.d/98systemd/dracut-initqueue.sh | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/modules.d/98systemd/dracut-initqueue.sh b/modules.d/98systemd/dracut-initqueue.sh +index 52b9cf5..5544e71 100755 +--- a/modules.d/98systemd/dracut-initqueue.sh ++++ b/modules.d/98systemd/dracut-initqueue.sh +@@ -8,7 +8,6 @@ if [ -f /dracut-state.sh ]; then + fi + . /lib/dracut-lib.sh + source_conf /etc/conf.d +-source_hook pre-trigger + + getarg 'rd.break=initqueue' 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue" + diff --git a/0010-mdraid-md-shutdown.sh-wait-until-md-devices-are-clea.patch b/0010-mdraid-md-shutdown.sh-wait-until-md-devices-are-clea.patch new file mode 100644 index 0000000..6b8f645 --- /dev/null +++ b/0010-mdraid-md-shutdown.sh-wait-until-md-devices-are-clea.patch @@ -0,0 +1,33 @@ +From 57038a41fac7db2ae90a6cbc10cf9b737768a115 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 8 Jun 2012 10:28:31 +0200 +Subject: [PATCH] mdraid/md-shutdown.sh: wait until md devices are clean + +--- + modules.d/90mdraid/md-shutdown.sh | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/modules.d/90mdraid/md-shutdown.sh b/modules.d/90mdraid/md-shutdown.sh +index 0d41008..1e6c9f6 100755 +--- a/modules.d/90mdraid/md-shutdown.sh ++++ b/modules.d/90mdraid/md-shutdown.sh +@@ -5,12 +5,15 @@ _do_md_shutdown() { + local ret + local final=$1 + local _offroot=$(strstr "$(mdadm --help-options 2>&1)" offroot && echo --offroot) +- info "Disassembling mdraid devices." +- mdadm $_offroot -v --stop --scan ++ info "Waiting for mdraid devices to be clean." ++ mdadm $_offroot -vv --wait-clean --scan| vinfo + ret=$? ++ info "Disassembling mdraid devices." ++ mdadm $_offroot -vv --stop --scan | vinfo ++ ret=$(($ret+$?)) + if [ "x$final" != "x" ]; then +- info "cat /proc/mdstat" +- cat /proc/mdstat | vinfo ++ info "/proc/mdstat:" ++ vinfo < /proc/mdstat + fi + return $ret + } diff --git a/0011-s-Unable-to-process-initqueue-Could-not-boot-g.patch b/0011-s-Unable-to-process-initqueue-Could-not-boot-g.patch new file mode 100644 index 0000000..9a66025 --- /dev/null +++ b/0011-s-Unable-to-process-initqueue-Could-not-boot-g.patch @@ -0,0 +1,36 @@ +From fbaf1517c352e34ede77613536ce12bd14b7ec2c Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 8 Jun 2012 10:29:35 +0200 +Subject: [PATCH] s/Unable to process initqueue/Could not boot/g + +--- + modules.d/98systemd/dracut-initqueue.sh | 2 +- + modules.d/99base/init.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/98systemd/dracut-initqueue.sh b/modules.d/98systemd/dracut-initqueue.sh +index 5544e71..5d51a80 100755 +--- a/modules.d/98systemd/dracut-initqueue.sh ++++ b/modules.d/98systemd/dracut-initqueue.sh +@@ -61,7 +61,7 @@ while :; do + + main_loop=$(($main_loop+1)) + [ $main_loop -gt $RDRETRY ] \ +- && { flock -s 9 ; emergency_shell "Unable to process initqueue"; } 9>/.console_lock ++ && { flock -s 9 ; emergency_shell "Could not boot."; } 9>/.console_lock + done + + unset job +diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh +index 7f8370e..5c693e4 100755 +--- a/modules.d/99base/init.sh ++++ b/modules.d/99base/init.sh +@@ -180,7 +180,7 @@ while :; do + + main_loop=$(($main_loop+1)) + [ $main_loop -gt $RDRETRY ] \ +- && { flock -s 9 ; emergency_shell "Unable to process initqueue"; } 9>/.console_lock ++ && { flock -s 9 ; emergency_shell "Could not boot."; } 9>/.console_lock + done + unset job + unset queuetriggered diff --git a/0012-dracut.sh-mkdir-of-libdirs-at-then-end.patch b/0012-dracut.sh-mkdir-of-libdirs-at-then-end.patch new file mode 100644 index 0000000..e725041 --- /dev/null +++ b/0012-dracut.sh-mkdir-of-libdirs-at-then-end.patch @@ -0,0 +1,30 @@ +From d2a9c4a8e7920cc01107b7cbab953da5c6cab100 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 8 Jun 2012 10:41:59 +0200 +Subject: [PATCH] dracut.sh: mkdir of $libdirs at then end + +--- + dracut.sh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index 78e7ac8..a1b39e3 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -688,13 +688,14 @@ export initdir dracutbasedir dracutmodules drivers \ + [[ $prefix ]] && ln -sfn "${prefix#/}/lib" "$initdir/lib" + + if [[ $prefix ]]; then +- for d in bin etc lib $libdirs sbin tmp usr var; do ++ for d in bin etc lib sbin tmp usr var $libdirs; do ++ strstr "$d" "/" && continue + ln -sfn "${prefix#/}/${d#/}" "$initdir/$d" + done + fi + + if [[ $kernel_only != yes ]]; then +- for d in usr/bin usr/sbin bin etc lib $libdirs sbin tmp usr var var/log var/run var/lock; do ++ for d in usr/bin usr/sbin bin etc lib sbin tmp usr var var/log var/run var/lock $libdirs; do + [[ -e "${initdir}${prefix}/$d" ]] && continue + if [ -L "/$d" ]; then + inst_symlink "/$d" "${prefix}/$d" diff --git a/0013-dm-check-for-presence-of-dmsetup.patch b/0013-dm-check-for-presence-of-dmsetup.patch new file mode 100644 index 0000000..2c8fb0f --- /dev/null +++ b/0013-dm-check-for-presence-of-dmsetup.patch @@ -0,0 +1,37 @@ +From df96787019aadea63f6398a8ca8ba0a1e4d10202 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 8 Jun 2012 12:41:49 +0200 +Subject: [PATCH] dm: check for presence of dmsetup + +--- + modules.d/90dm/dm-shutdown.sh | 7 ++++++- + modules.d/90dm/module-setup.sh | 1 + + 2 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/modules.d/90dm/dm-shutdown.sh b/modules.d/90dm/dm-shutdown.sh +index 80d80d0..bf97637 100755 +--- a/modules.d/90dm/dm-shutdown.sh ++++ b/modules.d/90dm/dm-shutdown.sh +@@ -13,4 +13,9 @@ _do_dm_shutdown() { + fi + return $ret + } +-_do_dm_shutdown $1 ++ ++if command -v dmsetup >/dev/null; then ++ _do_dm_shutdown $1 ++else ++ : ++fi +diff --git a/modules.d/90dm/module-setup.sh b/modules.d/90dm/module-setup.sh +index bac854a..4209537 100755 +--- a/modules.d/90dm/module-setup.sh ++++ b/modules.d/90dm/module-setup.sh +@@ -3,6 +3,7 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + + check() { ++ type -P dmsetup >/dev/null || return 1 + return 255 + } + diff --git a/0014-mdraid-md-shutdown.sh-check-for-presence-of-mdadm.patch b/0014-mdraid-md-shutdown.sh-check-for-presence-of-mdadm.patch new file mode 100644 index 0000000..b1fea4f --- /dev/null +++ b/0014-mdraid-md-shutdown.sh-check-for-presence-of-mdadm.patch @@ -0,0 +1,23 @@ +From b4692ce3889d5e165a9aa51db7732baf2996fd7a Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 8 Jun 2012 12:42:12 +0200 +Subject: [PATCH] mdraid/md-shutdown.sh: check for presence of mdadm + +--- + modules.d/90mdraid/md-shutdown.sh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/modules.d/90mdraid/md-shutdown.sh b/modules.d/90mdraid/md-shutdown.sh +index 1e6c9f6..17eafa5 100755 +--- a/modules.d/90mdraid/md-shutdown.sh ++++ b/modules.d/90mdraid/md-shutdown.sh +@@ -18,4 +18,8 @@ _do_md_shutdown() { + return $ret + } + +-_do_md_shutdown $1 ++if command -v mdadm >/dev/null; then ++ _do_md_shutdown $1 ++else ++ : ++fi diff --git a/0015-network-ifup.sh-default-to-dhcp-for-BOOTIF.patch b/0015-network-ifup.sh-default-to-dhcp-for-BOOTIF.patch new file mode 100644 index 0000000..8faaae6 --- /dev/null +++ b/0015-network-ifup.sh-default-to-dhcp-for-BOOTIF.patch @@ -0,0 +1,27 @@ +From bebb12fd0ec3cbb88006e384a9a277391a2f3a37 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 11 Jun 2012 17:11:49 +0200 +Subject: [PATCH] network/ifup.sh: default to dhcp for BOOTIF + +--- + modules.d/40network/ifup.sh | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index f785968..35ae3c6 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -213,6 +213,13 @@ if [ "$netif" = "$vlanname" ] && [ ! -e /tmp/net.$vlanname.up ]; then + ip link add dev "$vlanname" link "$phydevice" type vlan id "$(get_vid $vlanname; echo $?)" + fi + ++# BOOTIF= defaults to dhcpv4 ++bootif=$(getargs BOOTIF=) ++if [ -n "$bootif" ] ; then ++ do_dhcp -4 ++ exit 0 ++fi ++ + # Specific configuration, spin through the kernel command line + # looking for ip= lines + for p in $(getargs ip=); do diff --git a/dracut.spec b/dracut.spec index 0d72e6a..e1d9bca 100644 --- a/dracut.spec +++ b/dracut.spec @@ -10,7 +10,7 @@ Name: dracut Version: 019 -Release: 2%{?dist} +Release: 16.git20120611%{?dist} Summary: Initramfs generator using udev %if 0%{?fedora} || 0%{?rhel} @@ -24,7 +24,22 @@ URL: https://dracut.wiki.kernel.org/ # Source can be generated by # http://git.kernel.org/?p=boot/dracut/dracut.git;a=snapshot;h=%{version};sf=tgz Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{version}.tar.bz2 -Patch0: dracut-0.19-omapdrm.patch +Patch1: 0001-get-rid-of-libdir-and-usrlibdir.patch +Patch2: 0002-dasd_mod-change-rd.dasd-to-dasd_mod-kernel-parameter.patch +Patch3: 0003-kernel-modules-module-setup.sh-include-omapdrm-in-th.patch +Patch4: 0004-Avoid-annonying-warnings-when-pkg-config-is-not-inst.patch +Patch5: 0005-make-udevdir-systemdutildir-systemdsystemunitdir-glo.patch +Patch6: 0006-modules-are-now-only-handled-with-sys-modules-and-mo.patch +Patch7: 0007-systemd-strip-down-the-installation-of-some-unused-t.patch +Patch8: 0008-network-ifup.sh-do-not-default-to-dhcp-for-interface.patch +Patch9: 0009-systemd-dracut-initqueue.sh-remove-pre-trigger-sourc.patch +Patch10: 0010-mdraid-md-shutdown.sh-wait-until-md-devices-are-clea.patch +Patch11: 0011-s-Unable-to-process-initqueue-Could-not-boot-g.patch +Patch12: 0012-dracut.sh-mkdir-of-libdirs-at-then-end.patch +Patch13: 0013-dm-check-for-presence-of-dmsetup.patch +Patch14: 0014-mdraid-md-shutdown.sh-check-for-presence-of-mdadm.patch +Patch15: 0015-network-ifup.sh-default-to-dhcp-for-BOOTIF.patch + BuildArch: noarch BuildRequires: dash bash git @@ -152,7 +167,6 @@ This package contains tools to assemble the local initrd and host configuration. %prep %setup -q -n %{name}-%{version} -%patch0 -p1 %if %{defined PATCH1} git init @@ -344,6 +358,9 @@ rm -rf $RPM_BUILD_ROOT %dir /var/lib/dracut/overlay %changelog +* Mon Jun 11 2012 Harald Hoyer 019-16.git20120611 +- new upstream version + * Tue Jun 05 2012 Dennis Gilmore 019-2 - include omapdrm with the arm modules