From 2d3fda91ea506fdeb88db19ff1065f4d8739db93 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Jul 06 2012 12:41:00 +0000 Subject: dracut-020-51.git20120706 - cope with systemd-udevd unit renaming - fixed network renaming - removed dash module --- diff --git a/0022-dracut-functions.sh-find_kernel_modules_by_path-fixe.patch b/0022-dracut-functions.sh-find_kernel_modules_by_path-fixe.patch new file mode 100644 index 0000000..ebc58ce --- /dev/null +++ b/0022-dracut-functions.sh-find_kernel_modules_by_path-fixe.patch @@ -0,0 +1,28 @@ +From 194b80f974751b2eb5e6f50075d150b9c8083b77 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 2 Jul 2012 22:51:24 +0200 +Subject: [PATCH] dracut-functions.sh:find_kernel_modules_by_path() fixed + hostonly part + +filter /sys/module/* modules by path +--- + dracut-functions.sh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 2898c30..6de7c72 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -1277,7 +1277,11 @@ find_kernel_modules_by_path () ( + IFS=$_OLDIFS + else + ( cd /sys/module; echo *; ) \ +- | xargs -r modinfo -F filename -k $kernel 2>/dev/null ++ | xargs -r modinfo -F filename -k $kernel 2>/dev/null \ ++ | while read a; do ++ [[ $a = kernel*/$1/* ]] || continue ++ echo $srcmods/$a ++ done + fi + return 0 + ) diff --git a/0023-base-init.sh-error-out-early-if-dev-proc-or-sys-cann.patch b/0023-base-init.sh-error-out-early-if-dev-proc-or-sys-cann.patch new file mode 100644 index 0000000..122e1cc --- /dev/null +++ b/0023-base-init.sh-error-out-early-if-dev-proc-or-sys-cann.patch @@ -0,0 +1,64 @@ +From c204501e3eaf31a69ef69aa567f5d3c88f69c66a Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 13:14:12 +0200 +Subject: [PATCH] base/init.sh: error out early, if /dev, /proc or /sys cannot + be mounted + +--- + modules.d/99base/init.sh | 25 ++++++++++++++++++++----- + 1 file changed, 20 insertions(+), 5 deletions(-) + +diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh +index d395a99..3eb6424 100755 +--- a/modules.d/99base/init.sh ++++ b/modules.d/99base/init.sh +@@ -20,14 +20,22 @@ export PATH + RD_DEBUG="" + . /lib/dracut-lib.sh + +-trap "emergency_shell Signal caught!" 0 +- + # mount some important things + [ ! -d /proc/self ] && \ +- mount -t proc -o nosuid,noexec,nodev proc /proc >/dev/null 2>&1 ++ mount -t proc -o nosuid,noexec,nodev proc /proc >/dev/null ++ ++if [ "$?" != "0" ]; then ++ echo "Cannot mount proc on /proc! Compile the kernel with CONFIG_PROC_FS!" ++ exit 1 ++fi + + [ ! -d /sys/kernel ] && \ +- mount -t sysfs -o nosuid,noexec,nodev sysfs /sys >/dev/null 2>&1 ++ mount -t sysfs -o nosuid,noexec,nodev sysfs /sys >/dev/null ++ ++if [ "$?" != "0" ]; then ++ echo "Cannot mount sysfs on /sys! Compile the kernel with CONFIG_SYSFS!" ++ exit 1 ++fi + + if [ -x /lib/systemd/systemd-timestamp ]; then + RD_TIMESTAMP=$(/lib/systemd/systemd-timestamp) +@@ -39,7 +47,12 @@ fi + setdebug + + if ! ismounted /dev; then +- mount -t devtmpfs -o mode=0755,nosuid,strictatime devtmpfs /dev >/dev/null ++ mount -t devtmpfs -o mode=0755,nosuid,strictatime devtmpfs /dev >/dev/null ++fi ++ ++if ! ismounted /dev; then ++ echo "Cannot mount devtmpfs on /dev! Compile the kernel with CONFIG_DEVTMPFS!" ++ exit 1 + fi + + # prepare the /dev directory +@@ -66,6 +79,8 @@ if ! ismounted /run; then + rm -fr /newrun + fi + ++trap "emergency_shell Signal caught!" 0 ++ + [ -d /run/initramfs ] || mkdir -p -m 0755 /run/initramfs + + UDEVVERSION=$(udevadm --version) diff --git a/0024-add-lsinitrd-and-mkinitrd-man-pages.patch b/0024-add-lsinitrd-and-mkinitrd-man-pages.patch new file mode 100644 index 0000000..e6fe5a3 --- /dev/null +++ b/0024-add-lsinitrd-and-mkinitrd-man-pages.patch @@ -0,0 +1,189 @@ +From 0e14946a2032040899d792cf8eefd5db341074c8 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 14:18:55 +0200 +Subject: [PATCH] add lsinitrd and mkinitrd man pages + +--- + Makefile | 14 ++++++++++--- + dracut.spec | 2 ++ + lsinitrd.1.asc | 43 +++++++++++++++++++++++++++++++++++++ + mkinitrd.8.asc | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 120 insertions(+), 3 deletions(-) + create mode 100644 lsinitrd.1.asc + create mode 100644 mkinitrd.8.asc + +diff --git a/Makefile b/Makefile +index 1d5531d..78cf85d 100644 +--- a/Makefile ++++ b/Makefile +@@ -9,7 +9,12 @@ sysconfdir ?= ${prefix}/etc + bindir ?= ${prefix}/bin + mandir ?= ${prefix}/share/man + +-manpages = dracut.8 dracut.cmdline.7 dracut.conf.5 dracut-catimages.8 ++manpages = dracut.8 \ ++ dracut.cmdline.7 \ ++ dracut.conf.5 \ ++ dracut-catimages.8 \ ++ lsinitrd.1 \ ++ mkinitrd.8 + + .PHONY: install clean archive rpm testimage test all check AUTHORS doc + +@@ -55,7 +60,7 @@ install: doc dracut-version.sh + mkdir -p $(DESTDIR)$(bindir) + mkdir -p $(DESTDIR)$(sysconfdir) + mkdir -p $(DESTDIR)$(pkglibdir)/modules.d +- mkdir -p $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man7 $(DESTDIR)$(mandir)/man8 ++ mkdir -p $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man7 $(DESTDIR)$(mandir)/man8 + install -m 0755 dracut.sh $(DESTDIR)$(bindir)/dracut + install -m 0755 dracut-catimages.sh $(DESTDIR)$(bindir)/dracut-catimages + install -m 0755 mkinitrd-dracut.sh $(DESTDIR)$(bindir)/mkinitrd +@@ -68,8 +73,11 @@ install: doc dracut-version.sh + install -m 0755 dracut-logger.sh $(DESTDIR)$(pkglibdir)/dracut-logger.sh + install -m 0755 dracut-initramfs-restore.sh $(DESTDIR)$(pkglibdir)/dracut-initramfs-restore + cp -arx modules.d $(DESTDIR)$(pkglibdir) ++ install -m 0644 lsinitrd.1 $(DESTDIR)$(mandir)/man1/lsinitrd.1 ++ install -m 0644 mkdinitrd.8 $(DESTDIR)$(mandir)/man8/mkinitrd.8 + install -m 0644 dracut.8 $(DESTDIR)$(mandir)/man8/dracut.8 +- install -m 0644 dracut-catimages.8 $(DESTDIR)$(mandir)/man8/dracut-catimages.8 ++ install -m 0644 dracut-catimages.8 \ ++ $(DESTDIR)$(mandir)/man8/dracut-catimages.8 + install -m 0644 dracut.conf.5 $(DESTDIR)$(mandir)/man5/dracut.conf.5 + install -m 0644 dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.cmdline.7 + ln -s dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.kernel.7 +diff --git a/dracut.spec b/dracut.spec +index 06d8139..b258121 100644 +--- a/dracut.spec ++++ b/dracut.spec +@@ -255,9 +255,11 @@ rm -rf $RPM_BUILD_ROOT + %endif + %dir /etc/dracut.conf.d + %{_mandir}/man8/dracut.8* ++%{_mandir}/man8/mkinitrd.8* + %{_mandir}/man7/dracut.kernel.7* + %{_mandir}/man7/dracut.cmdline.7* + %{_mandir}/man5/dracut.conf.5* ++%{_mandir}/man1/lsinitrd.1* + %{dracutlibdir}/modules.d/00bootchart + %{dracutlibdir}/modules.d/00dash + %{dracutlibdir}/modules.d/04watchdog +diff --git a/lsinitrd.1.asc b/lsinitrd.1.asc +new file mode 100644 +index 0000000..5b0c62e +--- /dev/null ++++ b/lsinitrd.1.asc +@@ -0,0 +1,43 @@ ++LSINITRD(1) ++========= ++:doctype: manpage ++:man source: dracut ++:man manual: dracut ++ ++NAME ++---- ++lsinitrd - tool to show the contents of an initramfs image ++ ++SYNOPSIS ++-------- ++*lsinit* ['OPTION...'] [] ++ ++DESCRIPTION ++----------- ++lsinitrd shows the contents of an initramfs image. if is omitted, then ++lsinitrd uses the default image /boot/initramfs-.img. ++ ++OPTIONS ++------- ++**-h, --help**:: ++ print a help message and exit. ++ ++**-s, --size**:: ++ sort the contents of the initramfs by size. ++ ++AVAILABILITY ++------------ ++The lsinitrd command is part of the dracut package and is available from ++link:$$https://dracut.wiki.kernel.org$$[https://dracut.wiki.kernel.org] ++ ++AUTHORS ++------- ++Harald Hoyer ++ ++Amerigo Wang ++ ++Nikoli ++ ++SEE ALSO ++-------- ++*dracut*(8) +diff --git a/mkinitrd.8.asc b/mkinitrd.8.asc +new file mode 100644 +index 0000000..2792915 +--- /dev/null ++++ b/mkinitrd.8.asc +@@ -0,0 +1,64 @@ ++MKINITRD(8) ++========= ++:doctype: manpage ++:man source: dracut ++:man manual: dracut ++ ++NAME ++---- ++mkinitrd - is a compat wrapper, which calls dracut to generate an initramfs ++ ++SYNOPSIS ++-------- ++*mkinitrd* ['OPTION...'] [] ++ ++DESCRIPTION ++----------- ++mkinitrd creates an initramfs image for the kernel with ++version by calling "dracut". ++ ++If a more fine grained control over the resulting image is needed, ++"dracut" should be called directly. ++ ++OPTIONS ++------- ++**--version**:: ++ print info about the version ++ ++**-v, --verbose**:: ++ increase verbosity level ++ ++**-f, --force**:: ++ overwrite existing initramfs file. ++ ++**--image-version*:: ++ append the kernel version to the target image ++ -. ++ ++**--with=**:: ++ add the kernel module to the initramfs. ++ ++**--preload=**:: ++ preload the kernel module in the initramfs before any other kernel ++ modules are loaded. This can be used to ensure a certain device naming, which ++ should in theory be avoided and the use of symbolic links in /dev is ++ encouraged. ++ ++**--nocompress**:: ++ do not compress the resulting image. ++ ++**--help**:: ++ print a help message and exit. ++ ++AVAILABILITY ++------------ ++The mkinitrd command is part of the dracut package and is available from ++link:$$https://dracut.wiki.kernel.org$$[https://dracut.wiki.kernel.org] ++ ++AUTHORS ++------- ++Harald Hoyer ++ ++SEE ALSO ++-------- ++*dracut*(8) diff --git a/0025-manpages-simplify-AUTHORS.patch b/0025-manpages-simplify-AUTHORS.patch new file mode 100644 index 0000000..4727834 --- /dev/null +++ b/0025-manpages-simplify-AUTHORS.patch @@ -0,0 +1,66 @@ +From 9f355169f454987405fcb79dc3eba6a280981a8c Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 14:20:14 +0200 +Subject: [PATCH] manpages: simplify AUTHORS + +--- + dracut.8.asc | 24 ++++++++---------------- + dracut.cmdline.7.asc | 3 +-- + 2 files changed, 9 insertions(+), 18 deletions(-) + +diff --git a/dracut.8.asc b/dracut.8.asc +index 196e2e8..3c0efb9 100644 +--- a/dracut.8.asc ++++ b/dracut.8.asc +@@ -364,29 +364,21 @@ link:$$https://dracut.wiki.kernel.org$$[https://dracut.wiki.kernel.org] + + AUTHORS + ------- +-*Harald Hoyer*:: +- Project Leader and Developer ++Harald Hoyer + +-*Victor Lowther*:: +- Developer ++Victor Lowther + +-*Philippe Seewer*:: +- Developer ++Philippe Seewer + +-*Warren Togami*:: +- Developer ++Warren Togami + +-*Amadeusz Żołnowski*:: +- Developer ++Amadeusz Żołnowski + +-*Jeremy Katz*:: +- Developer ++Jeremy Katz + +-*David Dillow*:: +- Developer ++David Dillow + +-*Will Woods*:: +- Developer ++Will Woods + + SEE ALSO + -------- +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 3bfb53a..997c513 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -650,8 +650,7 @@ _/etc/cmdline.d/*.conf_:: + + AUTHOR + ------ +-*Harald Hoyer*:: +- Project Leader and Developer ++Harald Hoyer + + SEE ALSO + -------- diff --git a/0026-dracut.sh-use-getopt-to-parse-arguments.patch b/0026-dracut.sh-use-getopt-to-parse-arguments.patch new file mode 100644 index 0000000..9c2689f --- /dev/null +++ b/0026-dracut.sh-use-getopt-to-parse-arguments.patch @@ -0,0 +1,365 @@ +From ffa71b4afa3e8865ab4f068f908ff8e05744a6ee Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 14:20:51 +0200 +Subject: [PATCH] dracut.sh: use getopt to parse arguments + +now we can put options and arguments anywhere we like. + +e.g. +$ dracut test.img --force +--- + dracut.sh | 233 ++++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 169 insertions(+), 64 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index 4a6d5c7..c1be619 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -24,7 +24,7 @@ + # + + # store for logging +-dracut_args="$@" ++dracut_args=( "$@" ) + + set -o pipefail + +@@ -36,7 +36,32 @@ usage() { + + # 80x25 linebreak here ^ + cat << EOF +-Usage: $0 [OPTION]... ++Usage: $0 [OPTION]... [ []] ++ ++Version: $DRACUT_VERSION ++ ++Creates initial ramdisk images for preloading modules ++ ++ -h, --help Display all options ++ ++If a [LIST] has multiple arguments, then you have to put these in quotes. ++ ++For example: ++ ++ # dracut --add-drivers "module1 module2" ... ++ ++EOF ++} ++ ++long_usage() { ++ [[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut ++ if [[ -f $dracutbasedir/dracut-version.sh ]]; then ++ . $dracutbasedir/dracut-version.sh ++ fi ++ ++# 80x25 linebreak here ^ ++ cat << EOF ++Usage: $0 [OPTION]... [ []] + + Version: $DRACUT_VERSION + +@@ -139,8 +164,11 @@ Creates initial ramdisk images for preloading modules + --sshkey [SSHKEY] Add ssh key to initramfs (use with ssh-client module) + + If [LIST] has multiple arguments, then you have to put these in quotes. ++ + For example: +-# dracut --add-drivers "module1 module2" ... ++ ++ # dracut --add-drivers "module1 module2" ... ++ + EOF + } + +@@ -151,9 +179,10 @@ EOF + # example: + # push stack 1 2 "3 4" + push() { ++ local _i + local __stack=$1; shift +- for i in "$@"; do +- eval ${__stack}'[${#'${__stack}'[@]}]="$i"' ++ for _i in "$@"; do ++ eval ${__stack}'[${#'${__stack}'[@]}]="$_i"' + done + } + +@@ -169,16 +198,16 @@ push() { + pop() { + local __stack=$1; shift + local __resultvar=$1 +- local myresult; ++ local _value; + # check for empty stack + eval '[[ ${#'${__stack}'[@]} -eq 0 ]] && return 1' + +- eval myresult='${'${__stack}'[${#'${__stack}'[@]}-1]}' ++ eval _value='${'${__stack}'[${#'${__stack}'[@]}-1]}' + + if [[ "$__resultvar" ]]; then +- eval $__resultvar="'$myresult'" ++ eval $__resultvar="'$_value'" + else +- echo "$myresult" ++ echo "$_value" + fi + eval unset ${__stack}'[${#'${__stack}'[@]}-1]' + return 0 +@@ -202,52 +231,105 @@ read_arg() { + fi + } + +-# Little helper function for reading args from the commandline to a stack. +-# it automatically handles -a b and -a=b variants, and returns 1 if +-# we need to shift $3. +-push_arg() { +- # $1 = arg name +- # $2 = arg value +- # $3 = arg parameter +- local rematch='^[^=]*=(.*)$' +- if [[ $2 =~ $rematch ]]; then +- push "$1" "${BASH_REMATCH[1]}" +- else +- push "$1" "$3" +- # There is no way to shift our callers args, so +- # return 1 to indicate they should do it instead. +- return 1 +- fi +-} +- + verbosity_mod_l=0 + unset kernel + unset outfile + +-while (($# > 0)); do +- case ${1%%=*} in +- -a|--add) push_arg add_dracutmodules_l "$@" || shift;; +- --force-add) push_arg force_add_dracutmodules_l "$@" || shift;; +- --add-drivers) push_arg add_drivers_l "$@" || shift;; +- --omit-drivers) push_arg omit_drivers_l "$@" || shift;; +- -m|--modules) push_arg dracutmodules_l "$@" || shift;; +- -o|--omit) push_arg omit_dracutmodules_l "$@" || shift;; +- -d|--drivers) push_arg drivers_l "$@" || shift;; +- --filesystems) push_arg filesystems_l "$@" || shift;; +- -I|--install) push_arg install_items_l "$@" || shift;; +- --fwdir) push_arg fw_dir_l "$@" || shift;; +- --libdirs) push_arg libdirs_l "$@" || shift;; +- --fscks) push_arg fscks_l "$@" || shift;; +- --add-fstab) push_arg add_fstab_l "$@" || shift;; +- --mount) push_arg fstab_lines "$@" || shift;; ++# Workaround -i, --include taking 2 arguments ++set -- "${@/--include/++include}" ++ ++# This prevents any long argument ending with "-i" ++# -i, like --opt-i but I think we can just prevent that ++set -- "${@/%-i/++include}" ++ ++TEMP=$(unset POSIXLY_CORRECT; getopt \ ++ -o "a:m:o:d:I:k:c:L:fvqlHhM" \ ++ --long add: \ ++ --long force-add: \ ++ --long add-drivers: \ ++ --long omit-drivers: \ ++ --long modules: \ ++ --long omit: \ ++ --long drivers: \ ++ --long filesystems: \ ++ --long install: \ ++ --long fwdir: \ ++ --long libdirs: \ ++ --long fscks: \ ++ --long add-fstab: \ ++ --long mount: \ ++ --long nofscks: \ ++ --long kmoddir: \ ++ --long conf: \ ++ --long confdir: \ ++ --long tmpdir: \ ++ --long stdlog: \ ++ --long compress: \ ++ --long prefix: \ ++ --long force \ ++ --long kernel-only \ ++ --long no-kernel \ ++ --long strip \ ++ --long nostrip \ ++ --long hardlink \ ++ --long nohardlink \ ++ --long noprefix \ ++ --long mdadmconf \ ++ --long nomdadmconf \ ++ --long lvmconf \ ++ --long nolvmconf \ ++ --long debug \ ++ --long profile \ ++ --long sshkey: \ ++ --long verbose \ ++ --long quiet \ ++ --long local \ ++ --long hostonly \ ++ --long no-hostonly \ ++ --long fstab \ ++ --long help \ ++ --long bzip2 \ ++ --long lzma \ ++ --long xz \ ++ --long no-compress \ ++ --long gzip \ ++ --long list-modules \ ++ --long show-modules \ ++ --long keep \ ++ --long printsize \ ++ -- "$@") ++ ++if (( $? != 0 )); then ++ usage ++ exit 1 ++fi ++ ++eval set -- "$TEMP" ++ ++while :; do ++ case $1 in ++ -a|--add) push add_dracutmodules_l "$2"; shift;; ++ --force-add) push force_add_dracutmodules_l "$2"; shift;; ++ --add-drivers) push add_drivers_l "$2"; shift;; ++ --omit-drivers) push omit_drivers_l "$2"; shift;; ++ -m|--modules) push dracutmodules_l "$2"; shift;; ++ -o|--omit) push omit_dracutmodules_l "$2"; shift;; ++ -d|--drivers) push drivers_l "$2"; shift;; ++ --filesystems) push filesystems_l "$2"; shift;; ++ -I|--install) push install_items_l "$2"; shift;; ++ --fwdir) push fw_dir_l "$2"; shift;; ++ --libdirs) push libdirs_l "$2"; shift;; ++ --fscks) push fscks_l "$2"; shift;; ++ --add-fstab) push add_fstab_l "$2"; shift;; ++ --mount) push fstab_lines "$2"; shift;; + --nofscks) nofscks_l="yes";; +- -k|--kmoddir) read_arg drivers_dir_l "$@" || shift;; +- -c|--conf) read_arg conffile "$@" || shift;; +- --confdir) read_arg confdir "$@" || shift;; +- --tmpdir) read_arg tmpdir_l "$@" || shift;; +- -L|--stdlog) read_arg stdloglvl_l "$@" || shift;; +- --compress) read_arg compress_l "$@" || shift;; +- --prefix) read_arg prefix_l "$@" || shift;; ++ -k|--kmoddir) drivers_dir_l="$2"; shift;; ++ -c|--conf) conffile="$2"; shift;; ++ --confdir) confdir="$2"; shift;; ++ --tmpdir) tmpdir_l="$2"; shift;; ++ -L|--stdlog) stdloglvl_l="$2"; shift;; ++ --compress) compress_l="$2"; shift;; ++ --prefix) prefix_l="$2"; shift;; + -f|--force) force=yes;; + --kernel-only) kernel_only="yes"; no_kernel="no";; + --no-kernel) kernel_only="no"; no_kernel="yes";; +@@ -262,7 +344,7 @@ while (($# > 0)); do + --nolvmconf) lvmconf_l="no";; + --debug) debug="yes";; + --profile) profile="yes";; +- --sshkey) read_arg sshkey "$@" || shift;; ++ --sshkey) sshkey="$2"; shift;; + -v|--verbose) ((verbosity_mod_l++));; + -q|--quiet) ((verbosity_mod_l--));; + -l|--local) +@@ -273,48 +355,67 @@ while (($# > 0)); do + -H|--hostonly) hostonly_l="yes" ;; + --no-hostonly) hostonly_l="no" ;; + --fstab) use_fstab_l="yes" ;; +- -h|--help) usage; exit 1 ;; ++ -h|--help) long_usage; exit 1 ;; + -i|--include) push include_src "$2" +- push include_target "$3" +- shift 2;; ++ shift;; + --bzip2) compress_l="bzip2";; + --lzma) compress_l="lzma";; + --xz) compress_l="xz";; + --no-compress) _no_compress_l="cat";; + --gzip) compress_l="gzip";; +- --list-modules) +- do_list="yes"; +- ;; ++ --list-modules) do_list="yes";; + -M|--show-modules) + show_modules_l="yes" + ;; + --keep) keep="yes";; + --printsize) printsize="yes";; +- -*) printf "\nUnknown option: %s\n\n" "$1" >&2; usage; exit 1;; ++ ++ --) shift; break;; ++ ++ *) # should not even reach this point ++ printf "\n!Unknown option: '%s'\n\n" "$1" >&2; usage; exit 1;; ++ esac ++ shift ++done ++ ++# getopt cannot handle multiple arguments, so just handle "-I,--include" ++# the old fashioned way ++ ++while (($# > 0)); do ++ case ${1%%=*} in ++ ++include) push include_src "$2" ++ push include_target "$3" ++ shift 2;; + *) + if ! [[ ${outfile+x} ]]; then + outfile=$1 + elif ! [[ ${kernel+x} ]]; then + kernel=$1 + else +- echo "Unknown argument: $1" ++ printf "\nUnknown arguments: %s\n\n" "$*" >&2 + usage; exit 1; + fi + ;; + esac + shift + done ++ + if ! [[ $kernel ]]; then + kernel=$(uname -r) + fi +-[[ $outfile ]] || outfile="/boot/initramfs-$kernel.img" ++ ++if ! [[ $outfile ]]; then ++ outfile="/boot/initramfs-$kernel.img" ++fi + + for i in /usr/sbin /sbin /usr/bin /bin; do + rl=$i + if [ -L "$i" ]; then + rl=$(readlink -f $i) + fi +- NPATH+=":$rl" ++ if [[ "$NPATH" != "*:$rl*" ]] ; then ++ NPATH+=":$rl" ++ fi + done + export PATH="${NPATH#:}" + unset NPATH +@@ -536,8 +637,12 @@ done + omit_drivers="${omit_drivers_corrected%|}" + unset omit_drivers_corrected + +- +-ddebug "Executing $0 $dracut_args" ++# prepare args for logging ++for ((i=0; i < ${#dracut_args[@]}; i++)); do ++ strstr "${dracut_args[$i]}" " " && \ ++ dracut_args[$i]="\"${dracut_args[$i]}\"" ++done ++ddebug "Executing: $0 ${dracut_args[@]}" + + [[ $do_list = yes ]] && { + for mod in $dracutbasedir/modules.d/*; do +@@ -573,7 +678,7 @@ if [[ ! -d "$outdir" ]]; then + dfatal "Can't write $outfile: Directory $outdir does not exist." + exit 1 + elif [[ ! -w "$outdir" ]]; then +- dfatal "No permission to write $outdir." ++ dfatal "No permission to write to $outdir." + exit 1 + elif [[ -f "$outfile" && ! -w "$outfile" ]]; then + dfatal "No permission to write $outfile." diff --git a/0027-usrmount-mount-usr.sh-check-the-right-path-with-ismo.patch b/0027-usrmount-mount-usr.sh-check-the-right-path-with-ismo.patch new file mode 100644 index 0000000..ac49480 --- /dev/null +++ b/0027-usrmount-mount-usr.sh-check-the-right-path-with-ismo.patch @@ -0,0 +1,22 @@ +From f0e10d9351be491f5ff703b6ba4ed230a5673609 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 18:20:46 +0200 +Subject: [PATCH] usrmount/mount-usr.sh: check the right path with ismounted + +--- + modules.d/98usrmount/mount-usr.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh +index 3173241..c277d74 100755 +--- a/modules.d/98usrmount/mount-usr.sh ++++ b/modules.d/98usrmount/mount-usr.sh +@@ -84,7 +84,7 @@ mount_usr() + info "Mounting /usr" + mount "$NEWROOT/usr" 2>&1 | vinfo + fi +- if ! ismounted /usr; then ++ if ! ismounted "$NEWROOT/usr"; then + warn "Mounting /usr to $NEWROOT/usr failed" + warn "*** Dropping you to a shell; the system will continue" + warn "*** when you leave the shell." diff --git a/0028-TEST-03-USR-MOUNT-change-test-to-use-a-seperate-disk.patch b/0028-TEST-03-USR-MOUNT-change-test-to-use-a-seperate-disk.patch new file mode 100644 index 0000000..d6a4c86 --- /dev/null +++ b/0028-TEST-03-USR-MOUNT-change-test-to-use-a-seperate-disk.patch @@ -0,0 +1,105 @@ +From a128f03b305aebdce6a99a6b027c17ed58a1648e Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 18:21:54 +0200 +Subject: [PATCH] TEST-03-USR-MOUNT: change test to use a seperate disk + +--- + test/TEST-03-USR-MOUNT/create-root.sh | 14 ++++++++++++-- + test/TEST-03-USR-MOUNT/fstab | 2 +- + test/TEST-03-USR-MOUNT/test-init.sh | 2 +- + test/TEST-03-USR-MOUNT/test.sh | 8 ++++++-- + 4 files changed, 20 insertions(+), 6 deletions(-) + +diff --git a/test/TEST-03-USR-MOUNT/create-root.sh b/test/TEST-03-USR-MOUNT/create-root.sh +index 6662bca..9a3e561 100755 +--- a/test/TEST-03-USR-MOUNT/create-root.sh ++++ b/test/TEST-03-USR-MOUNT/create-root.sh +@@ -12,13 +12,23 @@ sfdisk -C 5120 -H 2 -S 32 -L /dev/sda </dev/sdb ++ echo "dracut-root-block-success" >/dev/sdc + fi + export TERM=linux + export PS1='initramfs-test:\w\$ ' +diff --git a/test/TEST-03-USR-MOUNT/test.sh b/test/TEST-03-USR-MOUNT/test.sh +index 34a120f..d966c3c 100755 +--- a/test/TEST-03-USR-MOUNT/test.sh ++++ b/test/TEST-03-USR-MOUNT/test.sh +@@ -16,7 +16,8 @@ client_run() { + dd if=/dev/zero of=$TESTDIR/result bs=1M count=1 + $testdir/run-qemu \ + -hda $TESTDIR/root.btrfs \ +- -hdb $TESTDIR/result \ ++ -hdb $TESTDIR/usr.btrfs \ ++ -hdc $TESTDIR/result \ + -m 256M -nographic \ + -net none -kernel /boot/vmlinuz-$KVERSION \ + -watchdog ib700 -watchdog-action poweroff \ +@@ -37,7 +38,7 @@ client_run() { + } + + test_run() { +- client_run "no option specified, should fail" && return 1 ++ client_run "no option specified" || return 1 + client_run "readonly root" "ro" || return 1 + client_run "writeable root" "rw" || return 1 + return 0 +@@ -45,8 +46,10 @@ test_run() { + + test_setup() { + rm -f $TESTDIR/root.btrfs ++ rm -f $TESTDIR/usr.btrfs + # Create the blank file to use as a root filesystem + dd if=/dev/null of=$TESTDIR/root.btrfs bs=1M seek=160 ++ dd if=/dev/null of=$TESTDIR/usr.btrfs bs=1M seek=160 + + kernel=$KVERSION + # Create what will eventually be our root filesystem onto an overlay +@@ -100,6 +103,7 @@ test_setup() { + + $testdir/run-qemu \ + -hda $TESTDIR/root.btrfs \ ++ -hdb $TESTDIR/usr.btrfs \ + -m 256M -nographic -net none \ + -kernel "/boot/vmlinuz-$kernel" \ + -append "root=/dev/dracut/root rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \ diff --git a/0029-TEST-30-ISCSI-put-back-in-hard-off.sh-for-tests.patch b/0029-TEST-30-ISCSI-put-back-in-hard-off.sh-for-tests.patch new file mode 100644 index 0000000..f708c77 --- /dev/null +++ b/0029-TEST-30-ISCSI-put-back-in-hard-off.sh-for-tests.patch @@ -0,0 +1,22 @@ +From 38bbec3731b8e7b6b130debb4eed43bbdab75dea Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 18:22:29 +0200 +Subject: [PATCH] TEST-30-ISCSI: put back in hard-off.sh for tests + +--- + test/TEST-30-ISCSI/test.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/TEST-30-ISCSI/test.sh b/test/TEST-30-ISCSI/test.sh +index cf4b6ec..5ebd9ac 100755 +--- a/test/TEST-30-ISCSI/test.sh ++++ b/test/TEST-30-ISCSI/test.sh +@@ -155,7 +155,7 @@ test_setup() { + initdir=$TESTDIR/overlay + . $basedir/dracut-functions.sh + dracut_install poweroff shutdown +-# inst_hook emergency 000 ./hard-off.sh ++ inst_hook emergency 000 ./hard-off.sh + inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules + ) + sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \ diff --git a/0030-lsinitrd.sh-print-usage-for-h.patch b/0030-lsinitrd.sh-print-usage-for-h.patch new file mode 100644 index 0000000..220e0a9 --- /dev/null +++ b/0030-lsinitrd.sh-print-usage-for-h.patch @@ -0,0 +1,35 @@ +From f7bccf3724834ca42b2521f0367291219314a09a Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 18:23:27 +0200 +Subject: [PATCH] lsinitrd.sh: print usage for -?, -h + +--- + lsinitrd.sh | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/lsinitrd.sh b/lsinitrd.sh +index e6767dc..f27f755 100755 +--- a/lsinitrd.sh ++++ b/lsinitrd.sh +@@ -19,13 +19,19 @@ + # along with this program. If not, see . + # + +-[[ $# -le 2 ]] || { echo "Usage: $(basename $0) [-s] [ []]" ; exit 1 ; } ++usage() ++{ ++ echo "Usage: $(basename $0) [-s] [ []]" ++} ++ ++[[ $# -le 2 ]] || { usage ; exit 1 ; } + + sorted=0 + while getopts "s" opt; do + case $opt in + s) sorted=1;; +- \?) exit 1;; ++ h) usage; exit 0;; ++ \?) usage; exit 1;; + esac + done + shift $((OPTIND-1)) diff --git a/0031-lsinitrd.sh-get-rid-of-awk-call.patch b/0031-lsinitrd.sh-get-rid-of-awk-call.patch new file mode 100644 index 0000000..08037e2 --- /dev/null +++ b/0031-lsinitrd.sh-get-rid-of-awk-call.patch @@ -0,0 +1,22 @@ +From d8caa679e06e779a04e2353cfeab80de47477d2a Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 18:23:59 +0200 +Subject: [PATCH] lsinitrd.sh: get rid of awk call + +--- + lsinitrd.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lsinitrd.sh b/lsinitrd.sh +index f27f755..fc4b8b0 100755 +--- a/lsinitrd.sh ++++ b/lsinitrd.sh +@@ -63,7 +63,7 @@ if [[ $# -eq 2 ]]; then + exit $? + fi + +-echo "$image: $(du -h $image | awk '{print $1}')" ++echo "$image: $(du -h $image | while read a b; do echo $a;done)" + echo "========================================================================" + $CAT "$image" | cpio --extract --verbose --quiet --to-stdout 'lib/dracut/dracut-*' 2>/dev/null + echo "========================================================================" diff --git a/0032-lsinitrd.sh-fixed-version-file-extraction.patch b/0032-lsinitrd.sh-fixed-version-file-extraction.patch new file mode 100644 index 0000000..34d7fee --- /dev/null +++ b/0032-lsinitrd.sh-fixed-version-file-extraction.patch @@ -0,0 +1,22 @@ +From a85ee030ab6b3b29833b10be6b83c89e8fc0c455 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 3 Jul 2012 18:24:21 +0200 +Subject: [PATCH] lsinitrd.sh: fixed version file extraction + +--- + lsinitrd.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lsinitrd.sh b/lsinitrd.sh +index fc4b8b0..a844932 100755 +--- a/lsinitrd.sh ++++ b/lsinitrd.sh +@@ -65,7 +65,7 @@ fi + + echo "$image: $(du -h $image | while read a b; do echo $a;done)" + echo "========================================================================" +-$CAT "$image" | cpio --extract --verbose --quiet --to-stdout 'lib/dracut/dracut-*' 2>/dev/null ++$CAT "$image" | cpio --extract --verbose --quiet --to-stdout '*lib/dracut/dracut-*' 2>/dev/null + echo "========================================================================" + if [ "$sorted" -eq 1 ]; then + $CAT "$image" | cpio --extract --verbose --quiet --list | sort -n -k5 diff --git a/0033-Makefile-mkinitrd-man-page-install-typo.patch b/0033-Makefile-mkinitrd-man-page-install-typo.patch new file mode 100644 index 0000000..6d4f9ef --- /dev/null +++ b/0033-Makefile-mkinitrd-man-page-install-typo.patch @@ -0,0 +1,22 @@ +From eaf4cb6bbb6367c967d1af3a00af5be3eba98a56 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Jul 2012 06:57:11 +0200 +Subject: [PATCH] Makefile: mkinitrd man page install typo + +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 78cf85d..07741d0 100644 +--- a/Makefile ++++ b/Makefile +@@ -74,7 +74,7 @@ install: doc dracut-version.sh + install -m 0755 dracut-initramfs-restore.sh $(DESTDIR)$(pkglibdir)/dracut-initramfs-restore + cp -arx modules.d $(DESTDIR)$(pkglibdir) + install -m 0644 lsinitrd.1 $(DESTDIR)$(mandir)/man1/lsinitrd.1 +- install -m 0644 mkdinitrd.8 $(DESTDIR)$(mandir)/man8/mkinitrd.8 ++ install -m 0644 mkinitrd.8 $(DESTDIR)$(mandir)/man8/mkinitrd.8 + install -m 0644 dracut.8 $(DESTDIR)$(mandir)/man8/dracut.8 + install -m 0644 dracut-catimages.8 \ + $(DESTDIR)$(mandir)/man8/dracut-catimages.8 diff --git a/0034-fips-change-module-list.patch b/0034-fips-change-module-list.patch new file mode 100644 index 0000000..e4d787c --- /dev/null +++ b/0034-fips-change-module-list.patch @@ -0,0 +1,22 @@ +From 0251fcd4003501f5a6a50fa31d640f4bf307c3de Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Jul 2012 10:11:27 +0200 +Subject: [PATCH] fips: change module list + +--- + modules.d/01fips/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index 3a35c9b..dbf51e3 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -13,7 +13,7 @@ depends() { + installkernel() { + local _fipsmodules _mod + _fipsmodules="aead aes_generic xts aes-x86_64 ansi_cprng cbc ccm chainiv ctr" +- _fipsmodules+=" des deflate ecb eseqiv hmac seqiv sha256 sha512" ++ _fipsmodules+=" des deflate ecb eseqiv hmac seqiv sha256_generic sha512" + _fipsmodules+=" cryptomgr crypto_null tcrypt dm-mod dm-crypt" + + mkdir -m 0755 -p "${initdir}/etc/modprobe.d" diff --git a/0035-i18n-module-setup.sh-s-error-info-if-no-keymap-is-co.patch b/0035-i18n-module-setup.sh-s-error-info-if-no-keymap-is-co.patch new file mode 100644 index 0000000..dd7f98e --- /dev/null +++ b/0035-i18n-module-setup.sh-s-error-info-if-no-keymap-is-co.patch @@ -0,0 +1,42 @@ +From 394ffc1d979d47d6ec4c0419ea13e98e1b781bd5 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Jul 2012 10:28:56 +0200 +Subject: [PATCH] i18n/module-setup.sh: s/error/info if no keymap is + configured + +https://bugzilla.redhat.com/show_bug.cgi?id=836418 +--- + modules.d/10i18n/module-setup.sh | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh +index a7ddc82..a1cf1c8 100755 +--- a/modules.d/10i18n/module-setup.sh ++++ b/modules.d/10i18n/module-setup.sh +@@ -74,9 +74,11 @@ install() { + for map in ${item[1]//,/ } + do + map=(${map//-/ }) +- value=$(grep "^${map[0]}=" "${item[0]}") +- value=${value#*=} +- echo "${map[1]:-${map[0]}}=${value}" ++ if [[ -f "${item[0]}" ]]; then ++ value=$(grep "^${map[0]}=" "${item[0]}") ++ value=${value#*=} ++ echo "${map[1]:-${map[0]}}=${value}" ++ fi + done + done + } +@@ -155,9 +157,10 @@ install() { + EXT_KEYMAPS+=\ ${UNIKEYMAP}\ ${GRP_TOGGLE} + + [[ ${KEYMAP} ]] || { +- derror 'No KEYMAP.' ++ dinfo 'No KEYMAP configured.' + return 1 + } ++ + findkeymap ${KEYMAP} + + for map in ${EXT_KEYMAPS} diff --git a/0036-fips-add-instmods-silent-check-mode-c-s.patch b/0036-fips-add-instmods-silent-check-mode-c-s.patch new file mode 100644 index 0000000..3fd83d1 --- /dev/null +++ b/0036-fips-add-instmods-silent-check-mode-c-s.patch @@ -0,0 +1,85 @@ +From 338b43cd6a97cf767af2953ce5c69240d4c32290 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Jul 2012 10:42:22 +0200 +Subject: [PATCH] fips: add instmods silent check mode "-c -s" + +--- + dracut-functions.sh | 18 ++++++++++++------ + modules.d/01fips/module-setup.sh | 4 ++-- + 2 files changed, 14 insertions(+), 8 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 6de7c72..d91e2a4 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -1290,8 +1290,8 @@ find_kernel_modules () { + find_kernel_modules_by_path drivers + } + +-# instmods [-c] [ ... ] +-# instmods [-c] ++# instmods [-c [-s]] [ ... ] ++# instmods [-c [-s]] + # install kernel modules along with all their dependencies. + # can be e.g. "=block" or "=drivers/usb/storage" + instmods() { +@@ -1299,11 +1299,17 @@ instmods() { + # called [sub]functions inherit _fderr + local _fderr=9 + local _check=no ++ local _silent=no + if [[ $1 = '-c' ]]; then + _check=yes + shift + fi + ++ if [[ $1 = '-s' ]]; then ++ _silent=yes ++ shift ++ fi ++ + function inst1mod() { + local _ret=0 _mod="$1" + case $_mod in +@@ -1362,8 +1368,8 @@ instmods() { + if (($# == 0)); then # filenames from stdin + while read _mod; do + inst1mod "${_mod%.ko*}" || { +- if [ "$_check" = "yes" ]; then +- dfatal "Failed to install $_mod" ++ if [[ "$_check" == "yes" ]]; then ++ [[ "$_silent" == "no" ]] && dfatal "Failed to install $_mod" + return 1 + fi + } +@@ -1371,8 +1377,8 @@ instmods() { + fi + while (($# > 0)); do # filenames as arguments + inst1mod ${1%.ko*} || { +- if [ "$_check" = "yes" ]; then +- dfatal "Failed to install $1" ++ if [[ "$_check" == "yes" ]]; then ++ [[ "$_silent" == "no" ]] && dfatal "Failed to install $1" + return 1 + fi + } +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index dbf51e3..2d238fb 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -13,13 +13,13 @@ depends() { + installkernel() { + local _fipsmodules _mod + _fipsmodules="aead aes_generic xts aes-x86_64 ansi_cprng cbc ccm chainiv ctr" +- _fipsmodules+=" des deflate ecb eseqiv hmac seqiv sha256_generic sha512" ++ _fipsmodules+=" des deflate ecb eseqiv hmac seqiv sha256 sha256_generic sha512 sha512_generic" + _fipsmodules+=" cryptomgr crypto_null tcrypt dm-mod dm-crypt" + + mkdir -m 0755 -p "${initdir}/etc/modprobe.d" + + for _mod in $_fipsmodules; do +- if hostonly='' instmods $_mod; then ++ if hostonly='' instmods -c -s $_mod; then + echo $_mod >> "${initdir}/etc/fipsmodules" + echo "blacklist $_mod" >> "${initdir}/etc/modprobe.d/fips.conf" + fi diff --git a/0037-install-user-group-adm-for-journal.patch b/0037-install-user-group-adm-for-journal.patch new file mode 100644 index 0000000..b4bb47b --- /dev/null +++ b/0037-install-user-group-adm-for-journal.patch @@ -0,0 +1,25 @@ +From d04f16f60047b3d4c52fb4799aa34462f7fe62b7 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Jul 2012 14:30:45 +0200 +Subject: [PATCH] install user/group adm for journal + +--- + modules.d/98systemd/module-setup.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh +index d712724..d20d18d 100755 +--- a/modules.d/98systemd/module-setup.sh ++++ b/modules.d/98systemd/module-setup.sh +@@ -101,6 +101,11 @@ install() { + fi + fi + ++ # install adm user/group for journald ++ dracut_install nologin ++ egrep '^adm:' "$initdir/etc/passwd" 2>/dev/null >> "$initdir/etc/passwd" ++ egrep '^adm:' /etc/group >> "$initdir/etc/group" ++ + ln -fs $systemdutildir/systemd "$initdir/init" + + rm -f "${initdir}${systemdsystemunitdir}/emergency.service" diff --git a/0038-network-factor-out-parse_ifname_opts-for-ifname-genr.patch b/0038-network-factor-out-parse_ifname_opts-for-ifname-genr.patch new file mode 100644 index 0000000..fd3b63b --- /dev/null +++ b/0038-network-factor-out-parse_ifname_opts-for-ifname-genr.patch @@ -0,0 +1,75 @@ +From e7dc1e42cdf519c20c9f104153ef778462fcdbd9 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 5 Jul 2012 12:54:13 +0200 +Subject: [PATCH] network: factor out parse_ifname_opts() for ifname-genrules + +--- + modules.d/40network/ifname-genrules.sh | 2 ++ + modules.d/40network/net-lib.sh | 16 ++++++++++++++++ + modules.d/40network/parse-ifname.sh | 16 +--------------- + 3 files changed, 19 insertions(+), 15 deletions(-) + +diff --git a/modules.d/40network/ifname-genrules.sh b/modules.d/40network/ifname-genrules.sh +index e188c88..b0b429c 100755 +--- a/modules.d/40network/ifname-genrules.sh ++++ b/modules.d/40network/ifname-genrules.sh +@@ -7,6 +7,8 @@ if ! getarg ifname= >/dev/null ; then + return + fi + ++command -v parse_ifname_opts >/dev/null || . /lib/net-lib.sh ++ + { + for p in $(getargs ifname=); do + parse_ifname_opts $p +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index 9132e4d..9a1e004 100644 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -289,3 +289,19 @@ ip_to_var() { + esac + fi + } ++ ++parse_ifname_opts() { ++ local IFS=: ++ set $1 ++ ++ case $# in ++ 7) ++ ifname_if=$1 ++ # udev requires MAC addresses to be lower case ++ ifname_mac=$(echo $2:$3:$4:$5:$6:$7 | sed 'y/ABCDEF/abcdef/') ++ ;; ++ *) ++ die "Invalid arguments for ifname=" ++ ;; ++ esac ++} +diff --git a/modules.d/40network/parse-ifname.sh b/modules.d/40network/parse-ifname.sh +index ce73a72..d5156b3 100755 +--- a/modules.d/40network/parse-ifname.sh ++++ b/modules.d/40network/parse-ifname.sh +@@ -18,21 +18,7 @@ if ! getarg ifname= >/dev/null ; then + return + fi + +-parse_ifname_opts() { +- local IFS=: +- set $1 +- +- case $# in +- 7) +- ifname_if=$1 +- # udev requires MAC addresses to be lower case +- ifname_mac=$(echo $2:$3:$4:$5:$6:$7 | sed 'y/ABCDEF/abcdef/') +- ;; +- *) +- die "Invalid arguments for ifname=" +- ;; +- esac +-} ++command -v parse_ifname_opts >/dev/null || . /lib/net-lib.sh + + # Check ifname= lines + for p in $(getargs ifname=); do diff --git a/0039-systemd-exit-with-sane-state.patch b/0039-systemd-exit-with-sane-state.patch new file mode 100644 index 0000000..cb1efd8 --- /dev/null +++ b/0039-systemd-exit-with-sane-state.patch @@ -0,0 +1,123 @@ +From f1e9f613d9eea3105e906c114266d283ac898d44 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 12:28:17 +0200 +Subject: [PATCH] systemd: exit with sane state + +--- + modules.d/98systemd/dracut-cmdline.sh | 6 ++++-- + modules.d/98systemd/dracut-initqueue.sh | 6 ++++-- + modules.d/98systemd/dracut-pre-pivot.sh | 6 ++++-- + modules.d/98systemd/dracut-pre-trigger.sh | 6 ++++-- + modules.d/98systemd/dracut-pre-udev.sh | 6 ++++-- + 5 files changed, 20 insertions(+), 10 deletions(-) + +diff --git a/modules.d/98systemd/dracut-cmdline.sh b/modules.d/98systemd/dracut-cmdline.sh +index e1a75ea..6a44815 100755 +--- a/modules.d/98systemd/dracut-cmdline.sh ++++ b/modules.d/98systemd/dracut-cmdline.sh +@@ -8,9 +8,10 @@ NEWROOT="/sysroot" + [ -d /run/lock ] || mkdir -p -m 0755 /run/lock + + if [ -f /dracut-state.sh ]; then +- . /dracut-state.sh || : ++ . /dracut-state.sh 2>/dev/null + fi +-. /lib/dracut-lib.sh ++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh ++ + source_conf /etc/conf.d + + # run scriptlets to parse the command line +@@ -23,3 +24,4 @@ source_hook cmdline + export root rflags fstype netroot NEWROOT + + export -p > /dracut-state.sh ++exit 0 +diff --git a/modules.d/98systemd/dracut-initqueue.sh b/modules.d/98systemd/dracut-initqueue.sh +index 03f1c9b..bc63582 100755 +--- a/modules.d/98systemd/dracut-initqueue.sh ++++ b/modules.d/98systemd/dracut-initqueue.sh +@@ -3,9 +3,10 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + + if [ -f /dracut-state.sh ]; then +- . /dracut-state.sh || : ++ . /dracut-state.sh 2>/dev/null + fi +-. /lib/dracut-lib.sh ++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh ++ + source_conf /etc/conf.d + + getarg 'rd.break=initqueue' 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue" +@@ -106,3 +107,4 @@ done + export -p > /dracut-state.sh + + systemctl isolate initrd-switch-root.target ++exit 0 +diff --git a/modules.d/98systemd/dracut-pre-pivot.sh b/modules.d/98systemd/dracut-pre-pivot.sh +index 89d7e6d..29a8248 100755 +--- a/modules.d/98systemd/dracut-pre-pivot.sh ++++ b/modules.d/98systemd/dracut-pre-pivot.sh +@@ -3,9 +3,10 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + + if [ -f /dracut-state.sh ]; then +- . /dracut-state.sh || : ++ . /dracut-state.sh 2>/dev/null + fi +-. /lib/dracut-lib.sh ++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh ++ + source_conf /etc/conf.d + + # pre pivot scripts are sourced just before we doing cleanup and switch over +@@ -49,3 +50,4 @@ getarg rd.break rdbreak && emergency_shell -n switch_root "Break before switch_r + cp -avr /lib/systemd/system/dracut*.service /run/systemd/system/ + + export -p > /dracut-state.sh ++exit 0 +diff --git a/modules.d/98systemd/dracut-pre-trigger.sh b/modules.d/98systemd/dracut-pre-trigger.sh +index 9521eaa..52ecfaf 100755 +--- a/modules.d/98systemd/dracut-pre-trigger.sh ++++ b/modules.d/98systemd/dracut-pre-trigger.sh +@@ -3,9 +3,10 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + + if [ -f /dracut-state.sh ]; then +- . /dracut-state.sh || : ++ . /dracut-state.sh 2>/dev/null + fi +-. /lib/dracut-lib.sh ++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh ++ + source_conf /etc/conf.d + + getargbool 0 rd.udev.info -y rdudevinfo && udevadm control --log-priority=info +@@ -17,3 +18,4 @@ source_hook pre-trigger + udevadm control --reload >/dev/null 2>&1 || : + + export -p > /dracut-state.sh ++exit 0 +diff --git a/modules.d/98systemd/dracut-pre-udev.sh b/modules.d/98systemd/dracut-pre-udev.sh +index 3b5ac37..2566ab9 100755 +--- a/modules.d/98systemd/dracut-pre-udev.sh ++++ b/modules.d/98systemd/dracut-pre-udev.sh +@@ -3,9 +3,10 @@ + # ex: ts=8 sw=4 sts=4 et filetype=sh + + if [ -f /dracut-state.sh ]; then +- . /dracut-state.sh || : ++ . /dracut-state.sh 2>/dev/null + fi +-. /lib/dracut-lib.sh ++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh ++ + source_conf /etc/conf.d + + # pre pivot scripts are sourced just before we doing cleanup and switch over +@@ -14,3 +15,4 @@ getarg 'rd.break=pre-udev' 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Br + source_hook pre-udev + + export -p > /dracut-state.sh ++exit 0 diff --git a/0040-dracut.asc-add-lsinitrd-and-mkinitrd.patch b/0040-dracut.asc-add-lsinitrd-and-mkinitrd.patch new file mode 100644 index 0000000..65ec320 --- /dev/null +++ b/0040-dracut.asc-add-lsinitrd-and-mkinitrd.patch @@ -0,0 +1,26 @@ +From e5efb6a798788195e2c1154deb582abf2dc0c6f5 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 12:29:44 +0200 +Subject: [PATCH] dracut.asc: add lsinitrd and mkinitrd + +--- + dracut.asc | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/dracut.asc b/dracut.asc +index 6d93379..e1f756c 100644 +--- a/dracut.asc ++++ b/dracut.asc +@@ -1022,6 +1022,12 @@ include::dracut.conf.5.asc[] + [[dracutcmdline7]] + include::dracut.cmdline.7.asc[] + ++[[lsinitrd1]] ++include::lsinitrd.1.asc[] ++ ++[[mkinitrd8]] ++include::mkinitrd.8.asc[] ++ + :leveloffset: 0 + [appendix] + License diff --git a/0041-dracut.8.asc-fixup-NOTE-sections.patch b/0041-dracut.8.asc-fixup-NOTE-sections.patch new file mode 100644 index 0000000..a8d5a7d --- /dev/null +++ b/0041-dracut.8.asc-fixup-NOTE-sections.patch @@ -0,0 +1,39 @@ +From 18595cede8d84212bc8f9055f5710f97998ed165 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 12:30:03 +0200 +Subject: [PATCH] dracut.8.asc: fixup NOTE sections + +--- + dracut.8.asc | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/dracut.8.asc b/dracut.8.asc +index 3c0efb9..619fcaf 100644 +--- a/dracut.8.asc ++++ b/dracut.8.asc +@@ -46,7 +46,7 @@ example: + **-o, --omit** __:: + omit a space-separated list of dracut modules. This parameter can be + specified multiple times. +- +++ + [NOTE] + =============================== + If [LIST] has multiple arguments, then you have to put these in quotes. For +@@ -130,7 +130,7 @@ example: + specify a space-separated list of kernel filesystem modules to exclusively + include in the generic initramfs. This parameter can be specified multiple + times. +- +++ + [NOTE] + =============================== + If [LIST] has multiple arguments, then you have to put these in quotes. For +@@ -273,7 +273,6 @@ provide a valid _/etc/fstab_. + =============================== + If [LIST] has multiple arguments, then you have to put these in quotes. For + example: +-+ + ---- + # dracut --install "/bin/foo /sbin/bar" ... + ---- diff --git a/0042-dracut.cmdline.7.asc-fixup.patch b/0042-dracut.cmdline.7.asc-fixup.patch new file mode 100644 index 0000000..a4205a1 --- /dev/null +++ b/0042-dracut.cmdline.7.asc-fixup.patch @@ -0,0 +1,23 @@ +From 5d0404e3b373f29b80f4383fdd87a8525537d6e1 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 12:30:50 +0200 +Subject: [PATCH] dracut.cmdline.7.asc: fixup + +--- + dracut.cmdline.7.asc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 997c513..5f0396c 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -65,7 +65,8 @@ rootfstype=ext3 + do not honor special mount options for the root filesystem found in + _/etc/fstab_ of the real root. + +-**resume=**__ ++**resume=**__:: ++ resume from a swap partition + + + E.g.: + + diff --git a/0043-network-do-not-rename-other-interfaces-and-document-.patch b/0043-network-do-not-rename-other-interfaces-and-document-.patch new file mode 100644 index 0000000..0ab40b6 --- /dev/null +++ b/0043-network-do-not-rename-other-interfaces-and-document-.patch @@ -0,0 +1,152 @@ +From 1760dfc051dfd84e932dbd63ba2b3c7e8b6ecf50 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 12:31:31 +0200 +Subject: [PATCH] network: do not rename other interfaces and document the + ifname usage + +We do not support renaming in the kernel namespace anymore (as udev does +that not anymore). So, if a user wants to use ifname, he has to rename +to a custom namespace. "eth[0-9]+" is not allowed anymore. +--- + dracut.cmdline.7.asc | 49 +++++++++++++++++++++++++------- + modules.d/40network/ifname-genrules.sh | 7 +---- + modules.d/40network/net-genrules.sh | 4 +-- + modules.d/40network/net-lib.sh | 10 +++++++ + modules.d/95fcoe/fcoe-genrules.sh | 2 +- + 5 files changed, 53 insertions(+), 19 deletions(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 5f0396c..755d641 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -295,24 +295,51 @@ Network + **ip=**__:_{dhcp|on|any|dhcp6|auto6}_[:[__][:__]]:: + This parameter can be specified multiple times. + + ++===================== + dhcp|on|any|dhcp6::: get ip from dhcp server on a specific interface + auto6::: do IPv6 autoconfiguration +-::: optionally set on the ++::: optionally **set** on the . This ++cannot be used in conjunction with the **ifname** argument for the ++same . ++===================== ++ ++[IMPORTANT] ++===================== ++It is recommended to either bind to a MAC with the **ifname** ++argument. Or use biosdevname to name your interfaces, which will then have names according to their hardware location. ++ ++em::: for embedded NICs ++p#_::: for cards in PCI slots ++===================== + + **ip=**__:__:__:__:__:__:_{none|off|dhcp|on|any|dhcp6|auto6|ibft}_[:[__][:__]]:: + explicit network configuration. If you want do define a IPv6 address, put it + in brackets (e.g. [2001:DB8::1]). This parameter can be specified multiple + times. + + +-::: optionally set on the ++===================== ++::: optionally **set** on the . This ++cannot be used in conjunction with the **ifname** argument for the ++same . ++===================== ++ ++[IMPORTANT] ++===================== ++It is recommended to either bind to a MAC with the **ifname** ++argument. Or use biosdevname to name your interfaces, which will then have names according to their hardware location. ++ ++em::: for embedded NICs ++p#_::: for cards in PCI slots ++===================== + + **ifname=**__:__:: +- Assign network device name (ie eth0) to the NIC with MAC . +- Note: If you use this option you _must_ specify an ifname= argument for all +- interfaces used in ip= or fcoe= arguments. However, if the interface in +- ip= or fcoe= is a bridge, bonding or vlan interface, you should specify +- an ifname= for _each_ of its underlying interfaces. This parameter can be +- specified multiple times. ++ Assign network device name (ie "bootnet") to the NIC with MAC . +++ ++[IMPORTANT] ++ ++Do **not** use the default kernel naming scheme for the interface name, ++as it can conflict with the kernel names. So, don't use "eth[0-9]+" for the ++interface name. Better name it "bootnet" or "bluesocket". + + **bootdev=**__:: + specify network interface to use routing and netroot information from. +@@ -430,8 +457,10 @@ FCoE + **fcoe=**__:_{dcb|nodcb}_:: + Try to connect to a FCoE SAN through the NIC specified by __ or + __ or EDD settings. For the second argument, currently only nodcb is +- supported. This parameter can be specified multiple times. Note: letters in +- the MAC-address must be lowercase! ++ supported. This parameter can be specified multiple times. +++ ++[NOTE] ++letters in the MAC-address must be lowercase! + + NBD + ~~~ +diff --git a/modules.d/40network/ifname-genrules.sh b/modules.d/40network/ifname-genrules.sh +index b0b429c..d5f8b0f 100755 +--- a/modules.d/40network/ifname-genrules.sh ++++ b/modules.d/40network/ifname-genrules.sh +@@ -15,9 +15,4 @@ command -v parse_ifname_opts >/dev/null || . /lib/net-lib.sh + printf 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="%s", ATTR{type}=="1", NAME="%s"\n' "$ifname_mac" "$ifname_if" + done + +- # Rename non named interfaces out of the way for named ones. +- for p in $(getargs ifname=); do +- parse_ifname_opts $p +- printf 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="?*", ATTR{type}=="1", NAME!="?*", KERNEL=="%s", NAME="%%k-renamed"\n' "$ifname_if" +- done +-} > /etc/udev/rules.d/50-ifname.rules ++} >> /etc/udev/rules.d/80-ifname.rules +diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh +index 3bb5d80..8aeee2d 100755 +--- a/modules.d/40network/net-genrules.sh ++++ b/modules.d/40network/net-genrules.sh +@@ -54,7 +54,7 @@ fix_bootif() { + + # Default: We don't know the interface to use, handle all + else +- printf 'SUBSYSTEM=="net", RUN+="%s"\n' "/sbin/initqueue --onetime $ifup" > /etc/udev/rules.d/61-default-net.rules ++ printf 'SUBSYSTEM=="net", RUN+="%s"\n' "/sbin/initqueue --onetime $ifup" > /etc/udev/rules.d/91-default-net.rules + fi + +-} > /etc/udev/rules.d/60-net.rules ++} > /etc/udev/rules.d/90-net.rules +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index 9a1e004..641b21e 100644 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -304,4 +304,14 @@ parse_ifname_opts() { + die "Invalid arguments for ifname=" + ;; + esac ++ ++ case $ifname_if in ++ eth[0-9]|eth[0-9][0-9]|eth[0-9][0-9][0-9]|eth[0-9][0-9][0-9][0-9]) ++ warn "ifname=$ifname_if uses the kernel name space for interfaces" ++ warn "This can fail for multiple network interfaces and is discouraged!" ++ warn "Please use a custom name like \"netboot\" or \"bluesocket\"" ++ warn "or use biosdevname and no ifname= at all." ++ ;; ++ esac ++ + } +diff --git a/modules.d/95fcoe/fcoe-genrules.sh b/modules.d/95fcoe/fcoe-genrules.sh +index d87f72c..80894ed 100755 +--- a/modules.d/95fcoe/fcoe-genrules.sh ++++ b/modules.d/95fcoe/fcoe-genrules.sh +@@ -13,4 +13,4 @@ + else + printf 'ACTION=="add", SUBSYSTEM=="net", NAME=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_interface" "$fcoe_dcb" + fi +-} > /etc/udev/rules.d/60-fcoe.rules ++} > /etc/udev/rules.d/92-fcoe.rules diff --git a/0044-mkinitrd.8.asc-mark-paragraph-as-important.patch b/0044-mkinitrd.8.asc-mark-paragraph-as-important.patch new file mode 100644 index 0000000..140f4c6 --- /dev/null +++ b/0044-mkinitrd.8.asc-mark-paragraph-as-important.patch @@ -0,0 +1,21 @@ +From 528864e4604599e446950817ce7eaeaafa844930 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 12:42:06 +0200 +Subject: [PATCH] mkinitrd.8.asc: mark paragraph as important + +--- + mkinitrd.8.asc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/mkinitrd.8.asc b/mkinitrd.8.asc +index 2792915..25661c8 100644 +--- a/mkinitrd.8.asc ++++ b/mkinitrd.8.asc +@@ -17,6 +17,7 @@ DESCRIPTION + mkinitrd creates an initramfs image for the kernel with + version by calling "dracut". + ++[IMPORTANT] + If a more fine grained control over the resulting image is needed, + "dracut" should be called directly. + diff --git a/0045-network-ifname-genrules.sh-check-for-multiple-ifname.patch b/0045-network-ifname-genrules.sh-check-for-multiple-ifname.patch new file mode 100644 index 0000000..b65dcfb --- /dev/null +++ b/0045-network-ifname-genrules.sh-check-for-multiple-ifname.patch @@ -0,0 +1,38 @@ +From f1e7add2bf74b836bc29d20df2e4e53638e49936 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 12:57:17 +0200 +Subject: [PATCH] network/ifname-genrules.sh: check for multiple ifname= lines + +--- + modules.d/40network/ifname-genrules.sh | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/modules.d/40network/ifname-genrules.sh b/modules.d/40network/ifname-genrules.sh +index d5f8b0f..3cf4be7 100755 +--- a/modules.d/40network/ifname-genrules.sh ++++ b/modules.d/40network/ifname-genrules.sh +@@ -12,7 +12,23 @@ command -v parse_ifname_opts >/dev/null || . /lib/net-lib.sh + { + for p in $(getargs ifname=); do + parse_ifname_opts $p ++ ++ if [ -f /tmp/ifname-$ifname_mac ]; then ++ read oldif < /tmp/ifname-$ifname_mac ++ fi ++ if [ -f /tmp/ifname-$ifname_if ]; then ++ read oldmac < /tmp/ifname-$ifname_if ++ fi ++ if [ -n "$oldif" -a -n "$oldmac" -a "$oldif" = "$ifname_if" -a "$oldmac" = "$ifname_mac" ]; then ++ # skip same ifname= declaration ++ continue ++ fi ++ ++ [ -n "$oldif" ] && warn "Multiple interface names specified for MAC $ifname_mac: $oldif" ++ [ -n "$oldmac" ] && warn "Multiple MAC specified for $ifname_if: $oldmac" ++ + printf 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="%s", ATTR{type}=="1", NAME="%s"\n' "$ifname_mac" "$ifname_if" ++ echo $ifname_if > /tmp/ifname-$ifname_mac ++ echo $ifname_mac > /tmp/ifname-$ifname_if + done +- + } >> /etc/udev/rules.d/80-ifname.rules diff --git a/0046-dracut.sh-keep-vim-syntax-highlighting-happy.patch b/0046-dracut.sh-keep-vim-syntax-highlighting-happy.patch new file mode 100644 index 0000000..6330a21 --- /dev/null +++ b/0046-dracut.sh-keep-vim-syntax-highlighting-happy.patch @@ -0,0 +1,21 @@ +From a421016671d59d99d182194223e83a6a616dedf2 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 13:48:05 +0200 +Subject: [PATCH] dracut.sh: keep vim syntax highlighting happy + +--- + dracut.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/dracut.sh b/dracut.sh +index c1be619..db2e33b 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -641,6 +641,7 @@ unset omit_drivers_corrected + for ((i=0; i < ${#dracut_args[@]}; i++)); do + strstr "${dracut_args[$i]}" " " && \ + dracut_args[$i]="\"${dracut_args[$i]}\"" ++ #" keep vim happy + done + ddebug "Executing: $0 ${dracut_args[@]}" + diff --git a/0047-systemd-check-that-prefix-does-not-contain-run.patch b/0047-systemd-check-that-prefix-does-not-contain-run.patch new file mode 100644 index 0000000..5c5d7a0 --- /dev/null +++ b/0047-systemd-check-that-prefix-does-not-contain-run.patch @@ -0,0 +1,55 @@ +From e09048aaf5cbc6c98fc03bdf89250e5c0e70f8c0 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 13:49:03 +0200 +Subject: [PATCH] systemd: check, that --prefix= does not contain /run + +systemd will mount /run before dracut has a chance to copy over the +original content. +--- + dracut.sh | 3 ++- + modules.d/98systemd/module-setup.sh | 10 +++++++--- + 2 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index db2e33b..0b43f44 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -779,7 +779,8 @@ export initdir dracutbasedir dracutmodules drivers \ + use_fstab fstab_lines libdirs fscks nofscks \ + stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \ + debug host_fs_types host_devs sshkey add_fstab \ +- DRACUT_VERSION udevdir systemdutildir systemdsystemunitdir ++ DRACUT_VERSION udevdir systemdutildir systemdsystemunitdir \ ++ prefix + + # Create some directory structure first + [[ $prefix ]] && mkdir -m 0755 -p "${initdir}${prefix}" +diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh +index d20d18d..b2111a9 100755 +--- a/modules.d/98systemd/module-setup.sh ++++ b/modules.d/98systemd/module-setup.sh +@@ -4,10 +4,9 @@ + + check() { + [[ $mount_needs ]] && return 1 +- if [[ -x /lib/systemd/systemd ]] || [[ -x /usr/lib/systemd/systemd ]]; then +- return 255 ++ if [[ -x $systemdutildir/systemd ]]; then ++ return 255 + fi +- [[ $systemdutildir ]] && return 255 + + return 1 + } +@@ -17,6 +16,11 @@ depends() { + } + + install() { ++ if strstr "$prefix" "/run/"; then ++ dfatal "systemd does not work a prefix, which contains \"/run\"!!" ++ exit 1 ++ fi ++ + dracut_install -o \ + $systemdutildir/systemd \ + $systemdutildir/systemd-cgroups-agent \ diff --git a/0048-fixed-bash-sh-requirements.patch b/0048-fixed-bash-sh-requirements.patch new file mode 100644 index 0000000..87156cb --- /dev/null +++ b/0048-fixed-bash-sh-requirements.patch @@ -0,0 +1,81 @@ +From e1619ee151b20549dc5c6112a5715df58db7b108 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 14:06:05 +0200 +Subject: [PATCH] fixed bash/sh requirements + +--- + modules.d/90btrfs/btrfs_finished.sh | 2 +- + modules.d/90btrfs/btrfs_timeout.sh | 2 +- + modules.d/90livenet/fetch-liveupdate.sh | 2 +- + modules.d/90livenet/livenetroot.sh | 2 +- + modules.d/90livenet/module-setup.sh | 2 +- + modules.d/99img-lib/module-setup.sh | 3 +-- + 6 files changed, 6 insertions(+), 7 deletions(-) + +diff --git a/modules.d/90btrfs/btrfs_finished.sh b/modules.d/90btrfs/btrfs_finished.sh +index 7e87dec..5e7691a 100755 +--- a/modules.d/90btrfs/btrfs_finished.sh ++++ b/modules.d/90btrfs/btrfs_finished.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- + # ex: ts=8 sw=4 sts=4 et filetype=sh + +diff --git a/modules.d/90btrfs/btrfs_timeout.sh b/modules.d/90btrfs/btrfs_timeout.sh +index 84f7997..cd64443 100755 +--- a/modules.d/90btrfs/btrfs_timeout.sh ++++ b/modules.d/90btrfs/btrfs_timeout.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- + # ex: ts=8 sw=4 sts=4 et filetype=sh + +diff --git a/modules.d/90livenet/fetch-liveupdate.sh b/modules.d/90livenet/fetch-liveupdate.sh +index 88aa2b1..024feaa 100755 +--- a/modules.d/90livenet/fetch-liveupdate.sh ++++ b/modules.d/90livenet/fetch-liveupdate.sh +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + # fetch-liveupdate - fetch an update image for dmsquash-live media. + # this gets called by the "initqueue/online" hook for each network interface + # that comes online. +diff --git a/modules.d/90livenet/livenetroot.sh b/modules.d/90livenet/livenetroot.sh +index 617be62..1bbee55 100755 +--- a/modules.d/90livenet/livenetroot.sh ++++ b/modules.d/90livenet/livenetroot.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + # livenetroot - fetch a live image from the network and run it + + type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh +diff --git a/modules.d/90livenet/module-setup.sh b/modules.d/90livenet/module-setup.sh +index 265f29e..4249655 100755 +--- a/modules.d/90livenet/module-setup.sh ++++ b/modules.d/90livenet/module-setup.sh +@@ -6,7 +6,7 @@ check() { + } + + depends() { +- echo network url-lib dmsquash-live ++ echo network url-lib dmsquash-live img-lib + return 0 + } + +diff --git a/modules.d/99img-lib/module-setup.sh b/modules.d/99img-lib/module-setup.sh +index 9ff5d7c..ebd0436 100755 +--- a/modules.d/99img-lib/module-setup.sh ++++ b/modules.d/99img-lib/module-setup.sh +@@ -13,8 +13,7 @@ depends() { + } + + install() { +- # NOTE/TODO: we require bash, but I don't know how to specify that.. +- dracut_install tar gzip dd ++ dracut_install tar gzip dd bash + # TODO: make this conditional on a cmdline flag / config option + dracut_install -o cpio xz bzip2 + inst_simple "$moddir/img-lib.sh" "/lib/img-lib.sh" diff --git a/0049-dracut.spec-dracut.conf.d-fedora.conf.example-no-das.patch b/0049-dracut.spec-dracut.conf.d-fedora.conf.example-no-das.patch new file mode 100644 index 0000000..6cde37e --- /dev/null +++ b/0049-dracut.spec-dracut.conf.d-fedora.conf.example-no-das.patch @@ -0,0 +1,56 @@ +From d96c3254e8bbe56763617f45f1148d81b10f4745 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 14:22:10 +0200 +Subject: [PATCH] dracut.spec,dracut.conf.d/fedora.conf.example: no dash + +hard remove dash from supported modules + +we do not want to have anything to do with dash bugs +--- + dracut.conf.d/fedora.conf.example | 7 +++---- + dracut.spec | 4 +++- + 2 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/dracut.conf.d/fedora.conf.example b/dracut.conf.d/fedora.conf.example +index 25b5cfa..ee53844 100644 +--- a/dracut.conf.d/fedora.conf.example ++++ b/dracut.conf.d/fedora.conf.example +@@ -2,13 +2,12 @@ + + # i18n + i18n_vars="/etc/sysconfig/keyboard:KEYTABLE-KEYMAP /etc/sysconfig/i18n:SYSFONT-FONT,FONTACM-FONT_MAP,FONT_UNIMAP" +-omit_dracutmodules+=" dash " + omit_drivers+=" .*/fs/ocfs/.* " +-add_dracutmodules+=" systemd " + stdloglvl=3 +-realinitpath="/usr/lib/systemd/systemd" + install_items+=" vi /etc/virc ps grep cat rm " +-prefix="/" ++readonly prefix="/" + systemdutildir=/usr/lib/systemd + systemdsystemunitdir=/usr/lib/systemd/system + udevdir=/usr/lib/udev ++add_dracutmodules+=" systemd " ++realinitpath="/usr/lib/systemd/systemd" +diff --git a/dracut.spec b/dracut.spec +index b258121..a6fec89 100644 +--- a/dracut.spec ++++ b/dracut.spec +@@ -190,6 +190,9 @@ rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/01fips + rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/02fips-aesni + %endif + ++# we do not support dash in the initramfs ++rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00dash ++ + # remove gentoo specific modules + rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/50gensplash + +@@ -261,7 +264,6 @@ rm -rf $RPM_BUILD_ROOT + %{_mandir}/man5/dracut.conf.5* + %{_mandir}/man1/lsinitrd.1* + %{dracutlibdir}/modules.d/00bootchart +-%{dracutlibdir}/modules.d/00dash + %{dracutlibdir}/modules.d/04watchdog + %{dracutlibdir}/modules.d/05busybox + %{dracutlibdir}/modules.d/10i18n diff --git a/0050-systemd-module-setup.sh-also-include-systemd-udevd-u.patch b/0050-systemd-module-setup.sh-also-include-systemd-udevd-u.patch new file mode 100644 index 0000000..629ab0b --- /dev/null +++ b/0050-systemd-module-setup.sh-also-include-systemd-udevd-u.patch @@ -0,0 +1,51 @@ +From 995487641743afebd84f1476c3d32120e7e357ae Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Fri, 6 Jul 2012 14:33:53 +0200 +Subject: [PATCH] systemd/module-setup.sh: also include systemd-udevd* units + +systemd-udev* was renamed to systemd-udevd* +--- + modules.d/98systemd/module-setup.sh | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/modules.d/98systemd/module-setup.sh b/modules.d/98systemd/module-setup.sh +index b2111a9..60e1be2 100755 +--- a/modules.d/98systemd/module-setup.sh ++++ b/modules.d/98systemd/module-setup.sh +@@ -55,7 +55,9 @@ install() { + $systemdsystemunitdir/systemd-shutdownd.socket \ + $systemdsystemunitdir/systemd-ask-password-console.path \ + $systemdsystemunitdir/systemd-udev-control.socket \ ++ $systemdsystemunitdir/systemd-udevd-control.socket \ + $systemdsystemunitdir/systemd-udev-kernel.socket \ ++ $systemdsystemunitdir/systemd-udevd-kernel.socket \ + $systemdsystemunitdir/systemd-ask-password-plymouth.path \ + $systemdsystemunitdir/systemd-journald.socket \ + $systemdsystemunitdir/systemd-initctl.service \ +@@ -67,8 +69,11 @@ install() { + $systemdsystemunitdir/kexec.service \ + $systemdsystemunitdir/fsck@.service \ + $systemdsystemunitdir/systemd-udev.service \ ++ $systemdsystemunitdir/systemd-udevd.service \ + $systemdsystemunitdir/systemd-udev-trigger.service \ ++ $systemdsystemunitdir/systemd-udevd-trigger.service \ + $systemdsystemunitdir/systemd-udev-settle.service \ ++ $systemdsystemunitdir/systemd-udevd-settle.service \ + $systemdsystemunitdir/systemd-ask-password-plymouth.service \ + $systemdsystemunitdir/systemd-journald.service \ + $systemdsystemunitdir/systemd-vconsole-setup.service \ +@@ -79,10 +84,14 @@ install() { + $systemdsystemunitdir/sockets.target.wants/systemd-initctl.socket \ + $systemdsystemunitdir/sockets.target.wants/systemd-shutdownd.socket \ + $systemdsystemunitdir/sockets.target.wants/systemd-udev-control.socket \ ++ $systemdsystemunitdir/sockets.target.wants/systemd-udevd-control.socket \ + $systemdsystemunitdir/sockets.target.wants/systemd-udev-kernel.socket \ ++ $systemdsystemunitdir/sockets.target.wants/systemd-udevd-kernel.socket \ + $systemdsystemunitdir/sockets.target.wants/systemd-journald.socket \ + $systemdsystemunitdir/sysinit.target.wants/systemd-udev.service \ ++ $systemdsystemunitdir/sysinit.target.wants/systemd-udevd.service \ + $systemdsystemunitdir/sysinit.target.wants/systemd-udev-trigger.service \ ++ $systemdsystemunitdir/sysinit.target.wants/systemd-udevd-trigger.service \ + $systemdsystemunitdir/ctrl-alt-del.target \ + $systemdsystemunitdir/single.service \ + $systemdsystemunitdir/syslog.socket \ diff --git a/dracut.spec b/dracut.spec index 691ab09..08ee699 100644 --- a/dracut.spec +++ b/dracut.spec @@ -10,7 +10,7 @@ Name: dracut Version: 020 -Release: 22.git20120702%{?dist} +Release: 51.git20120706%{?dist} Summary: Initramfs generator using udev %if 0%{?fedora} || 0%{?rhel} @@ -50,6 +50,35 @@ Patch18: 0018-dracut-functions.sh-create-initdir-if-it-does-not-ex.patch Patch19: 0019-dracut-install.c-for-lazy-install-shebangs-do-not-ch.patch Patch20: 0020-usrmount-mount-usr.sh-give-emergency_shell-if-usr-mo.patch Patch21: 0021-dracut-functions.sh-forgot-set-version-kernel-for-mo.patch +Patch22: 0022-dracut-functions.sh-find_kernel_modules_by_path-fixe.patch +Patch23: 0023-base-init.sh-error-out-early-if-dev-proc-or-sys-cann.patch +Patch24: 0024-add-lsinitrd-and-mkinitrd-man-pages.patch +Patch25: 0025-manpages-simplify-AUTHORS.patch +Patch26: 0026-dracut.sh-use-getopt-to-parse-arguments.patch +Patch27: 0027-usrmount-mount-usr.sh-check-the-right-path-with-ismo.patch +Patch28: 0028-TEST-03-USR-MOUNT-change-test-to-use-a-seperate-disk.patch +Patch29: 0029-TEST-30-ISCSI-put-back-in-hard-off.sh-for-tests.patch +Patch30: 0030-lsinitrd.sh-print-usage-for-h.patch +Patch31: 0031-lsinitrd.sh-get-rid-of-awk-call.patch +Patch32: 0032-lsinitrd.sh-fixed-version-file-extraction.patch +Patch33: 0033-Makefile-mkinitrd-man-page-install-typo.patch +Patch34: 0034-fips-change-module-list.patch +Patch35: 0035-i18n-module-setup.sh-s-error-info-if-no-keymap-is-co.patch +Patch36: 0036-fips-add-instmods-silent-check-mode-c-s.patch +Patch37: 0037-install-user-group-adm-for-journal.patch +Patch38: 0038-network-factor-out-parse_ifname_opts-for-ifname-genr.patch +Patch39: 0039-systemd-exit-with-sane-state.patch +Patch40: 0040-dracut.asc-add-lsinitrd-and-mkinitrd.patch +Patch41: 0041-dracut.8.asc-fixup-NOTE-sections.patch +Patch42: 0042-dracut.cmdline.7.asc-fixup.patch +Patch43: 0043-network-do-not-rename-other-interfaces-and-document-.patch +Patch44: 0044-mkinitrd.8.asc-mark-paragraph-as-important.patch +Patch45: 0045-network-ifname-genrules.sh-check-for-multiple-ifname.patch +Patch46: 0046-dracut.sh-keep-vim-syntax-highlighting-happy.patch +Patch47: 0047-systemd-check-that-prefix-does-not-contain-run.patch +Patch48: 0048-fixed-bash-sh-requirements.patch +Patch49: 0049-dracut.spec-dracut.conf.d-fedora.conf.example-no-das.patch +Patch50: 0050-systemd-module-setup.sh-also-include-systemd-udevd-u.patch BuildRequires: dash bash git @@ -212,6 +241,9 @@ rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/01fips rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/02fips-aesni %endif +# we do not support dash in the initramfs +rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/00dash + # remove gentoo specific modules rm -fr $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/50gensplash @@ -277,11 +309,12 @@ rm -rf $RPM_BUILD_ROOT %endif %dir /etc/dracut.conf.d %{_mandir}/man8/dracut.8* +%{_mandir}/man8/mkinitrd.8* %{_mandir}/man7/dracut.kernel.7* %{_mandir}/man7/dracut.cmdline.7* %{_mandir}/man5/dracut.conf.5* +%{_mandir}/man1/lsinitrd.1* %{dracutlibdir}/modules.d/00bootchart -%{dracutlibdir}/modules.d/00dash %{dracutlibdir}/modules.d/04watchdog %{dracutlibdir}/modules.d/05busybox %{dracutlibdir}/modules.d/10i18n @@ -373,6 +406,11 @@ rm -rf $RPM_BUILD_ROOT %dir /var/lib/dracut/overlay %changelog +* Fri Jul 06 2012 Harald Hoyer 020-51.git20120706 +- cope with systemd-udevd unit renaming +- fixed network renaming +- removed dash module + * Mon Jul 02 2012 Harald Hoyer 020-22.git20120702 - fixed kernel modules install