dracut-019-16.git20120611

new upstream version
This commit is contained in:
Harald Hoyer 2012-06-11 17:19:26 +02:00
parent 0b1133bd6b
commit 18c19d34cc
16 changed files with 921 additions and 3 deletions

View File

@ -0,0 +1,138 @@
From d77540c8e4caf557d472786711ef17838a4a24f1 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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:]' '|')

View File

@ -0,0 +1,85 @@
From 4d76a85df17b600553af1f58ced1dc7bea8a0e7c Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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=**_<dasd_adaptor device bus ID>_[,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=**_<zfcp adaptor device bus ID>_,_<WWPN>_,_<FCPLUN>_::
@@ -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

View File

@ -0,0 +1,23 @@
From b6fd45163a18d19434de33de3f3ed324bc560a97 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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

View File

@ -0,0 +1,43 @@
From 2cf4f4fb747803ff31d53507bc047232c4ef99ea Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
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

View File

@ -0,0 +1,127 @@
From d161561290909523818e5ec16271e5f88b6152de Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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 \

View File

@ -0,0 +1,207 @@
From fe1484f3db0c7fe7fe8e6d5cc1e6e4d8f0b17052 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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 </proc/modules|xargs modinfo -F filename '
- _filtercmd+='-k $kernel 2>/dev/null'
- fi
- for _modname in $(eval $_filtercmd); do
- case $_modname in
- *.ko) "$2" "$_modname" && echo "$_modname";;
- *.ko.gz) gzip -dc "$_modname" > $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 </proc/modules \
+ ( cd /sys/module; echo *; ) \
| xargs modinfo -F filename -k $kernel 2>/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
}

View File

@ -0,0 +1,35 @@
From 547bbe4876f2cc8b3eab47dd0ca25b481c54731b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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 \

View File

@ -0,0 +1,35 @@
From ede0532c580fdbace548511b07857fb2e004b299 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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

View File

@ -0,0 +1,22 @@
From 521c57aca554f72c7e51ddf22f9c36bfc202cecd Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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"

View File

@ -0,0 +1,33 @@
From 57038a41fac7db2ae90a6cbc10cf9b737768a115 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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
}

View File

@ -0,0 +1,36 @@
From fbaf1517c352e34ede77613536ce12bd14b7ec2c Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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

View File

@ -0,0 +1,30 @@
From d2a9c4a8e7920cc01107b7cbab953da5c6cab100 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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"

View File

@ -0,0 +1,37 @@
From df96787019aadea63f6398a8ca8ba0a1e4d10202 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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
}

View File

@ -0,0 +1,23 @@
From b4692ce3889d5e165a9aa51db7732baf2996fd7a Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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

View File

@ -0,0 +1,27 @@
From bebb12fd0ec3cbb88006e384a9a277391a2f3a37 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
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

View File

@ -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 <harald@redhat.com> 019-16.git20120611
- new upstream version
* Tue Jun 05 2012 Dennis Gilmore <dennis@ausil.us> 019-2
- include omapdrm with the arm modules