dracut-018-1

This commit is contained in:
Harald Hoyer 2012-04-05 14:36:12 +02:00
parent f676c2ad02
commit 1a09cd0408
64 changed files with 9 additions and 9313 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@
/dracut-015.tar.bz2
/dracut-016.tar.bz2
/dracut-017.tar.bz2
/dracut-018.tar.bz2

View File

@ -1,22 +0,0 @@
From 25b36ef1247499b501a52a75764ebe9fc5a6159c Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:05:51 +0100
Subject: [PATCH] 99fs-lib/module-setup.sh: removed "touch"
---
modules.d/99fs-lib/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/99fs-lib/module-setup.sh b/modules.d/99fs-lib/module-setup.sh
index 9c900cc..344dcdf 100755
--- a/modules.d/99fs-lib/module-setup.sh
+++ b/modules.d/99fs-lib/module-setup.sh
@@ -40,7 +40,7 @@ install() {
local _helpers
inst "$moddir/fs-lib.sh" "/lib/fs-lib.sh"
- touch ${initdir}/etc/fstab.empty
+ > ${initdir}/etc/fstab.empty
[[ "$nofscks" = "yes" ]] && return

View File

@ -1,26 +0,0 @@
From 5e5f3d5e6c9d94996c9a28bf38f26a4d463c4dd4 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:06:16 +0100
Subject: [PATCH] 95nfs/module-setup.sh: removed "egrep" and "ls" calls
---
modules.d/95nfs/module-setup.sh | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
index 7aedb4d..7853783 100755
--- a/modules.d/95nfs/module-setup.sh
+++ b/modules.d/95nfs/module-setup.sh
@@ -54,7 +54,11 @@ install() {
_nsslibs=${_nsslibs#|}
_nsslibs=${_nsslibs%|}
- dracut_install $(for _i in $(ls {/usr,}$libdir/libnss*.so 2>/dev/null); do echo $_i;done | egrep "$_nsslibs")
+ for _i in {/usr,}$libdir/libnss*.so; do
+ [[ -e $_i ]] || continue
+ [[ "$_i" =~ $_nsslibs ]] || continue
+ dracut_install "$_i"
+ done
inst_hook cmdline 90 "$moddir/parse-nfsroot.sh"
inst_hook pre-udev 99 "$moddir/nfs-start-rpc.sh"

View File

@ -1,22 +0,0 @@
From b6f0dcbda13bfb242114d619b4574df2a4f426ae Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:06:38 +0100
Subject: [PATCH] 30convertfs/convertfs.sh: use hardlinks for inter-/usr cp
---
modules.d/30convertfs/convertfs.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/30convertfs/convertfs.sh b/modules.d/30convertfs/convertfs.sh
index 69c3b3e..036ec51 100755
--- a/modules.d/30convertfs/convertfs.sh
+++ b/modules.d/30convertfs/convertfs.sh
@@ -106,7 +106,7 @@ for dir in bin sbin lib lib64; do
[[ -d "$ROOT/$dir" ]] || continue
echo "Make a copy of \`$ROOT/usr/$dir'."
[[ -d "$ROOT/usr/$dir" ]] \
- && cp -ax $CP_HARDLINK "$ROOT/usr/$dir" "$ROOT/usr/${dir}.usrmove-new"
+ && cp -ax -l "$ROOT/usr/$dir" "$ROOT/usr/${dir}.usrmove-new"
echo "Merge the copy with \`$ROOT/$dir'."
[[ -d "$ROOT/usr/${dir}.usrmove-new" ]] \
|| mkdir -p "$ROOT/usr/${dir}.usrmove-new"

View File

@ -1,25 +0,0 @@
From 07f3e4f1689545bd5817c785ee97a3f668239014 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:07:45 +0100
Subject: [PATCH] dracut-functions.sh: get_fs_env() replaced egrep with shell
---
dracut-functions.sh | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index bb0c96f..9e9ee4e 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -168,7 +168,10 @@ get_fs_env() {
[[ $1 ]] || return
unset ID_FS_TYPE
unset ID_FS_UUID
- eval $(udevadm info --query=env --name=$1|egrep 'ID_FS_(TYPE|UUID)=')
+ eval $(udevadm info --query=env --name=$1 \
+ | while read line; do
+ [[ "$line" =~ 'ID_FS_(TYPE|UUID)=' ]] && echo $line;
+ done)
[[ $ID_FS_TYPE ]] && return
if [[ -x /lib/udev/vol_id ]]; then

View File

@ -1,26 +0,0 @@
From 86191581d125b1373532593371fde767a56728a0 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:08:30 +0100
Subject: [PATCH] dracut-functions.sh: instmods(): replace egrep with shell
code
---
dracut-functions.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 9e9ee4e..81801e1 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -1167,9 +1167,10 @@ instmods() {
return $_ret
}
+ local _filter_not_found='FATAL: Module .* not found.'
# Capture all stderr from modprobe to _fderr. We could use {var}>...
# redirections, but that would make dracut require bash4 at least.
eval "( instmods_1 \"\$@\" ) ${_fderr}>&1" \
- | egrep -v 'FATAL: Module .* not found.' | derror
+ | while read line; do [[ "$line" =~ $_filter_not_found ]] || echo $line;done | derror
return $?
}

View File

@ -1,29 +0,0 @@
From edea870c3cade3a9f8836e75afa98587945908d2 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:09:38 +0100
Subject: [PATCH] dracut-functions.sh: instmods() removed special case for
"=ata"
---
dracut-functions.sh | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 81801e1..bd3203d 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -1103,13 +1103,7 @@ instmods() {
local _mod="$1"
case $_mod in
=*)
- # This introduces 2 incompatible meanings for =* arguments
- # to instmods. We need to decide which one to keep.
- if [[ $_mod = =ata && -f $srcmods/modules.block ]]; then
- ( [[ "$_mpargs" ]] && echo $_mpargs
- egrep 'ata|ahci' "${srcmods}/modules.block" ) \
- | instmods
- elif [ -f $srcmods/modules.${_mod#=} ]; then
+ if [ -f $srcmods/modules.${_mod#=} ]; then
( [[ "$_mpargs" ]] && echo $_mpargs
cat "${srcmods}/modules.${_mod#=}" ) \
| instmods

View File

@ -1,25 +0,0 @@
From 334cc2832770b71e5e6b6f245e5a24cced8eaac6 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:10:07 +0100
Subject: [PATCH] dracut-functions.sh: instmods() print only filename instead
of fullpath
do not print the full path, when we use "find" for kernel modules, but
rather only the filename.
---
dracut-functions.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index bd3203d..80714aa 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -1109,7 +1109,7 @@ instmods() {
| instmods
else
( [[ "$_mpargs" ]] && echo $_mpargs
- find "$srcmods" -path "*/${_mod#=}/*" ) \
+ find "$srcmods" -path "*/${_mod#=}/*" -printf '%f\n' ) \
| instmods
fi
;;

View File

@ -1,74 +0,0 @@
From 379c34d2cf29de3268bbbe83ec09f60b74340313 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:11:36 +0100
Subject: [PATCH] dracut.sh/dracut-functions.sh: use a marker-dir for kernel
modules
use "$initdir/.kernelmodseen" to mark kernel modules, which we already
handled with install_kmod_with_fw()
---
dracut-functions.sh | 10 +++++++---
dracut.sh | 5 +++++
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 80714aa..c7337e9 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -974,9 +974,14 @@ for_each_module_dir() {
# $1 = full path to kernel module to install
install_kmod_with_fw() {
# no need to go further if the module is already installed
+
[[ -e "${initdir}/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" ]] \
&& return 0
+ [[ -e "$initdir/.kernelmodseen/${1##*/}" ]] && return 0
+
+ > "$initdir/.kernelmodseen/${1##*/}"
+
if [[ $omit_drivers ]]; then
local _kmod=${1##*/}
_kmod=${_kmod%.ko}
@@ -1116,16 +1121,15 @@ instmods() {
--*) _mpargs+=" $_mod" ;;
i2o_scsi) return ;; # Do not load this diagnostic-only module
*)
+ _mod=${_mod##*/}
# if we are already installed, skip this module and go on
# to the next one.
- [[ -f $initdir/$1 ]] && return
+ [[ -f "$initdir/.kernelmodseen/${_mod%.ko}.ko" ]] && return
if [[ $omit_drivers ]] && [[ "$1" =~ $omit_drivers ]]; then
dinfo "Omitting driver ${_mod##$srcmods}"
return
fi
-
- _mod=${_mod##*/}
# 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 \
diff --git a/dracut.sh b/dracut.sh
index e6c36d9..88691ae 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -676,6 +676,8 @@ if [[ $kernel_only != yes ]]; then
mkdir -p "${initdir}/etc/cmdline.d"
fi
+mkdir -p "$initdir/.kernelmodseen"
+
mods_to_load=""
# check all our modules to see if they should be sourced.
# This builds a list of modules that we will install next.
@@ -766,6 +768,9 @@ if [[ $kernel_only != yes ]]; then
fi
fi
+rm -fr "$initdir/.kernelmodseen"
+
+
if (($maxloglvl >= 5)); then
ddebug "Listing sizes of included files:"
du -c "$initdir" | sort -n | ddebug

View File

@ -1,21 +0,0 @@
From 7a5f1ee46a07e00d1687a0c2cd6c13319626f17d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:40:38 +0100
Subject: [PATCH] dracut.spec: require "hardlink"
---
dracut.spec | 1 +
1 file changed, 1 insertion(+)
diff --git a/dracut.spec b/dracut.spec
index 1ec8b68..4102bb0 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -71,6 +71,7 @@ Requires: cpio
Requires: filesystem >= 2.1.0
Requires: findutils
Requires: grep
+Requires: hardlink
Requires: gzip
Requires: module-init-tools >= 3.7-9
Requires: sed

View File

@ -1,22 +0,0 @@
From ddd01008ff0b7b3daf5708ac32a6ccd0e843b3fc Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 16:51:35 +0100
Subject: [PATCH] 95terminfo/module-setup.sh: no need to call "find"
---
modules.d/95terminfo/module-setup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/95terminfo/module-setup.sh b/modules.d/95terminfo/module-setup.sh
index aec3582..32a3fe9 100755
--- a/modules.d/95terminfo/module-setup.sh
+++ b/modules.d/95terminfo/module-setup.sh
@@ -10,7 +10,7 @@ install() {
done
if [ -d ${_terminfodir} ]; then
- for f in $(find ${_terminfodir} -type f); do
+ for f in ${_terminfodir}/*/*; do
inst_simple $f
done
fi

View File

@ -1,24 +0,0 @@
From cf38fc7389d4136d0f77d9709c87acc4283f6bd6 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 17:18:51 +0100
Subject: [PATCH] 10i18n/module-setup.sh: optimize install of all kbd files
---
modules.d/10i18n/module-setup.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
index a5a3388..b4c19e1 100755
--- a/modules.d/10i18n/module-setup.sh
+++ b/modules.d/10i18n/module-setup.sh
@@ -92,8 +92,8 @@ install() {
install_all_kbd() {
local rel f
- for f in $(eval find ${kbddir}/{${KBDSUBDIRS}} -type f -print)
- do
+ find $(eval echo ${kbddir}/{${KBDSUBDIRS}}) -type f -print | \
+ while read f; do
inst_simple $f
done

View File

@ -1,57 +0,0 @@
From b7ddf6c1d8c861a75865b4b0fb716d838e4885ab Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Sat, 25 Feb 2012 17:22:02 +0100
Subject: [PATCH] make bzip2 optional
---
dracut.spec | 1 -
modules.d/10i18n/module-setup.sh | 9 ++++++++-
modules.d/99img-lib/module-setup.sh | 2 +-
3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/dracut.spec b/dracut.spec
index 4102bb0..91b3451 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -65,7 +65,6 @@ Obsoletes: dracut-kernel < 005
Provides: dracut-kernel = %{version}-%{release}
Requires: bash
-Requires: bzip2
Requires: coreutils
Requires: cpio
Requires: filesystem >= 2.1.0
diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
index b4c19e1..d1854c2 100755
--- a/modules.d/10i18n/module-setup.sh
+++ b/modules.d/10i18n/module-setup.sh
@@ -100,8 +100,15 @@ install() {
# remove unnecessary files
rm -f "${initdir}${kbddir}/consoletrans/utflist"
find "${initdir}${kbddir}/" -name README\* -delete
+ find "${initdir}${kbddir}/" -name '*.gz' -print -quit \
+ | while read line; do
+ dracut_install gzip
+ done
- dracut_install gzip bzip2
+ find "${initdir}${kbddir}/" -name '*.bz2' -print -quit \
+ | while read line; do
+ dracut_install bzip2
+ done
}
install_local_i18n() {
diff --git a/modules.d/99img-lib/module-setup.sh b/modules.d/99img-lib/module-setup.sh
index eead2ab..f0e6dac 100755
--- a/modules.d/99img-lib/module-setup.sh
+++ b/modules.d/99img-lib/module-setup.sh
@@ -17,7 +17,7 @@ install() {
dracut_install tar gzip dd
dracut_install -o cpio xz
# TODO: make this conditional on a cmdline flag / config option
- # dracut_install -o bzip2
+ dracut_install -o bzip2
inst "$moddir/img-lib.sh" "/lib/img-lib.sh"
}

View File

@ -1,54 +0,0 @@
From 34769a1445836bb43df3f27d8771ef6b86f29771 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 28 Feb 2012 12:19:39 +0100
Subject: [PATCH] TODO: update
---
TODO | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/TODO b/TODO
index e5abef0..6c27268 100644
--- a/TODO
+++ b/TODO
@@ -1,24 +1,33 @@
-Current TODO list, broken into things which are relevant for the initramfs itself (/init et al) vs the generator. A lot of things are/should be marked with "FIXME" in the code
+Current TODO list, broken into things which are relevant for the
+initramfs itself (/init et al) vs the generator.
+A lot of things are/should be marked with "FIXME" in the code.
+
+Items are ordered in priority.
+
INITRAMFS TODO
-- The hard-coded list of udev rules that we care about is kind of lame.
+- put "root=" parsing hooks in separate hook dir
+- call "root=" parsing hooks after getting new rootpath from dhcp
+- put mount hook in main initqueue loop
+- the hard-coded list of udev rules that we care about is kind of lame.
- automatic kexec fallback
- panic fallback
-- fsck for $NEWROOT/usr
GENERATOR TODO
-- Default module specification could use some work
-- udev rule copying, as mentioned above, is a bit too hard-coded
+- 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)
+- default module specification could use some work
+- udev rule copying, as mentioned above, is a bit too hard-coded
CODE TODO
-- document functions
+
+- document more functions
- make function vars local, and prefix with "_"
Future Enhancement Requests
- run ssh server to enter crypto password or perform debugging (supported by debian)
-- Bug 524727 - Dracut + encrypted root + networking
+- https://bugzilla.redhat.com/show_bug.cgi?id=524727 - Dracut + encrypted root + networking

View File

@ -1,21 +0,0 @@
From b642ce5340dfd72145793f2ca0fe8fdfe7e7dd84 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 28 Feb 2012 12:54:01 +0100
Subject: [PATCH] 98usrmount/mount-usr.sh: ignore comments in fstab
---
modules.d/98usrmount/mount-usr.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
index 3e23b15..f9d049e 100755
--- a/modules.d/98usrmount/mount-usr.sh
+++ b/modules.d/98usrmount/mount-usr.sh
@@ -39,6 +39,7 @@ mount_usr()
local _dev _mp _fs _opts _rest _usr_found _ret _freq _passno
# check, if we have to mount the /usr filesystem
while read _dev _mp _fs _opts _freq _passno; do
+ [ "${_dev%%#*}" != "$_dev" ] && continue
if [ "$_mp" = "/usr" ]; then
case "$_dev" in
LABEL=*)

View File

@ -1,22 +0,0 @@
From 9eded206c90c0ce65b1addc55e4a8d83fb66ad3b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 28 Feb 2012 16:35:08 +0100
Subject: [PATCH] 98usrmount/mount-usr.sh: check, if we have
$NEWROOT/etc/fstab
---
modules.d/98usrmount/mount-usr.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
index f9d049e..39f75b9 100755
--- a/modules.d/98usrmount/mount-usr.sh
+++ b/modules.d/98usrmount/mount-usr.sh
@@ -73,4 +73,6 @@ mount_usr()
fi
}
-mount_usr
+if [ -f "$NEWROOT/etc/fstab" ]; then
+ mount_usr
+fi

View File

@ -1,54 +0,0 @@
From 95268ffed378ac2bb3b5959cdbbf2e8b7e10534e Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 29 Feb 2012 13:21:51 +0100
Subject: [PATCH] 30convertfs/convertfs.sh: correct check for /usr/bin
---
modules.d/30convertfs/convertfs.sh | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/modules.d/30convertfs/convertfs.sh b/modules.d/30convertfs/convertfs.sh
index 036ec51..d1d25aa 100755
--- a/modules.d/30convertfs/convertfs.sh
+++ b/modules.d/30convertfs/convertfs.sh
@@ -21,13 +21,13 @@ while [[ "$ROOT" != "${ROOT%/}" ]]; do
ROOT=${ROOT%/}
done
-if [ ! -L $ROOT/var/run ]; then
+if [ ! -L $ROOT/var/run -a -e $ROOT/var/run ]; then
echo "Converting /var/run to symlink"
mv -f $ROOT/var/run $ROOT/var/run.runmove~
ln -sfn ../run $ROOT/var/run
fi
-if [ ! -L $ROOT/var/lock ]; then
+if [ ! -L $ROOT/var/lock -a -e $ROOT/var/lock ]; then
echo "Converting /var/lock to symlink"
mv -f $ROOT/var/lock $ROOT/var/lock.lockmove~
ln -sfn ../run/lock $ROOT/var/lock
@@ -42,16 +42,19 @@ needconvert() {
return 1
}
+if ! [ -e "$ROOT/usr/bin" ]; then
+ echo "$ROOT/usr/bin does not exist!"
+ echo "Make sure, the kernel command line has enough information"
+ echo "to mount /usr (man dracut.cmdline)"
+ exit 1
+fi
+
+
if ! needconvert; then
echo "Your system is already converted."
exit 0
fi
-if [ -e "$ROOT/usr/bin" ]; then
- echo "$ROOT/usr/bin does not exist"
- exit 1
-fi
-
testfile="$ROOT/.usrmovecheck$$"
rm -f "$testfile"
> "$testfile"

View File

@ -1,37 +0,0 @@
From 8d021e4b8a5aaaa129ae53358cd108f589881182 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 29 Feb 2012 16:20:02 +0100
Subject: [PATCH] 90crypt/parse-crypt.sh: simplify rd.luks.uuid testing
---
modules.d/90crypt/parse-crypt.sh | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)
diff --git a/modules.d/90crypt/parse-crypt.sh b/modules.d/90crypt/parse-crypt.sh
index 2ab3a9f..f96b59a 100755
--- a/modules.d/90crypt/parse-crypt.sh
+++ b/modules.d/90crypt/parse-crypt.sh
@@ -24,21 +24,10 @@ else
printf -- '$env{DEVNAME} luks-$env{ID_FS_UUID} %s"\n' $tout
} >> /etc/udev/rules.d/70-luks.rules.new
-
- [ -e $hookdir/initqueue/finished/90-crypt.sh ] || \
- {
- printf -- 'UUIDS=:\n'
- printf -- 'for dm in /dev/dm-*; do\n'
- printf -- '[ -e "$dm" ] || exit 1\n'
- printf -- 'dmid=`/sbin/dmsetup info -c -o uuid --noheadings "$dm"`\n'
- printf -- 'uuid=${dmid#CRYPT-LUKS*-}\n'
- printf -- '[ "x$uuid" = "x$dmid" ] && continue\n'
- printf -- 'UUIDS="${UUIDS}${uuid%%%%-*}:"\n'
- printf -- 'done\n'
- } > $hookdir/initqueue/finished/90-crypt.sh
uuid=$luksid
while [ "$uuid" != "${uuid#*-}" ]; do uuid=${uuid%%-*}${uuid#*-}; done
- printf -- '[ "x${UUIDS#*:%s*:}" != "x$UUIDS" ] || exit 1\n' $uuid >> $hookdir/initqueue/finished/90-crypt.sh
+ printf -- '[ -e /dev/disk/by-id/dm-uuid-CRYPT-LUKS?-*%s*-* ] || exit 1\n' $uuid \
+ >> $hookdir/initqueue/finished/90-crypt.sh
{
printf -- '[ -e /dev/disk/by-uuid/*%s* ] || ' $luksid

View File

@ -1,38 +0,0 @@
From e12c1a8da19b373aee46f7352e60511ac1a2fc16 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 1 Mar 2012 17:45:30 +0100
Subject: [PATCH] dracut-functions.sh:install_kmod_with_fw() delay
.kernelmodseen
first check for omit, then mark the kernel module as seen
when we temporarily omit_drivers, we don't want to mark them as seen.
example: nfs.ko module in kernel-modules, but the nfs module
should be able to load it later on.
---
dracut-functions.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index c7337e9..20fc6e1 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -980,8 +980,6 @@ install_kmod_with_fw() {
[[ -e "$initdir/.kernelmodseen/${1##*/}" ]] && return 0
- > "$initdir/.kernelmodseen/${1##*/}"
-
if [[ $omit_drivers ]]; then
local _kmod=${1##*/}
_kmod=${_kmod%.ko}
@@ -996,6 +994,8 @@ install_kmod_with_fw() {
fi
fi
+ > "$initdir/.kernelmodseen/${1##*/}"
+
inst_simple "$1" "/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" \
|| return $?

View File

@ -1,22 +0,0 @@
From 778f767bccf14f49573d5fffca40841f42401e75 Mon Sep 17 00:00:00 2001
From: Jan Stodola <jstodola@redhat.com>
Date: Thu, 1 Mar 2012 20:22:57 +0100
Subject: [PATCH] Fix correct nfs path
---
modules.d/45url-lib/url-lib.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/45url-lib/url-lib.sh b/modules.d/45url-lib/url-lib.sh
index 383e7ac..1fc80a1 100755
--- a/modules.d/45url-lib/url-lib.sh
+++ b/modules.d/45url-lib/url-lib.sh
@@ -99,7 +99,7 @@ nfs_fetch_url() {
mntdir=$(nfs_already_mounted $server $path)
if [ -z "$mntdir" ]; then
local mntdir="$(mkuniqdir /run nfs_mnt)"
- mount_nfs $nfs:$server:$path${options:+:$options} $mntdir
+ mount_nfs $nfs:$server:$filepath${options:+:$options} $mntdir
# lazy unmount during pre-pivot hook
inst_hook --hook pre-pivot --name 99url-lib-umount-nfs umount -l $mntdir
fi

View File

@ -1,118 +0,0 @@
From ffcc64bdea9080c2a1430ba59720f583bc0ac908 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Wed, 29 Feb 2012 13:09:58 -0500
Subject: [PATCH] move emergency_shell to dracut-lib.sh
This lets things running outside init call an emergency_shell.
(example: scripts called by initqueue)
---
modules.d/99base/dracut-lib.sh | 38 ++++++++++++++++++++++++++++++++++++++
modules.d/99base/init.sh | 40 +---------------------------------------
2 files changed, 39 insertions(+), 39 deletions(-)
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index afd366e..c31854e 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -753,3 +753,41 @@ killproc() {
need_shutdown() {
>/run/initramfs/.need_shutdown
}
+
+emergency_shell()
+{
+ local _ctty
+ set +e
+ if [ "$1" = "-n" ]; then
+ _rdshell_name=$2
+ shift 2
+ else
+ _rdshell_name=dracut
+ fi
+ echo ; echo
+ warn $@
+ source_hook emergency
+ echo
+ wait_for_loginit
+ [ -e /run/initramfs/.die ] && exit 1
+ if getargbool 1 rd.shell -y rdshell || getarg rd.break rdbreak; then
+ echo "Dropping to debug shell."
+ echo
+ export PS1="$_rdshell_name:\${PWD}# "
+ [ -e /.profile ] || >/.profile
+ _ctty=/dev/console
+ if [ -n "$(command -v setsid)" ]; then
+ _ctty="$(getarg rd.ctty=)" && _ctty="/dev/${_ctty##*/}"
+ [ -c "$_ctty" ] || _ctty=/dev/tty1
+ setsid sh -i -l 0<$_ctty 1>$_ctty 2>&1
+ elif [ -n "$(command -v openvt)" ] && ! getarg "console=" >/dev/null 2>&1 && getargbool 1 "rd.openvt" ; then
+ openvt -f -c 1 -w -s -l -- sh
+ else
+ sh -i -l 0<$_ctty 1>$_ctty 2>&1
+ fi
+ else
+ warn "Boot has failed. To debug this issue add \"rdshell\" to the kernel command line."
+ # cause a kernel panic
+ exit 1
+ fi
+}
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index 4d0a2a2..d197497 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -38,54 +38,16 @@ wait_for_loginit()
rm -f /run/initramfs/loginit.pipe /run/initramfs/loginit.pid
}
-emergency_shell()
-{
- local _ctty
- set +e
- if [ "$1" = "-n" ]; then
- _rdshell_name=$2
- shift 2
- else
- _rdshell_name=dracut
- fi
- echo ; echo
- warn $@
- source_hook emergency
- echo
- wait_for_loginit
- [ -e /run/initramfs/.die ] && exit 1
- if getargbool 1 rd.shell -y rdshell || getarg rd.break rdbreak; then
- echo "Dropping to debug shell."
- echo
- export PS1="$_rdshell_name:\${PWD}# "
- [ -e /.profile ] || >/.profile
- _ctty=/dev/console
- if [ -n "$(command -v setsid)" ]; then
- _ctty="$(getarg rd.ctty=)" && _ctty="/dev/${_ctty##*/}"
- [ -c "$_ctty" ] || _ctty=/dev/tty1
- setsid sh -i -l 0<$_ctty 1>$_ctty 2>&1
- elif [ -n "$(command -v openvt)" ] && ! getarg "console=" >/dev/null 2>&1 && getargbool 1 "rd.openvt" ; then
- openvt -f -c 1 -w -s -l -- sh
- else
- sh -i -l 0<$_ctty 1>$_ctty 2>&1
- fi
- else
- warn "Boot has failed. To debug this issue add \"rdshell\" to the kernel command line."
- # cause a kernel panic
- exit 1
- fi
-}
-
NEWROOT="/sysroot"
[ -d $NEWROOT ] || mkdir -p -m 0755 $NEWROOT
-trap "emergency_shell Signal caught!" 0
OLDPATH=$PATH
PATH=/usr/sbin:/usr/bin:/sbin:/bin
export PATH
RD_DEBUG=""
. /lib/dracut-lib.sh
+trap "emergency_shell Signal caught!" 0
[ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3

View File

@ -1,30 +0,0 @@
From 8a0d2fc56feeb04d314a7fd6030bda5ce748b2f6 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Wed, 29 Feb 2012 13:09:57 -0500
Subject: [PATCH] url-lib: make nfs support optional
Only include /lib/nfs-lib.sh if it exists, and then only run
add_url_handler if nfs-lib was imported.
---
modules.d/45url-lib/url-lib.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules.d/45url-lib/url-lib.sh b/modules.d/45url-lib/url-lib.sh
index 1fc80a1..043a700 100755
--- a/modules.d/45url-lib/url-lib.sh
+++ b/modules.d/45url-lib/url-lib.sh
@@ -74,7 +74,7 @@ set_http_header() {
### NFS ##############################################################
-. /lib/nfs-lib.sh
+[ -e /lib/nfs-lib.sh ] && . /lib/nfs-lib.sh
nfs_already_mounted() {
local server="$1" path="$2" localdir="" s="" p=""
@@ -112,4 +112,4 @@ nfs_fetch_url() {
[ -f "$outloc" ] || return 253
echo "$outloc"
}
-add_url_handler nfs_fetch_url nfs nfs4
+command -v nfs_to_var >/dev/null && add_url_handler nfs_fetch_url nfs nfs4

View File

@ -1,29 +0,0 @@
From a3f00efc99ac4736be3a1e24259d691bb9a9e19d Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 8 Mar 2012 10:58:16 +0100
Subject: [PATCH] 40network/kill-dhclient.sh: kill dhclient silently
---
modules.d/40network/kill-dhclient.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules.d/40network/kill-dhclient.sh b/modules.d/40network/kill-dhclient.sh
index 2f834c1..78060f5 100755
--- a/modules.d/40network/kill-dhclient.sh
+++ b/modules.d/40network/kill-dhclient.sh
@@ -5,7 +5,7 @@
for f in /tmp/dhclient.*.pid; do
[ -e $f ] || continue
read PID < $f;
- kill $PID;
+ kill $PID >/dev/null 2>&1
done
sleep 0.1
@@ -13,5 +13,5 @@ sleep 0.1
for f in /tmp/dhclient.*.pid; do
[ -e $f ] || continue
read PID < $f;
- kill -9 $PID;
+ kill -9 $PID >/dev/null 2>&1
done

View File

@ -1,34 +0,0 @@
From d37ad6aea04932196df06139b27d3869385617f9 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Wed, 7 Mar 2012 17:21:53 -0500
Subject: [PATCH] write-ifcfg.sh: cleanups
mkdir -p creates intermediate directories and never returns an error, so
we don't need to create the intermediate directories ourself.
---
modules.d/45ifcfg/write-ifcfg.sh | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
index d633a96..0f431e3 100755
--- a/modules.d/45ifcfg/write-ifcfg.sh
+++ b/modules.d/45ifcfg/write-ifcfg.sh
@@ -134,11 +134,10 @@ for netif in $IFACES ; do
done
# Pass network opts
-[ -d /run/initramfs ] || mkdir -m 0755 -p /run/initramfs
-cp /tmp/net.* /run/initramfs/ >/dev/null 2>&1
-for i in /run/initramfs/state /run/initramfs/state/etc/ /run/initramfs/state/etc/sysconfig /run/initramfs/state/etc/sysconfig/network-scripts; do
- [ -d $i ] || mkdir -m 0755 -p $i
-done
-cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/ >/dev/null 2>&1
-echo "files /etc/sysconfig/network-scripts" > /run/initramfs/rwtab
-cp -a -t /run/initramfs/state/etc/sysconfig/network-scripts/ /tmp/ifcfg/* >/dev/null 2>&1
+mkdir -m 0755 -p /run/initramfs/state/etc/sysconfig/network-scripts
+echo "files /etc/sysconfig/network-scripts" >> /run/initramfs/rwtab
+{
+ cp /tmp/net.* /run/initramfs/
+ cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/
+ cp -a -t /run/initramfs/state/etc/sysconfig/network-scripts/ /tmp/ifcfg/*
+} > /dev/null 2>&1

View File

@ -1,62 +0,0 @@
From 66666c670a462548df4ea4c8069d54b8c309ecf4 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Wed, 7 Mar 2012 17:21:54 -0500
Subject: [PATCH] write-ifcfg.sh: add UUID=.. and save the lease files with
the same uuid
As described in https://bugzilla.redhat.com/show_bug.cgi?id=541410#c2,
if you want NetworkManager to take over an interface that you're using
for NFS root (or other network root device), you need to:
a) set UUID=<uuid> in ifcfg-<iface>, and
b) save the lease file as /var/lib/dhclient-<uuid>-<iface>.lease
This patch should make write-ifcfg handle both these things.
---
modules.d/45ifcfg/write-ifcfg.sh | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/modules.d/45ifcfg/write-ifcfg.sh b/modules.d/45ifcfg/write-ifcfg.sh
index 0f431e3..fe986df 100755
--- a/modules.d/45ifcfg/write-ifcfg.sh
+++ b/modules.d/45ifcfg/write-ifcfg.sh
@@ -18,11 +18,13 @@ if [ -e /tmp/bridge.info ]; then
fi
mkdir -m 0755 -p /tmp/ifcfg/
+mkdir -m 0755 -p /tmp/ifcfg-leases/
for netif in $IFACES ; do
# bridge?
unset bridge
unset bond
+ uuid=$(cat /proc/sys/kernel/random/uuid)
if [ "$netif" = "$bridgename" ]; then
bridge=yes
elif [ "$netif" = "$bondname" ]; then
@@ -35,10 +37,12 @@ for netif in $IFACES ; do
echo "DEVICE=$netif"
echo "ONBOOT=yes"
echo "NETBOOT=yes"
+ echo "UUID=$uuid"
if [ -f /tmp/net.$netif.lease ]; then
strstr "$ip" '*:*:*' &&
echo "DHCPV6C=yes"
echo "BOOTPROTO=dhcp"
+ cp /tmp/net.$netif.lease /tmp/ifcfg-leases/dhclient-$uuid-$netif.lease
else
echo "BOOTPROTO=none"
# If we've booted with static ip= lines, the override file is there
@@ -135,9 +139,12 @@ done
# Pass network opts
mkdir -m 0755 -p /run/initramfs/state/etc/sysconfig/network-scripts
+mkdir -m 0755 -p /run/initramfs/state/var/lib/dhclient
echo "files /etc/sysconfig/network-scripts" >> /run/initramfs/rwtab
+echo "files /var/lib/dhclient" >> /run/initramfs/rwtab
{
cp /tmp/net.* /run/initramfs/
cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/
cp -a -t /run/initramfs/state/etc/sysconfig/network-scripts/ /tmp/ifcfg/*
+ cp /tmp/ifcfg-leases/* /run/initramfs/state/var/lib/dhclient
} > /dev/null 2>&1

View File

@ -1,40 +0,0 @@
From b43d651511df184fcdc1677e11166bae2f61073a Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Wed, 7 Mar 2012 17:22:18 -0500
Subject: [PATCH] fix apply-live-updates failing because of /lib symlink
Since cp won't copy a directory over a symlink, any updates that were
supposed to go into e.g. /lib would get dropped if you had /updates/lib
as an actual directory, but the target system had /lib->/usr/lib.
---
modules.d/90dmsquash-live/apply-live-updates.sh | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/modules.d/90dmsquash-live/apply-live-updates.sh b/modules.d/90dmsquash-live/apply-live-updates.sh
index f840d1a..144e8b9 100755
--- a/modules.d/90dmsquash-live/apply-live-updates.sh
+++ b/modules.d/90dmsquash-live/apply-live-updates.sh
@@ -1,9 +1,17 @@
#!/bin/sh
-if [ -b /dev/mapper/live-rw ]; then
- if [ -d /updates ]; then
- echo "Applying updates to live image..."
+
+. /tmp/root.info
+
+if [ -b /dev/mapper/live-rw ] && [ -d /updates ]; then
+ info "Applying updates to live image..."
+ # avoid overwriting symlinks (e.g. /lib -> /usr/lib) with directories
+ (
cd /updates
- /bin/cp -a -t $NEWROOT .
- cd -
- fi
+ find . -depth -type d | while read dir; do
+ [ -d "$NEWROOT/$dir" ] || mkdir -p "$NEWROOT/$dir"
+ done
+ find . -depth \! -type d | while read file; do
+ cp -a "$file" "$NEWROOT/$file"
+ done
+ )
fi

View File

@ -1,47 +0,0 @@
From af8c8ed9f651b1617296a2d7654a981f006c5ad3 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 2 Mar 2012 11:39:11 +0100
Subject: [PATCH] 40network/net-genrules.sh: move ifup in the initqueue
---
modules.d/40network/net-genrules.sh | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
index 323d185..6c46d9a 100755
--- a/modules.d/40network/net-genrules.sh
+++ b/modules.d/40network/net-genrules.sh
@@ -36,27 +36,27 @@ fix_bootif() {
if [ -n "$BOOTIF" ] ; then
BOOTIF=$(fix_bootif "$BOOTIF")
if [ -n "$netroot" ]; then
- printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$BOOTIF"
+ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE}"\n' "$BOOTIF"
else
- printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/ifup $env{INTERFACE} -m"\n' "$BOOTIF"
+ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE} -m"\n' "$BOOTIF"
fi
# If we have to handle multiple interfaces, handle only them.
elif [ -n "$IFACES" ] ; then
for iface in $IFACES ; do
if [ -n "$netroot" ]; then
- printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/ifup $env{INTERFACE}"\n' "$iface"
+ printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE}"\n' "$iface"
else
- printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/ifup $env{INTERFACE} -m"\n' "$iface"
+ printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE} -m"\n' "$iface"
fi
done
# Default: We don't know the interface to use, handle all
else
if [ -n "$netroot" ]; then
- printf 'SUBSYSTEM=="net", OPTIONS+="event_timeout=360", RUN+="/sbin/ifup $env{INTERFACE}"\n'
+ printf 'SUBSYSTEM=="net", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE}"\n'
else
- printf 'SUBSYSTEM=="net", OPTIONS+="event_timeout=360", RUN+="/sbin/ifup $env{INTERFACE} -m"\n'
+ printf 'SUBSYSTEM=="net", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE} -m"\n'
fi
fi

View File

@ -1,24 +0,0 @@
From 6a2c23d12521c564a3c8bbfc349c677b0e9ac3ad Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 2 Mar 2012 12:01:49 +0100
Subject: [PATCH] dracut-functions.sh: check for .kernelmodseen dir, before
using it
---
dracut-functions.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 20fc6e1..5cf24a7 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -994,7 +994,8 @@ install_kmod_with_fw() {
fi
fi
- > "$initdir/.kernelmodseen/${1##*/}"
+ [ -d "$initdir/.kernelmodseen" ] && \
+ > "$initdir/.kernelmodseen/${1##*/}"
inst_simple "$1" "/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" \
|| return $?

View File

@ -1,22 +0,0 @@
From 5861184e87e9d9164c093d3600d85c670c828886 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 2 Mar 2012 12:03:38 +0100
Subject: [PATCH] ifup.sh: check for "-m" to set manualup
---
modules.d/40network/ifup.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index b138e8e..b55362c 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -50,7 +50,7 @@ fi
# disable manual ifup while netroot is set for simplifying our logic
# in netroot case we prefer netroot to bringup $netif automaticlly
-[ -n "$2" ] && [ -z "$netroot" ] && manualup="$2"
+[ -n "$2" -a "$2" = "-m" ] && [ -z "$netroot" ] && manualup="$2"
[ -z "$netroot" ] && [ -z "$manualup" ] && exit 0
[ -n "$manualup" ] && >/tmp/net.$netif.manualup

View File

@ -1,130 +0,0 @@
From 2c0317213ebe3a6cd0f0db5fb5b7a3da0d42cdda Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 2 Mar 2012 14:25:57 +0100
Subject: [PATCH] get rid of /tmp/root.info
---
modules.d/40network/ifup.sh | 2 --
modules.d/40network/netroot.sh | 2 --
modules.d/90dmsquash-live/apply-live-updates.sh | 2 --
modules.d/90dmsquash-live/dmsquash-live-root.sh | 2 --
modules.d/90livenet/livenetroot.sh | 1 -
modules.d/95iscsi/iscsiroot.sh | 5 +----
modules.d/99base/init.sh | 11 ++---------
7 files changed, 3 insertions(+), 22 deletions(-)
diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh
index b55362c..ffae15c 100755
--- a/modules.d/40network/ifup.sh
+++ b/modules.d/40network/ifup.sh
@@ -45,8 +45,6 @@ fi
# bail immediately if the interface is already up
# or we don't need the network
[ -f "/tmp/net.$netif.up" ] && exit 0
-[ -f "/tmp/root.info" ] || exit 0
-. /tmp/root.info
# disable manual ifup while netroot is set for simplifying our logic
# in netroot case we prefer netroot to bringup $netif automaticlly
diff --git a/modules.d/40network/netroot.sh b/modules.d/40network/netroot.sh
index f44a97b..c5ee84c 100755
--- a/modules.d/40network/netroot.sh
+++ b/modules.d/40network/netroot.sh
@@ -15,8 +15,6 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
# instead of real netroot; If It's called without $2, then there's
# no sense in doing something if no (net)root info is available
# or root is already there
-[ -e /tmp/root.info ] || exit 1
-. /tmp/root.info
if [ -z "$2" ]; then
[ -d $NEWROOT/proc ] && exit 0
[ -z "$netroot" ] && exit 1
diff --git a/modules.d/90dmsquash-live/apply-live-updates.sh b/modules.d/90dmsquash-live/apply-live-updates.sh
index 144e8b9..61da4bf 100755
--- a/modules.d/90dmsquash-live/apply-live-updates.sh
+++ b/modules.d/90dmsquash-live/apply-live-updates.sh
@@ -1,7 +1,5 @@
#!/bin/sh
-. /tmp/root.info
-
if [ -b /dev/mapper/live-rw ] && [ -d /updates ]; then
info "Applying updates to live image..."
# avoid overwriting symlinks (e.g. /lib -> /usr/lib) with directories
diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh
index e3606cf..8a21e44 100755
--- a/modules.d/90dmsquash-live/dmsquash-live-root.sh
+++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh
@@ -5,8 +5,6 @@
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
type det_fs >/dev/null 2>&1 || . /lib/fs-lib.sh
-[ -f /tmp/root.info ] && . /tmp/root.info
-
PATH=/usr/sbin:/usr/bin:/sbin:/bin
if getargbool 0 rd.live.debug -y rdlivedebug; then
diff --git a/modules.d/90livenet/livenetroot.sh b/modules.d/90livenet/livenetroot.sh
index bc62760..617be62 100755
--- a/modules.d/90livenet/livenetroot.sh
+++ b/modules.d/90livenet/livenetroot.sh
@@ -2,7 +2,6 @@
# livenetroot - fetch a live image from the network and run it
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
-[ -f /tmp/root.info ] && . /tmp/root.info
. /lib/url-lib.sh
diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
index 7b8f63e..1bd6dd3 100755
--- a/modules.d/95iscsi/iscsiroot.sh
+++ b/modules.d/95iscsi/iscsiroot.sh
@@ -37,9 +37,6 @@ iroot=${iroot#iscsi:}
# figured out a way how to check whether this is built-in or not
modprobe crc32c 2>/dev/null
-
-[ -e /tmp/root.info ] && . /tmp/root.info
-
[ -e /sys/module/bnx2i ] && iscsiuio
if getargbool 0 rd.iscsi.firmware -y iscsi_firmware ; then
@@ -54,7 +51,7 @@ fi
unset iscsi_initiator iscsi_target_name iscsi_target_ip iscsi_target_port
unset iscsi_target_group iscsi_protocol iscsirw iscsi_lun
-unset iscsi_username iscsi_password
+unset iscsi_username iscsi_password
unset iscsi_in_username iscsi_in_password
# override conf settings by command line options
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index d197497..96fd5f2 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -131,15 +131,7 @@ source_hook cmdline
[ -z "$root" ] && die "No or empty root= argument"
[ -z "$rootok" ] && die "Don't know how to handle 'root=$root'"
-# Network root scripts may need updated root= options,
-# so deposit them where they can see them (udev purges the env)
-{
- echo "root='$root'"
- echo "rflags='$rflags'"
- echo "fstype='$fstype'"
- echo "netroot='$netroot'"
- echo "NEWROOT='$NEWROOT'"
-} > /tmp/root.info
+export root rflags fstype netroot NEWROOT
# pre-udev scripts run before udev starts, and are run only once.
getarg 'rd.break=pre-udev' 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break before pre-udev"
@@ -314,6 +306,7 @@ else
fi
export RD_TIMESTAMP
+export -n root rflags fstype netroot NEWROOT
set +x # Turn off debugging for this section
# Clean up the environment
for i in $(export -p); do

View File

@ -1,47 +0,0 @@
From b8a9dc2d3fdd7596d4d968f761f56f6ced06e9db Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 2 Mar 2012 13:58:48 +0100
Subject: [PATCH] TEST-20-NFS: use ext3 on server and fsck after kill
---
test/TEST-20-NFS/test.sh | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh
index c6a9670..fcd424f 100755
--- a/test/TEST-20-NFS/test.sh
+++ b/test/TEST-20-NFS/test.sh
@@ -12,8 +12,9 @@ run_server() {
# Start server first
echo "NFS TEST SETUP: Starting DHCP/NFS server"
+ fsck $TESTDIR/server.ext3 || return 1
$testdir/run-qemu \
- -hda $TESTDIR/server.ext2 -m 256M -nographic \
+ -hda $TESTDIR/server.ext3 -m 256M -nographic \
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \
-net socket,listen=127.0.0.1:12320 \
-serial $SERIAL \
@@ -203,10 +204,10 @@ test_run() {
test_setup() {
# Make server root
- dd if=/dev/null of=$TESTDIR/server.ext2 bs=1M seek=60
- mke2fs -F $TESTDIR/server.ext2
+ dd if=/dev/null of=$TESTDIR/server.ext3 bs=1M seek=60
+ mke2fs -j -F $TESTDIR/server.ext3
mkdir $TESTDIR/mnt
- sudo mount -o loop $TESTDIR/server.ext2 $TESTDIR/mnt
+ sudo mount -o loop $TESTDIR/server.ext3 $TESTDIR/mnt
kernel=$KVERSION
(
@@ -307,7 +308,7 @@ test_setup() {
# Make server's dracut image
$basedir/dracut.sh -l -i $TESTDIR/overlay / \
-m "dash udev-rules base rootfs-block debug kernel-modules" \
- -d "piix ide-gd_mod ata_piix ext2 sd_mod e1000" \
+ -d "piix ide-gd_mod ata_piix ext3 sd_mod e1000" \
-f $TESTDIR/initramfs.server $KVERSION || return 1
# Make client's dracut image

View File

@ -1,60 +0,0 @@
From 4fed3ddf16431524f07fc8bbad6aec913b6c0777 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 2 Mar 2012 14:46:11 +0100
Subject: [PATCH] add "initqueue/*" to hookdirs and create them in dracut
itsself
now we can just use
inst_hook initqueue/settled 99 "$moddir/pollcdrom.sh"
---
dracut-functions.sh | 6 ++++--
dracut.sh | 3 +++
modules.d/99base/module-setup.sh | 4 ----
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 5cf24a7..05c1d3a 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -34,8 +34,10 @@ fi
# export standard hookdirs
[[ $hookdirs ]] || {
- hookdirs="cmdline pre-udev pre-trigger netroot initqueue pre-mount"
- hookdirs+=" pre-pivot mount emergency shutdown-emergency shutdown cleanup"
+ hookdirs="cmdline pre-udev pre-trigger netroot "
+ hookdirs+="initqueue initqueue/settled initqueue/finished initqueue/timeout "
+ hookdirs+="pre-mount pre-pivot mount "
+ hookdirs+="emergency shutdown-emergency shutdown cleanup "
export hookdirs
}
diff --git a/dracut.sh b/dracut.sh
index 88691ae..417008c 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -674,6 +674,9 @@ fi
if [[ $kernel_only != yes ]]; then
mkdir -p "${initdir}/etc/cmdline.d"
+ for _d in $hookdirs; do
+ mkdir -m 0755 -p ${initdir}/lib/dracut/hooks/$_d
+ done
fi
mkdir -p "$initdir/.kernelmodseen"
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
index fd92644..5a97770 100755
--- a/modules.d/99base/module-setup.sh
+++ b/modules.d/99base/module-setup.sh
@@ -33,10 +33,6 @@ install() {
[ -e "${initdir}/lib" ] || mkdir -m 0755 -p ${initdir}/lib
mkdir -m 0755 -p ${initdir}/lib/dracut
mkdir -m 0755 -p ${initdir}/lib/dracut/hooks
- for _d in $hookdirs emergency \
- initqueue initqueue/timeout initqueue/finished initqueue/settled; do
- mkdir -m 0755 -p ${initdir}/lib/dracut/hooks/$_d
- done
mkdir -p ${initdir}/tmp

View File

@ -1,90 +0,0 @@
From 74db72dd0b22973cfd9f3cbe832b09096c4e7ab9 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 2 Mar 2012 14:53:22 +0100
Subject: [PATCH] 98pollcdrom: factored out the ugly cdrom polling in the main
loop
---
modules.d/98pollcdrom/module-setup.sh | 16 ++++++++++++++++
modules.d/98pollcdrom/pollcdrom.sh | 23 +++++++++++++++++++++++
modules.d/99base/init.sh | 14 --------------
3 files changed, 39 insertions(+), 14 deletions(-)
create mode 100755 modules.d/98pollcdrom/module-setup.sh
create mode 100644 modules.d/98pollcdrom/pollcdrom.sh
diff --git a/modules.d/98pollcdrom/module-setup.sh b/modules.d/98pollcdrom/module-setup.sh
new file mode 100755
index 0000000..e80ae16
--- /dev/null
+++ b/modules.d/98pollcdrom/module-setup.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+check() {
+ return 255
+}
+
+depends() {
+ return 0
+}
+
+install() {
+ inst_hook initqueue/settled 99 "$moddir/pollcdrom.sh"
+}
+
diff --git a/modules.d/98pollcdrom/pollcdrom.sh b/modules.d/98pollcdrom/pollcdrom.sh
new file mode 100644
index 0000000..4abc9d7
--- /dev/null
+++ b/modules.d/98pollcdrom/pollcdrom.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+#
+# Licensed under the GPLv2
+#
+# Copyright 2008-2012, Red Hat, Inc.
+# Harald Hoyer <harald@redhat.com>
+
+if [ ! -e /sys/module/block/parameters/events_dfl_poll_msecs ]; then
+ # if the kernel does not support autopolling
+ # then we have to do a
+ # dirty hack for some cdrom drives,
+ # which report no medium for quiet
+ # some time.
+ for cdrom in /sys/block/sr*; do
+ [ -e "$cdrom" ] || continue
+ # skip, if cdrom medium was already found
+ strstr "$(udevadm info --query=env --path=${cdrom##/sys})" \
+ ID_CDROM_MEDIA && continue
+ echo change > "$cdrom/uevent"
+ done
+fi
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index 96fd5f2..f6e4027 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -199,20 +199,6 @@ while :; do
# no more udev jobs and queues empty.
sleep 0.5
- if [ ! -e /sys/module/block/parameters/events_dfl_poll_msecs ]; then
- # if the kernel does not support autopolling
- # then we have to do a
- # dirty hack for some cdrom drives,
- # which report no medium for quiet
- # some time.
- for cdrom in /sys/block/sr*; do
- [ -e "$cdrom" ] || continue
- # skip, if cdrom medium was already found
- strstr "$(udevadm info --query=env --path=${cdrom##/sys})" \
- ID_CDROM_MEDIA && continue
- echo change > "$cdrom/uevent"
- done
- fi
if [ $main_loop -gt $(($RDRETRY/2)) ]; then
for job in $hookdir/initqueue/timeout/*.sh; do

View File

@ -1,88 +0,0 @@
From 4d518aec8614cafe96f585458f97e43d80fe3aa5 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Fri, 2 Mar 2012 15:08:25 +0100
Subject: [PATCH] move wait_for_loginit() to dracut-lib.sh
---
modules.d/99base/dracut-lib.sh | 28 ++++++++++++++++++++++++++++
modules.d/99base/init.sh | 28 ----------------------------
2 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index c31854e..80e093b 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -754,6 +754,34 @@ need_shutdown() {
>/run/initramfs/.need_shutdown
}
+wait_for_loginit()
+{
+ set +x
+ [ "$RD_DEBUG" = "yes" ] || return
+ [ -e /run/initramfs/loginit.pipe ] || return
+ echo "DRACUT_LOG_END"
+ exec 0<>/dev/console 1<>/dev/console 2<>/dev/console
+ # wait for loginit
+ i=0
+ while [ $i -lt 10 ]; do
+ if [ ! -e /run/initramfs/loginit.pipe ]; then
+ j=$(jobs)
+ [ -z "$j" ] && break
+ [ -z "${j##*Running*}" ] || break
+ fi
+ sleep 0.1
+ i=$(($i+1))
+ done
+
+ if [ $i -eq 10 ]; then
+ kill %1 >/dev/null 2>&1
+ kill $(while read line;do echo $line;done</run/initramfs/loginit.pid)
+ fi
+
+ set -x
+ rm -f /run/initramfs/loginit.pipe /run/initramfs/loginit.pid
+}
+
emergency_shell()
{
local _ctty
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index f6e4027..5d51c9d 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -10,34 +10,6 @@
export -p > /tmp/export.orig
-wait_for_loginit()
-{
- set +x
- [ "$RD_DEBUG" = "yes" ] || return
- [ -e /run/initramfs/loginit.pipe ] || return
- echo "DRACUT_LOG_END"
- exec 0<>/dev/console 1<>/dev/console 2<>/dev/console
- # wait for loginit
- i=0
- while [ $i -lt 10 ]; do
- if [ ! -e /run/initramfs/loginit.pipe ]; then
- j=$(jobs)
- [ -z "$j" ] && break
- [ -z "${j##*Running*}" ] || break
- fi
- sleep 0.1
- i=$(($i+1))
- done
-
- if [ $i -eq 10 ]; then
- kill %1 >/dev/null 2>&1
- kill $(while read line;do echo $line;done</run/initramfs/loginit.pid)
- fi
-
- set -x
- rm -f /run/initramfs/loginit.pipe /run/initramfs/loginit.pid
-}
-
NEWROOT="/sysroot"
[ -d $NEWROOT ] || mkdir -p -m 0755 $NEWROOT

View File

@ -1,322 +0,0 @@
From 25aa3c5a6eb48d14972b5c658cc7231d8f100ea8 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Tue, 6 Mar 2012 18:25:24 -0500
Subject: [PATCH] network: refactor stuff from netroot/parse-ip-opts to
net-lib
Add new functions: all_ifaces_up, get_netroot_ip, ip_is_local, ifdown,
setup_net, set_ifname, ibft_to_cmdline
Use them in netroot.sh and parse-ip-opts.sh.
There's also a couple little unrelated cleanups.
---
modules.d/40network/net-lib.sh | 108 ++++++++++++++++++++++++++++++++++
modules.d/40network/netroot.sh | 71 ++--------------------
modules.d/40network/parse-ip-opts.sh | 46 ++-------------
3 files changed, 120 insertions(+), 105 deletions(-)
diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh
index e3987a4..e51ce94 100644
--- a/modules.d/40network/net-lib.sh
+++ b/modules.d/40network/net-lib.sh
@@ -31,3 +31,111 @@ iface_has_link() {
[ "$(cat $interface/carrier)" = 1 ] || return 1
# XXX Do we need to reset the flags here? anaconda never bothered..
}
+
+all_ifaces_up() {
+ local iface="" IFACES=""
+ [ -e "/tmp/net.ifaces" ] && read IFACES < /tmp/net.ifaces
+ for iface in $IFACES; do
+ [ -e /tmp/net.$iface.up ] || return 1
+ done
+}
+
+get_netroot_ip() {
+ local prefix="" server="" rest=""
+ splitsep "$1" ":" prefix server rest
+ case $server in
+ [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*) echo "$server"; return 0 ;;
+ esac
+ return 1
+}
+
+ip_is_local() {
+ strstr "$(ip route get $1 2>/dev/null)" " via "
+}
+
+ifdown() {
+ local netif="$1"
+ # ip down/flush ensures that routing info goes away as well
+ ip link set $netif down
+ ip addr flush dev $netif
+ echo "#empty" > /etc/resolv.conf
+ # TODO: send "offline" uevent?
+}
+
+setup_net() {
+ local netif="$1" f="" gw_ip="" netroot_ip="" iface="" IFACES=""
+ [ -e /tmp/net.$netif.up ] || return 1
+ [ -e "/tmp/net.ifaces" ] && read IFACES < /tmp/net.ifaces
+ [ -z "$IFACES" ] && IFACES="$netif"
+ for iface in $IFACES ; do
+ . /tmp/net.$iface.up
+ done
+ # run the scripts written by ifup
+ [ -e /tmp/net.$netif.gw ] && . /tmp/net.$netif.gw
+ [ -e /tmp/net.$netif.hostname ] && . /tmp/net.$netif.hostname
+ [ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
+ [ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
+ # set up resolv.conf
+ [ -e /tmp/net.$netif.resolv.conf ] && \
+ cp -f /tmp/net.$netif.resolv.conf /etc/resolv.conf
+
+ # Handle STP Timeout: arping the default gateway.
+ # (or the root server, if a) it's local or b) there's no gateway.)
+ # Note: This assumes that if no router is present the
+ # root server is on the same subnet.
+
+ # Get DHCP-provided router IP, or the cmdline-provided "gw=" argument
+ [ -n "$new_routers" ] && gw_ip=${new_routers%%,*}
+ [ -n "$gw" ] && gw_ip=$gw
+
+ # Get the "netroot" IP (if there's an IP address in there)
+ netroot_ip=$(get_netroot_ip $netroot)
+
+ # try netroot if it's local (or there's no gateway)
+ if ip_is_local $netroot_ip || [ -z "$gw_ip" ]; then
+ dest="$netroot_ip"
+ else
+ dest="$gw_ip"
+ fi
+ if [ -n "$dest" ] && ! arping -q -f -w 60 -I $netif $dest ; then
+ info "Resolving $dest via ARP on $netif failed"
+ fi
+}
+
+set_ifname() {
+ local name="$1" mac="$2" num=0 n=""
+ # if it's already set, return the existing name
+ for n in $(getargs ifname=); do
+ strstr "$n" "$mac" && echo ${n%%:*} && return
+ done
+ # otherwise, pick a new name and use that
+ while [ -e /sys/class/$name$num ]; do num=$(($num+1)); done
+ echo "ifname=$name$num:$mac" >> /etc/cmdline.d/45-ifname.conf
+ echo "$name$num"
+}
+
+ibft_to_cmdline() {
+ local iface="" mac="" dev=""
+ local dhcp="" ip="" gw="" mask="" hostname=""
+ modprobe -q iscsi_ibft
+ (
+ for iface in /sys/firmware/ibft/ethernet*; do
+ [ -e ${iface}/mac ] || continue
+ mac=$(read a < ${iface}/mac; echo $a)
+ [ -z "$ifname_mac" ] && continue
+ dev=$(set_ifname ibft $ifname_mac)
+ dhcp=$(read a < ${iface}/dhcp; echo $a)
+ if [ -n "$dhcp" ]; then
+ echo "ip=$dev:dhcp"
+ else
+ ip=$(read a < ${iface}/ip-addr; echo $a)
+ gw=$(read a < ${iface}/gateway; echo $a)
+ mask=$(read a < ${iface}/subnet-mask; echo $a)
+ hostname=$(read a < ${iface}/hostname; echo $a)
+ echo "ip=$ip::$gw:$mask:$hostname:$dev:none"
+ fi
+ done
+ ) >> /etc/cmdline.d/40-ibft.conf
+ # reread cmdline
+ unset CMDLINE
+}
diff --git a/modules.d/40network/netroot.sh b/modules.d/40network/netroot.sh
index c5ee84c..ac1c215 100755
--- a/modules.d/40network/netroot.sh
+++ b/modules.d/40network/netroot.sh
@@ -3,14 +3,12 @@
# ex: ts=8 sw=4 sts=4 et filetype=sh
PATH=/usr/sbin:/usr/bin:/sbin:/bin
-type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+command -v getarg >/dev/null || . /lib/dracut-lib.sh
+command -v setup_net >/dev/null || . /lib/net-lib.sh
# Huh? Empty $1?
[ -z "$1" ] && exit 1
-# Huh? No interface config?
-[ ! -e /tmp/net.$1.up ] && exit 1
-
# [ ! -z $2 ] means this is for manually bringing up network
# instead of real netroot; If It's called without $2, then there's
# no sense in doing something if no (net)root info is available
@@ -23,10 +21,7 @@ fi
# Let's see if we have to wait for other interfaces
# Note: exit works just fine, since the last interface to be
# online'd should see all files
-[ -e "/tmp/net.ifaces" ] && read IFACES < /tmp/net.ifaces
-for iface in $IFACES ; do
- [ -e /tmp/net.$iface.up ] || exit 1
-done
+all_ifaces_up || exit 1
# Set or override primary interface
netif=$1
@@ -78,62 +73,13 @@ if [ -z "$2" ]; then
fi
# We're here, so we can assume that upping interfaces is now ok
-[ -z "$IFACES" ] && IFACES="$netif"
-for iface in $IFACES ; do
- . /tmp/net.$iface.up
-done
-
-[ -e /tmp/net.$netif.gw ] && . /tmp/net.$netif.gw
-[ -e /tmp/net.$netif.hostname ] && . /tmp/net.$netif.hostname
-[ -e /tmp/net.$netif.resolv.conf ] && cp -f /tmp/net.$netif.resolv.conf /etc/resolv.conf
-
-# Load interface options
-[ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
-[ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
-
-# Handle STP Timeout: arping the default router if root server is
-# unknown or not local, or if not available the root server.
-# Note: This assumes that if no router is present the
-# root server is on the same subnet.
-#
-# TODO There's some netroot variants that don't (yet) have their
-# server-ip netroot
-
-# Get router IP if set
-[ -n "$new_routers" ] && gw_ip=${new_routers%%,*}
-[ -n "$gw" ] && gw_ip=$gw
-# Get root server IP if set
-if [ -n "$netroot" ]; then
- dummy=${netroot#*:}
- dummy=${dummy%%:*}
- case "$dummy" in
- [0-9]*\.[0-9]*\.[0-9]*\.[0-9]*) netroot_ip=$dummy;;
- esac
-fi
-# Default arping dest to router
-dest="$gw_ip"
-# Change to arping root server if appropriate
-if [ -n "$netroot_ip" ]; then
- if [ -z "$dest" ]; then
- # no gateway so check root server
- dest="$netroot_ip"
- else
- r=$(ip route get "$netroot_ip")
- if ! strstr "$r" ' via ' ; then
- # local root server, so don't arping gateway
- dest="$netroot_ip"
- fi
- fi
-fi
-if [ -n "$dest" ] && ! arping -q -f -w 60 -I $netif $dest ; then
- dinfo "Resolving $dest via ARP on $netif failed"
-fi
+setup_net $netif
# exit in case manually bring up network
[ -n "$2" ] && exit 0
# Source netroot hooks before we start the handler
-source_all $hookdir/netroot
+source_hook netroot
# Run the handler; don't store the root, it may change from device to device
# XXX other variables to export?
@@ -149,11 +95,6 @@ if $handler $netif $netroot $NEWROOT; then
else
warn "Mounting root via '$netif' failed"
# If we're trying with multiple interfaces, put that one down.
- # ip down/flush ensures that routeing info goes away as well
- if [ -z "$BOOTDEV" ] ; then
- ip link set $netif down
- ip addr flush dev $netif
- echo "#empty" > /etc/resolv.conf
- fi
+ [ -z "$BOOTDEV" ] && ifdown $netif
fi
exit 0
diff --git a/modules.d/40network/parse-ip-opts.sh b/modules.d/40network/parse-ip-opts.sh
index c97941e..7851329 100755
--- a/modules.d/40network/parse-ip-opts.sh
+++ b/modules.d/40network/parse-ip-opts.sh
@@ -14,7 +14,8 @@
# routing,dns,dhcp-options,etc.
#
-type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+command -v getarg >/dev/null || . /lib/dracut-lib.sh
+command -v ibft_to_cmdline >/dev/null || . /lib/net-lib.sh
# Check if ip= lines should be used
if getarg ip= >/dev/null ; then
@@ -52,50 +53,15 @@ if [ -n "$NEEDBOOTDEV" ] ; then
[ -z "$BOOTDEV" ] && die "Bootdev argument is empty"
fi
-if [ "ibft" = "$(getarg ip=)" ]; then
- modprobe iscsi_ibft
- num=0
- (
- for iface in /sys/firmware/ibft/ethernet*; do
- [ -e ${iface}/mac ] || continue
- ifname_mac=$(read a < ${iface}/mac; echo $a)
- [ -z "$ifname_mac" ] && continue
- unset dev
- for ifname in $(getargs ifname=); do
- if strstr "$ifname" "$ifname_mac"; then
- dev=${ifname%%:*}
- break
- fi
- done
- if [ -z "$dev" ]; then
- ifname_if=ibft$num
- num=$(( $num + 1 ))
- echo "ifname=$ifname_if:$ifname_mac"
- dev=$ifname_if
- fi
-
- dhcp=$(read a < ${iface}/dhcp; echo $a)
- if [ -n "$dhcp" ]; then
- echo "ip=$dev:dhcp"
- else
- ip=$(read a < ${iface}/ip-addr; echo $a)
- gw=$(read a < ${iface}/gateway; echo $a)
- mask=$(read a < ${iface}/subnet-mask; echo $a)
- hostname=$(read a < ${iface}/hostname; echo $a)
- echo "ip=$ip::$gw:$mask:$hostname:$dev:none"
- fi
- done
- ) >> /etc/cmdline
- # reread cmdline
- unset CMDLINE
-fi
+# If ibft is requested, read ibft vals and write ip=XXX cmdline args
+[ "ibft" = "$(getarg ip=)" ] && ibft_to_cmdline
# Check ip= lines
# XXX Would be nice if we could errorcheck ip addresses here as well
for p in $(getargs ip=); do
ip_to_var $p
- # skip ibft
+ # skip ibft since we did it above
[ "$autoconf" = "ibft" ] && continue
# We need to have an ip= line for the specified bootdev
@@ -111,7 +77,7 @@ for p in $(getargs ip=); do
case $autoconf in
error) die "Error parsing option 'ip=$p'";;
bootp|rarp|both) die "Sorry, ip=$autoconf is currenty unsupported";;
- none|off) \
+ none|off)
[ -z "$ip" ] && \
die "For argument 'ip=$p'\nValue '$autoconf' without static configuration does not make sense"
[ -z "$mask" ] && \

View File

@ -1,109 +0,0 @@
From 6e3cc00f4882edbabea75945308f8ae7c353bf82 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Tue, 6 Mar 2012 18:25:25 -0500
Subject: [PATCH] add initqueue --env and "online" hook
The "online" hook runs whenever a network interface comes online (that
is, once it's actually up and configured).
The initqueue --env argument is used to set "$netif" to the name of the
newly-online network interface.
---
dracut-functions.sh | 2 +-
modules.d/40network/net-genrules.sh | 24 +++++++++---------------
modules.d/99base/initqueue.sh | 15 +++++++--------
3 files changed, 17 insertions(+), 24 deletions(-)
diff --git a/dracut-functions.sh b/dracut-functions.sh
index 05c1d3a..f4ccf53 100755
--- a/dracut-functions.sh
+++ b/dracut-functions.sh
@@ -35,7 +35,7 @@ fi
# export standard hookdirs
[[ $hookdirs ]] || {
hookdirs="cmdline pre-udev pre-trigger netroot "
- hookdirs+="initqueue initqueue/settled initqueue/finished initqueue/timeout "
+ hookdirs+="initqueue initqueue/settled initqueue/online initqueue/finished initqueue/timeout "
hookdirs+="pre-mount pre-pivot mount "
hookdirs+="emergency shutdown-emergency shutdown cleanup "
export hookdirs
diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh
index 6c46d9a..84fd3ac 100755
--- a/modules.d/40network/net-genrules.sh
+++ b/modules.d/40network/net-genrules.sh
@@ -31,33 +31,27 @@ fix_bootif() {
IFACES=${bondslaves%% *}
fi
+ ifup='/sbin/ifup $env{INTERFACE}'
+ [ -z "$netroot" ] && ifup="$ifup -m"
+
# BOOTIF says everything, use only that one
BOOTIF=$(getarg 'BOOTIF=')
if [ -n "$BOOTIF" ] ; then
BOOTIF=$(fix_bootif "$BOOTIF")
- if [ -n "$netroot" ]; then
- printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE}"\n' "$BOOTIF"
- else
- printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE} -m"\n' "$BOOTIF"
- fi
+ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="%s"\n' "$BOOTIF" "/sbin/initqueue --onetime $ifup"
# If we have to handle multiple interfaces, handle only them.
elif [ -n "$IFACES" ] ; then
for iface in $IFACES ; do
- if [ -n "$netroot" ]; then
- printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE}"\n' "$iface"
- else
- printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE} -m"\n' "$iface"
- fi
+ printf 'SUBSYSTEM=="net", ENV{INTERFACE}=="%s", RUN+="%s"\n' "$iface" "/sbin/initqueue --onetime $ifup"
done
# Default: We don't know the interface to use, handle all
else
- if [ -n "$netroot" ]; then
- printf 'SUBSYSTEM=="net", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE}"\n'
- else
- printf 'SUBSYSTEM=="net", OPTIONS+="event_timeout=360", RUN+="/sbin/initqueue --onetime /sbin/ifup $env{INTERFACE} -m"\n'
- fi
+ printf 'SUBSYSTEM=="net", RUN+="%s"\n' "/sbin/initqueue --onetime $ifup"
fi
+ # Run the "online" hook
+ printf 'SUBSYSTEM=="net", ACTION=="online", RUN+="/sbin/initqueue --onetime --env netif=$env{INTERFACE} source_hook initqueue/online"\n'
+
} > /etc/udev/rules.d/60-net.rules
diff --git a/modules.d/99base/initqueue.sh b/modules.d/99base/initqueue.sh
index 2c06a0b..3387e88 100755
--- a/modules.d/99base/initqueue.sh
+++ b/modules.d/99base/initqueue.sh
@@ -25,6 +25,8 @@ while [ $# -gt 0 ]; do
unique="yes";;
--name)
name="$2";shift;;
+ --env)
+ env="$2"; shift;;
*)
break;;
esac
@@ -43,14 +45,11 @@ shift
[ -x "$exe" ] || exe=$(command -v $exe)
-if [ -n "$onetime" ]; then
- {
- echo '[ -e "$job" ] && rm "$job"'
- echo "$exe $@"
- } > "/tmp/$$-${job}.sh"
-else
- echo "$exe $@" > "/tmp/$$-${job}.sh"
-fi
+{
+ [ -n "$onetime" ] && echo '[ -e "$job" ] && rm "$job"'
+ [ -n "$env" ] && echo "$env"
+ echo "$exe $@"
+} > "/tmp/$$-${job}.sh"
mv -f "/tmp/$$-${job}.sh" "$hookdir/initqueue${qname}/${job}.sh"
[ -z "$qname" ] && >> $hookdir/initqueue/work

View File

@ -1,22 +0,0 @@
From 0635530dda6e12e2475b43bd65ca4943ce36a7e7 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 8 Mar 2012 12:25:30 +0100
Subject: [PATCH] TEST-20-NFS/test.sh: fsck with "-a"
---
test/TEST-20-NFS/test.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh
index fcd424f..a6bde0e 100755
--- a/test/TEST-20-NFS/test.sh
+++ b/test/TEST-20-NFS/test.sh
@@ -12,7 +12,7 @@ run_server() {
# Start server first
echo "NFS TEST SETUP: Starting DHCP/NFS server"
- fsck $TESTDIR/server.ext3 || return 1
+ fsck -a $TESTDIR/server.ext3 || return 1
$testdir/run-qemu \
-hda $TESTDIR/server.ext3 -m 256M -nographic \
-net nic,macaddr=52:54:00:12:34:56,model=e1000 \

View File

@ -1,50 +0,0 @@
From f8208d682fad279bebb2019c5df57f8d42b133c6 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 8 Mar 2012 12:26:00 +0100
Subject: [PATCH] 95iscsi/iscsiroot.sh: fix for empty $root
---
modules.d/95iscsi/iscsiroot.sh | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh
index 1bd6dd3..7fa2715 100755
--- a/modules.d/95iscsi/iscsiroot.sh
+++ b/modules.d/95iscsi/iscsiroot.sh
@@ -40,7 +40,7 @@ modprobe crc32c 2>/dev/null
[ -e /sys/module/bnx2i ] && iscsiuio
if getargbool 0 rd.iscsi.firmware -y iscsi_firmware ; then
- if [ -n "${root%%block:*}" ]; then
+ if [ -z "$root" -o -n "${root%%block:*}" ]; then
# if root is not specified try to mount the whole iSCSI LUN
printf 'ENV{DEVTYPE}!="partition", SYMLINK=="disk/by-path/*-iscsi-*-*", SYMLINK+="root"\n' >> /etc/udev/rules.d/99-iscsi-root.rules
udevadm control --reload
@@ -167,9 +167,12 @@ handle_netroot()
# FIXME $iscsi_protocol??
- if [ -n "${root%%block:*}" ]; then
- # if root is not specified try to mount the whole iSCSI LUN
+ if [ -z "$root" -o -n "${root%%block:*}" ]; then
+ # if root is not specified try to mount the whole iSCSI LUN
printf 'SYMLINK=="disk/by-path/*-iscsi-*-%s", SYMLINK+="root"\n' $iscsi_lun >> /etc/udev/rules.d/99-iscsi-root.rules
+
+ # install mount script
+ echo "iscsi_lun=$iscsi_lun . /bin/mount-lun.sh " > $hookdir/mount/01-$$-iscsi.sh
fi
# inject new exit_if_exists
@@ -185,12 +188,6 @@ handle_netroot()
${iscsi_password+-w $iscsi_password} \
${iscsi_in_username+-U $iscsi_in_username} \
${iscsi_in_password+-W $iscsi_in_password} || :
-
-# install mount script
- if [ -n "${root%%block:*}" ]; then
- # if root is not specified try to mount the whole iSCSI LUN
- echo "iscsi_lun=$iscsi_lun . /bin/mount-lun.sh " > $hookdir/mount/01-$$-iscsi.sh
- fi
}
# loop over all netroot parameter

View File

@ -1,21 +0,0 @@
From d33d60774f38f43053c2cd1811b78c4f1af0fdc9 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 8 Mar 2012 13:40:21 +0100
Subject: [PATCH] dracut.spec: add 98pollcdrom
---
dracut.spec | 1 +
1 file changed, 1 insertion(+)
diff --git a/dracut.spec b/dracut.spec
index 91b3451..0275af3 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -272,6 +272,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/97masterkey
%{dracutlibdir}/modules.d/98ecryptfs
%{dracutlibdir}/modules.d/98integrity
+%{dracutlibdir}/modules.d/98pollcdrom
%{dracutlibdir}/modules.d/98selinux
%{dracutlibdir}/modules.d/98syslog
%{dracutlibdir}/modules.d/98usrmount

View File

@ -1,26 +0,0 @@
From 2ff3fc73c81e0170c46683589d9ad705f3a5ad45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
Date: Fri, 2 Mar 2012 11:41:37 +0100
Subject: [PATCH] install ctcm network module on s390
The ctcm module is not loaded automagically because it doesn't pass the
"ether_type_trans" test in 40net/module-setup.sh, so load it explicitly.
---
modules.d/95znet/module-setup.sh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/modules.d/95znet/module-setup.sh b/modules.d/95znet/module-setup.sh
index fbb79aa..b354947 100755
--- a/modules.d/95znet/module-setup.sh
+++ b/modules.d/95znet/module-setup.sh
@@ -13,6 +13,10 @@ depends() {
return 0
}
+installkernel() {
+ instmods ctcm
+}
+
install() {
inst_hook cmdline 30 "$moddir/parse-ccw.sh"
inst /lib/udev/ccw_init

View File

@ -1,48 +0,0 @@
From 04febed7822979d38cecb47b8675d021bbd7bd72 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Thu, 8 Mar 2012 18:02:29 -0500
Subject: [PATCH] img-lib: fix unpack_img()
- det_img should have been det_archive
- for ft=xz|gzip|bzip2, decompr should be "$ft -dc"
---
modules.d/99img-lib/img-lib.sh | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/modules.d/99img-lib/img-lib.sh b/modules.d/99img-lib/img-lib.sh
index f6be26d..22507aa 100755
--- a/modules.d/99img-lib/img-lib.sh
+++ b/modules.d/99img-lib/img-lib.sh
@@ -1,12 +1,13 @@
#!/bin/sh
# img-lib.sh: utilities for dealing with archives and filesystem images.
#
-# TODO: identify/unpack rpm, deb?
+# TODO: identify/unpack rpm, deb, maybe others?
# super-simple "file" that only identifies archives.
# works with stdin if $1 is not set.
det_archive() {
+ # NOTE: echo -e works in ash and bash, but not dash
local bz="BZh" xz="$(echo -e '\xfd7zXZ')" gz="$(echo -e '\x1f\x8b')"
local headerblock="$(dd ${1:+if=$1} bs=262 count=1 2>/dev/null)"
case "$headerblock" in
@@ -32,7 +33,7 @@ unpack_archive() {
local img="$1" outdir="$2" archiver="" decompr=""
local ft="$(det_archive $img)"
case "$ft" in
- xz|gzip|bzip2) decompr="$decompr -dc" ;;
+ xz|gzip|bzip2) decompr="$ft -dc" ;;
cpio|tar) decompr="cat";;
*) return 1 ;;
esac
@@ -64,7 +65,7 @@ unpack_img() {
[ -r "$img" ] || { warn "can't read img!"; return 1; }
[ -n "$outdir" ] || { warn "unpack_img: no output dir given"; return 1; }
- if [ "$(det_img $img)" ]; then
+ if [ "$(det_archive $img)" ]; then
unpack_archive "$@" || { warn "can't unpack archive file!"; return 1; }
else
unpack_fs "$@" || { warn "can't unpack filesystem image!"; return 1; }

View File

@ -1,48 +0,0 @@
From 7e60091c6b1aefb52581066d9dc04fa0ecc0e5fc Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Thu, 8 Mar 2012 18:03:39 -0500
Subject: [PATCH] url-lib: clean up output
For curl_fetch_url (http/https/ftp):
- use --progress-bar (the output is less messy)
- print the URL we're fetching so the user know's what's happening
For curl and nfs:
- don't echo the filename if it was provided by the user
---
modules.d/45url-lib/url-lib.sh | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/modules.d/45url-lib/url-lib.sh b/modules.d/45url-lib/url-lib.sh
index 043a700..e305a68 100755
--- a/modules.d/45url-lib/url-lib.sh
+++ b/modules.d/45url-lib/url-lib.sh
@@ -53,9 +53,10 @@ add_url_handler() {
export CURL_HOME="/run/initramfs/url-lib"
mkdir -p $CURL_HOME
-curl_args="--location --retry 3 --fail --show-error"
+curl_args="--location --retry 3 --fail --show-error --progress-bar"
curl_fetch_url() {
local url="$1" outloc="$2"
+ echo "$url" > /proc/self/fd/0
if [ -n "$outloc" ]; then
curl $curl_args --output "$outloc" "$url" || return $?
else
@@ -64,7 +65,7 @@ curl_fetch_url() {
outloc="$outdir/$(ls -A $outdir)"
fi
[ -f "$outloc" ] || return 253
- echo "$outloc"
+ if [ -z "$2" ]; then echo "$outloc" ; fi
}
add_url_handler curl_fetch_url http https ftp
@@ -110,6 +111,6 @@ nfs_fetch_url() {
cp -f "$mntdir/$filename" "$outloc" || return $?
fi
[ -f "$outloc" ] || return 253
- echo "$outloc"
+ if [ -z "$2" ]; then echo "$outloc" ; fi
}
command -v nfs_to_var >/dev/null && add_url_handler nfs_fetch_url nfs nfs4

View File

@ -1,94 +0,0 @@
From 52c4c9484d0cdccad7d9a3cc684677e784edab53 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Thu, 8 Mar 2012 18:03:48 -0500
Subject: [PATCH] Add 'live.updates' to livenet module
live.updates allows you to specify the URL for an "updates image" that
should be applied to the live runtime before switch_root.
The URL can be anything supported by url-lib (http, https, ftp, possibly
nfs) and the image can be anything supported by img-lib (xz/gzip
compressed cpio/tar, uncompressed cpio/tar, filesystem image, etc.)
---
modules.d/90livenet/fetch-liveupdate.sh | 32 +++++++++++++++++++++++++++++++
modules.d/90livenet/module-setup.sh | 1 +
modules.d/90livenet/parse-livenet.sh | 12 +++++++++++-
3 files changed, 44 insertions(+), 1 deletion(-)
create mode 100755 modules.d/90livenet/fetch-liveupdate.sh
diff --git a/modules.d/90livenet/fetch-liveupdate.sh b/modules.d/90livenet/fetch-liveupdate.sh
new file mode 100755
index 0000000..8a5fdec
--- /dev/null
+++ b/modules.d/90livenet/fetch-liveupdate.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+# 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.
+
+# no updates requested? we're not needed.
+[ -e /tmp/liveupdates.info ] || return 0
+
+command -v getarg >/dev/null || . /lib/dracut-lib.sh
+command -v fetch_url >/dev/null || . /lib/url-lib.sh
+command -v unpack_img >/dev/null || . /lib/img-lib.sh
+
+read url < /tmp/liveupdates.info
+
+info "fetching live updates from $url"
+
+fetch_url "$url" /tmp/updates.img
+if [ $? != 0 ]; then
+ warn "failed to fetch update image!"
+ warn "url: $url"
+ return 1
+fi
+
+unpack_img /tmp/updates.img /updates.tmp.$$
+if [ $? != 0 ]; then
+ warn "failed to unpack update image!"
+ warn "url: $url"
+ return 1
+fi
+rm -rf /updates
+mv -f /updates.tmp.$$ /updates
+mv /tmp/liveupdates.info /tmp/liveupdates.done
diff --git a/modules.d/90livenet/module-setup.sh b/modules.d/90livenet/module-setup.sh
index c650ef3..2071553 100755
--- a/modules.d/90livenet/module-setup.sh
+++ b/modules.d/90livenet/module-setup.sh
@@ -12,6 +12,7 @@ depends() {
install() {
inst_hook cmdline 29 "$moddir/parse-livenet.sh"
+ inst_hook initqueue/online 95 "$moddir/fetch-liveupdate.sh"
inst "$moddir/livenetroot.sh" "/sbin/livenetroot"
}
diff --git a/modules.d/90livenet/parse-livenet.sh b/modules.d/90livenet/parse-livenet.sh
index 926dba2..3553cef 100755
--- a/modules.d/90livenet/parse-livenet.sh
+++ b/modules.d/90livenet/parse-livenet.sh
@@ -1,10 +1,20 @@
-#!/bin/bash
+#!/bin/sh
# live net images - just like live images, but specified like:
# root=live:[url-to-backing-file]
[ -z "$root" ] && root=$(getarg root=)
. /lib/url-lib.sh
+# live updates
+updates=$(getarg live.updates=)
+if [ -n "$updates" ]; then
+ # make sure network comes up even if we're doing a local live device
+ [ -z "$netroot" ] && echo "rd.neednet=1" > /etc/cmdline.d/90livenet.conf
+ echo "$updates" > /tmp/liveupdates.info
+ echo '[ -e /tmp/liveupdates.done ]' > \
+ $hookdir/initqueue/finished/liveupdates.sh
+fi
+
str_starts "$root" "live:" && liveurl="$root"
str_starts "$liveurl" "live:" || return
liveurl="${liveurl#live:}"

View File

@ -1,31 +0,0 @@
From 803be5aa50b4ad7c76b83a2df23a47ae4744aabf Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 14 Mar 2012 11:48:48 +0100
Subject: [PATCH] README: added github and sourceforge git links
---
README | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/README b/README
index 6edc2c0..f9198bf 100644
--- a/README
+++ b/README
@@ -62,9 +62,17 @@ Git:
http://git.kernel.org/pub/scm/boot/dracut/dracut.git
https://git.kernel.org/pub/scm/boot/dracut/dracut.git
+ git://github.com/haraldh/dracut.git
+
+ git://dracut.git.sourceforge.net/gitroot/dracut/dracut
+
Git Web:
http://git.kernel.org/?p=boot/dracut/dracut.git
+ https://haraldh@github.com/haraldh/dracut.git
+
+ http://dracut.git.sourceforge.net/git/gitweb.cgi?p=dracut/dracut
+
Git Web RSS Feed:
http://git.kernel.org/?p=boot/dracut/dracut.git;a=rss

View File

@ -1,51 +0,0 @@
From 3a00cf9eccaadb44fd22d8f49c99b4d6dfe16009 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 14 Mar 2012 11:50:07 +0100
Subject: [PATCH] AUTHORS: update
---
AUTHORS | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/AUTHORS b/AUTHORS
index 12dbe15..f7a1007 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -5,24 +5,24 @@ Warren Togami <wtogami@redhat.com>
Amadeusz Żołnowski <aidecoe@aidecoe.name>
Jeremy Katz <katzj@redhat.com>
David Dillow <dave@thedillows.org>
-Michal Soltys <soltys@ziu.info>
Will Woods <wwoods@redhat.com>
+Michal Soltys <soltys@ziu.info>
+Dave Young <dyoung@redhat.com>
+Amerigo Wang <amwang@redhat.com>
Andrey Borzenkov <arvidjaar@gmail.com>
+Colin Guthrie <colin@mageia.org>
Andreas Thienemann <andreas@bawue.net>
Hans de Goede <hdegoede@redhat.com>
Peter Jones <pjones@redhat.com>
-Amerigo Wang <amwang@redhat.com>
-Colin Guthrie <colin@mageia.org>
John Reiser <jreiser@bitwagon.com>
Luca Berra <bluca@vodka.it>
-Dave Young <dyoung@redhat.com>
Daniel Drake <dsd@laptop.org>
Marc Grimme <grimme@atix.de>
+Dan Horák <dhorak@redhat.com>
Roberto Sassu <roberto.sassu@polito.it>
Anton Blanchard <anton@samba.org>
Bill Nottingham <notting@redhat.com>
Brian C. Lane <bcl@redhat.com>
-Dan Horák <dhorak@redhat.com>
David Cantrell <dcantrell@redhat.com>
Lance Albertson <lance@osuosl.org>
Marian Ganisin <mganisin@redhat.com>
@@ -47,6 +47,7 @@ Frederic Crozat <fcrozat@mandriva.com>
Glen Gray <slaine@slaine.org>
Hermann Gausterer <git-dracut-2012@mrq1.org>
James Laska <jlaska@redhat.com>
+Jan Stodola <jstodola@redhat.com>
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Leho Kraav <leho@kraav.com>
Lubomir Rintel <lkundrak@v3.sk>

View File

@ -1,831 +0,0 @@
From dc824f19943d31bfba33f017be63e0c8ed74bb47 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 14 Mar 2012 13:27:13 +0100
Subject: [PATCH] remove dracut-gencmdline
---
Makefile | 4 +-
dracut-gencmdline.8.xml | 46 ---
dracut-gencmdline.sh | 716 -----------------------------------------------
dracut.spec | 2 -
4 files changed, 1 insertion(+), 767 deletions(-)
delete mode 100644 dracut-gencmdline.8.xml
delete mode 100755 dracut-gencmdline.sh
diff --git a/Makefile b/Makefile
index 13c6c84..d79b2b0 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,7 @@ sysconfdir ?= ${prefix}/etc
bindir ?= ${prefix}/bin
mandir ?= ${prefix}/share/man
-manpages = dracut.8 dracut.cmdline.7 dracut.conf.5 dracut-catimages.8 dracut-gencmdline.8
+manpages = dracut.8 dracut.cmdline.7 dracut.conf.5 dracut-catimages.8
.PHONY: install clean archive rpm testimage test all check AUTHORS doc
@@ -32,7 +32,6 @@ install: doc
mkdir -p $(DESTDIR)$(pkglibdir)/modules.d
mkdir -p $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man7 $(DESTDIR)$(mandir)/man8
install -m 0755 dracut.sh $(DESTDIR)$(bindir)/dracut
- install -m 0755 dracut-gencmdline.sh $(DESTDIR)$(bindir)/dracut-gencmdline
install -m 0755 dracut-catimages.sh $(DESTDIR)$(bindir)/dracut-catimages
install -m 0755 mkinitrd-dracut.sh $(DESTDIR)$(bindir)/mkinitrd
install -m 0755 lsinitrd.sh $(DESTDIR)$(bindir)/lsinitrd
@@ -45,7 +44,6 @@ install: doc
cp -arx modules.d $(DESTDIR)$(pkglibdir)
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-gencmdline.8 $(DESTDIR)$(mandir)/man8/dracut-gencmdline.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-gencmdline.8.xml b/dracut-gencmdline.8.xml
deleted file mode 100644
index a893d0b..0000000
--- a/dracut-gencmdline.8.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" []>
-<!-- lifted from troff+man by doclifter -->
-<refentry id='dracutgencmdline8'>
-<refmeta>
-<refentrytitle>DRACUT-GENCMDLINE</refentrytitle>
-<manvolnum>8</manvolnum>
-<refmiscinfo class='source'>June 2009</refmiscinfo>
-<refmiscinfo class='manual'>Linux</refmiscinfo>
-</refmeta>
-<refnamediv id='name'>
-<refname>dracut-gencmdline</refname>
-<refpurpose>generates kernel command line parameters for the dracut generated initramfs</refpurpose>
-</refnamediv>
-<!-- body begins here -->
-<refsynopsisdiv id='synopsis'>
-<cmdsynopsis>
- <command>dracut-gencmdline</command>
- <sbr/>
-</cmdsynopsis>
-</refsynopsisdiv>
-
-
-<refsect1 id='description'><title>DESCRIPTION</title>
-<para><command>dracut-gencmdline</command>
-generates kernel command line parameters for the dracut generated initramfs, which are very specific to the host system.</para>
-
-</refsect1>
-
-<refsect1 id='authors'><title>AUTHORS</title>
-<literallayout remap='.nf'>
-Harald Hoyer &lt;harald@redhat.com&gt;
-</literallayout> <!-- .fi -->
-</refsect1>
-
-<refsect1 id='availability'><title>AVAILABILITY</title>
-<para>The dracut-gencmdline command is part of the dracut package and is available from
-<ulink url='https://dracut.wiki.kernel.org'>https://dracut.wiki.kernel.org</ulink></para>
-
-</refsect1>
-
-<refsect1 id='see_also'><title>SEE ALSO</title>
-<para><citerefentry><refentrytitle>dracut</refentrytitle><manvolnum>8</manvolnum></citerefentry></para>
-</refsect1>
-</refentry>
-
diff --git a/dracut-gencmdline.sh b/dracut-gencmdline.sh
deleted file mode 100755
index c909e27..0000000
--- a/dracut-gencmdline.sh
+++ /dev/null
@@ -1,716 +0,0 @@
-#!/bin/bash --norc
-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
-# ex: ts=8 sw=4 sts=4 et filetype=sh
-#
-# Copyright 2005-2009 Red Hat, Inc. All rights reserved.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# code taken from mkinitrd
-#
-#. /usr/libexec/initrd-functions
-
-IF_verbose=""
-function set_verbose() {
- case $1 in
- 1|true|yes|on)
- IF_verbose="-v"
- ;;
- 0|false|no|off)
- IF_verbose=""
- ;;
- esac
-}
-
-function is_verbose() {
- [ -n "$IF_verbose" ] && return 0
- return 1
-}
-
-function get_verbose() {
- echo "$IF_verbose"
- is_verbose
-}
-
-
-function get_numeric_dev() {
- (
- fmt="%d:%d"
- if [ "$1" == "hex" ]; then
- fmt="%x:%x"
- fi
- ls -lH "$2" | awk '{ sub(/,/, "", $5); printf("'"$fmt"'", $5, $6); }'
- ) 2>/dev/null
-}
-
-
-function error() {
- echo "$@" >&2
-}
-
-function vecho() {
- is_verbose && echo "$@"
-}
-
-# module dep finding and installation functions
-moduledep() {
- MPARGS=""
- if [ "$1" == "--ignore-install" ]; then
- MPARGS="$MPARGS --ignore-install"
- shift
- fi
- vecho -n "Looking for deps of module $1"
- deps=""
- deps=$(modprobe $MPARGS --set-version $kernel --quiet --show-depends $1 | awk '/^insmod / { print gensub(".*/","","g",$2) }' | while read foo ; do [ "${foo%%.ko}" != "$1" ] && echo -n "${foo%%.ko} " ; done)
- [ -n "$deps" ] && vecho ": $deps" || vecho
-}
-
-export MALLOC_PERTURB_=204
-
-PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH
-export PATH
-
-# Set the umask. For iscsi, the initrd can contain plaintext
-# password (chap secret), so only allow read by owner.
-umask 077
-
-VERSION=6.0.87
-
-PROBE="yes"
-MODULES=""
-GRAPHICSMODS=""
-PREMODS=""
-DMRAIDS=""
-ncryptodevs=0
-ncryptoparts=0
-ncryptolvs=0
-ncryptoraids=0
-root=""
-scsi_wait_scan="no"
-
-NET_LIST=""
-LD_SO_CONF=/etc/ld.so.conf
-LD_SO_CONF_D=/etc/ld.so.conf.d/
-
-[ -e /etc/sysconfig/mkinitrd ] && . /etc/sysconfig/mkinitrd
-
-CONFMODS="$MODULES"
-MODULES=""
-ARCH=$(uname -m | sed -e 's/s390x/s390/')
-
-compress=1
-allowmissing=""
-target=""
-kernel=""
-force=""
-img_vers=""
-builtins=""
-modulefile=/etc/modules.conf
-[ "$ARCH" != "s390" ] && withusb=1
-rc=0
-nolvm=""
-nodmraid=""
-
-IMAGESIZE=8000
-PRESCSIMODS=""
-fstab="/etc/fstab"
-
-vg_list=""
-net_list="$NET_LIST"
-
-usage () {
- if [ "$1" == "-n" ]; then
- cmd=echo
- else
- cmd=error
- fi
-
- $cmd "usage: `basename $0` [--version] [--help] [-v] [-f]"
-
- if [ "$1" == "-n" ]; then
- exit 0
- else
- exit 1
- fi
-}
-
-
-qpushd() {
- pushd "$1" >/dev/null 2>&1
-}
-
-qpopd() {
- popd >/dev/null 2>&1
-}
-
-
-freadlink() {
- readlink -f "$1"
-}
-
-resolve_device_name() {
- if [ -z "${1##UUID=*}" ]; then
- real=$(freadlink /dev/disk/by-uuid/${1##UUID=})
- [ -b $real ] && { echo $real; return; }
- fi
- if [ -z "${1##LABEL=*}" ]; then
- real=$(freadlink /dev/disk/by-label/${1##LABEL=})
- [ -b $real ] && { echo $real; return; }
- fi
- echo "$1"
-}
-
-finddevnoinsys() {
- majmin="$1"
- if [ -n "$majmin" ]; then
- dev=$(for x in /sys/block/* ; do find $x/ -name dev ; done | while read device ; do \
- echo "$majmin" | cmp -s $device && echo $device ; done)
- if [ -n "$dev" ]; then
- dev=${dev%%/dev}
- dev=${dev%%/}
- echo "$dev"
- return 0
- fi
- fi
- return 1
-}
-
-finddevicedriverinsys () {
- if is_iscsi $PWD; then
- handleiscsi "$PWD"
- return
- fi
- while [ "$PWD" != "/sys/devices" ]; do
- deps=
- if [ -f modalias ]; then
- MODALIAS=$(cat modalias)
- if [ "${MODALIAS::7}" == "scsi:t-" ]; then
- scsi_wait_scan=yes
- fi
- moduledep $MODALIAS
- unset MODALIAS
- fi
-
- cd ..
- done
-}
-
-findstoragedriverinsys () {
- local sysfs=$(freadlink "$1")
-
- # if its a partition look at the device holding the partition
- if [ -f "$sysfs/start" ]; then
- sysfs=$(freadlink ${sysfs%/*})
- fi
-
- if [[ ! "$sysfs" =~ ^/sys/.*block/.*$ ]]; then
- #error "WARNING: $sysfs is a not a block sysfs path, skipping"
- return
- fi
-
- case " $handleddevices " in
- *" $sysfs "*)
- return ;;
- *) handleddevices="$handleddevices $sysfs" ;;
- esac
-
- if [[ "$sysfs" =~ ^/sys/.*block/md[0-9]+$ ]]; then
- local raid=${sysfs##*/}
- vecho "Found MDRAID component $raid"
- handleraid $raid
- fi
- if [[ "$sysfs" =~ ^/sys/.*block/dm-[0-9]+$ ]]; then
- vecho "Found DeviceMapper component ${sysfs##*/}"
- handledm $(cat $sysfs/dev |cut -d : -f 1) $(cat $sysfs/dev |cut -d : -f 2)
- fi
-
- for slave in $(ls -d "$sysfs"/slaves/* 2>/dev/null) ; do
- findstoragedriverinsys "$slave"
- done
-
- if [ -L "$sysfs/device" ]; then
- qpushd $(freadlink "$sysfs/device")
- finddevicedriverinsys
- qpopd
- fi
-}
-
-findstoragedriver () {
- local device="$1"
-
- if [ ! -b "$device" ]; then
- #error "WARNING: $device is a not a block device, skipping"
- return
- fi
-
- local majmin=$(get_numeric_dev dec "$device")
- local sysfs=$(finddevnoinsys "$majmin")
-
- if [ -z "$sysfs" ]; then
- #error "WARNING: $device major:minor $majmin not found, skipping"
- return
- fi
-
- vecho "Looking for driver for $device in $sysfs"
- findstoragedriverinsys "$sysfs"
-}
-
-iscsi_get_rec_val() {
-
- # The open-iscsi 742 release changed to using flat files in
- # /var/lib/iscsi.
-
- result=$(grep "^${2} = " "$1" | sed -e s'/.* = //')
-}
-
-iscsi_set_parameters() {
- path=$1
- vecho setting iscsi parameters
-
- tmpfile=$(mktemp)
-
- # Check once before getting explicit values, so we can output a decent
- # error message.
- /sbin/iscsiadm --show -m session -r $path > $tmpfile
- if [ ! -s $tmpfile ]; then
- echo Unable to find iscsi record for $path
- exit 1
- fi
-
- nit_name=$(grep "^InitiatorName=" /etc/iscsi/initiatorname.iscsi | \
- sed -e "s/^InitiatorName=//")
-
- iscsi_get_rec_val $tmpfile "node.name"
- tgt_name=${result}
- iscsi_get_rec_val $tmpfile "node.tpgt"
- tpgt=${result}
- # iscsistart wants node.conn[0].address / port
- iscsi_get_rec_val $tmpfile 'node.conn\[0\].address'
- tgt_ipaddr=${result}
- iscsi_get_rec_val $tmpfile 'node.conn\[0\].port'
- tgt_port=${result}
-
- # Note: we get chap secrets (passwords) in plaintext, and also store
- # them in the initrd.
-
- iscsi_get_rec_val $tmpfile "node.session.auth.username"
- chap=${result}
- if [ -n "${chap}" -a "${chap}" != "<empty>" ]; then
- chap="-u ${chap}"
- iscsi_get_rec_val $tmpfile "node.session.auth.password"
- chap_pw="-w ${result}"
- else
- chap=""
- fi
-
- iscsi_get_rec_val $tmpfile "node.session.auth.username_in"
- chap_in=${result}
- if [ -n "${chap_in}" -a "${chap_in}" != "<empty>" ]; then
- chap_in="-U ${chap_in}"
- iscsi_get_rec_val $tmpfile "node.session.auth.password_in"
- chap_in_pw="-W ${result}"
- else
- chap_in=""
- fi
-
- rm $tmpfile
-}
-
-emit_iscsi () {
- if [ -n "${iscsi_devs}" ]; then
- for dev in ${iscsi_devs}; do
- iscsi_set_parameters $dev
- # recid is not really used, just use 0 for it
- echo "/bin/iscsistart -t ${tgt_name} -i ${nit_name} \
- -g ${tpgt} -a ${tgt_ipaddr} ${chap} ${chap_pw} \
- ${chap_in} ${chap_in_pw}"
- done
- fi
-}
-
-is_iscsi() {
- path=$1
- if echo $path | grep -q "/platform/host[0-9]*/session[0-9]*/target[0-9]*:[0-9]*:[0-9]*/[0-9]*:[0-9]*:[0-9]*:[0-9]*"; then
- return 0
- else
- return 1
- fi
-}
-
-handledm() {
- major=$1
- minor=$2
- while read dmstart dmend dmtype r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 ; do
- case "$dmtype" in
- crypt)
- # this device is encrypted; find the slave device and see
- # whether the encryption is LUKS; if not, bail.
- slavedev=$(finddevnoinsys $r3)
- # get the basename, then s,!,/, in case it's a cciss device
- slavedev=$(echo ${slavedev##*/} | tr '!' '/')
- cryptsetup isLuks "/dev/$slavedev" 2>/dev/null || continue
- find_base_dm_mods
- dmname=$(dmsetup info -j $major -m $minor -c --noheadings -o name)
- # do the device resolution dance to get /dev/mapper/foo
- # since 'lvm lvs' doesn't like dm-X device nodes
- if [[ "$slavedev" =~ ^dm- ]]; then
- majmin=$(get_numeric_dev dec "/dev/$slavedev")
- for dmdev in /dev/mapper/* ; do
- dmnum=$(get_numeric_dev dev $dmdev)
- if [ $dmnum = $majmin ]; then
- slavedev=${dmdev#/dev/}
- break
- fi
- done
- fi
-
- # determine if $slavedev is an LV
- # if so, add the device to latecryptodevs
- # if not, add the device to cryptodevs
- local vg=$(lvshow /dev/$slavedev)
- if [ -n "$vg" ]; then
- eval cryptolv${ncryptolvs}='"'/dev/$slavedev $dmname'"'
- let ncryptolvs++
- elif grep -q "^$slavedev :" /proc/mdstat ; then
- eval cryptoraid${ncryptoraids}='"'/dev/$slavedev $dmname'"'
- let ncryptoraids++
- else
- eval cryptoparts${ncryptoparts}='"'/dev/$slavedev $dmname'"'
- let ncryptoparts++
- fi
-
- let ncryptodevs++
- findstoragedriver "/dev/$slavedev"
- ;;
- esac
- done << EOF
- $(dmsetup table -j $major -m $minor 2>/dev/null)
-EOF
- local name=$(dmsetup info --noheadings -c -j $major -m $minor -o name)
- local vg=$(lvshow "/dev/mapper/$name")
- local raids=$(/sbin/dmraid -s -craidname 2>/dev/null | grep -vi "no raid disks")
- if [ -n "$vg" ]; then
- vg=`echo $vg` # strip whitespace
- case " $vg_list " in
- *" $vg "*) ;;
- *) vg_list="$vg_list $vg"
- [ -z "$nolvm" ] && find_base_dm_mods
- ;;
- esac
- fi
- for raid in $raids ; do
- if [ "$raid" == "$name" ]; then
- case " $DMRAIDS " in
- *" $raid "*) ;;
- *) DMRAIDS="$DMRAIDS $raid"
- [ -z "$nodmraid" ] && find_base_dm_mods
- ;;
- esac
- break
- fi
- done
-}
-
-handleiscsi() {
- vecho "Found iscsi component $1"
-
- # We call iscsi_set_parameters once here to figure out what network to
- # use (it sets tgt_ipaddr), and once again to emit iscsi values,
- # not very efficient.
- iscsi_set_parameters $1
- iscsi_devs="$iscsi_devs $1"
- netdev=$(/sbin/ip route get to $tgt_ipaddr | \
- sed 's|.*dev \(.*\).*|\1|g' | awk '{ print $1; exit }')
- addnetdev $netdev
-}
-
-handleraid() {
- local start=0
-
- if [ -n "$noraid" -o ! -f /proc/mdstat ]; then
- return 0
- fi
-
- levels=$(awk "/^$1[ ]*:/ { print\$4 }" /proc/mdstat)
-
- for level in $levels ; do
- case $level in
- linear)
- start=1
- ;;
- multipath)
- start=1
- ;;
- raid[01] | raid10)
- start=1
- ;;
- raid[456])
- start=1
- ;;
- *)
- error "raid level $level (in /proc/mdstat) not recognized"
- ;;
- esac
- done
- if [ "$start" = 1 ]; then
- raiddevices="$raiddevices $1"
- fi
- return $start
-}
-
-lvshow() {
- lvm lvs --ignorelockingfailure --noheadings -o vg_name \
- $1 2>/dev/null | egrep -v '^ *(WARNING:|Volume Groups with)'
-}
-
-vgdisplay() {
- lvm vgdisplay --ignorelockingfailure -v $1 2>/dev/null |
- sed -n 's/PV Name//p'
-}
-
-dmmods_found="n"
-find_base_dm_mods()
-{
- [ "$dmmods_found" == "n" ] || return
- dmmods_found="y"
-}
-
-savedargs=$*
-while [ $# -gt 0 ]; do
- case $1 in
- --fstab*)
- if [ "$1" != "${1##--fstab=}" ]; then
- fstab=${1##--fstab=}
- else
- fstab=$2
- shift
- fi
- ;;
-
-
- -v|--verbose)
- set_verbose true
- ;;
- --net-dev*)
- if [ "$1" != "${1##--net-dev=}" ]; then
- net_list="$net_list ${1##--net-dev=}"
- else
- net_list="$net_list $2"
- shift
- fi
- ;;
- --rootdev*)
- if [ "$1" != "${1##--rootdev=}" ]; then
- rootdev="${1##--rootdev=}"
- else
- rootdev="$2"
- shift
- fi
- ;;
- --thawdev*)
- if [ "$1" != "${1##--thawdev=}" ]; then
- thawdev="${1##--thawdev=}"
- else
- thawdev="$2"
- shift
- fi
- ;;
- --rootfs*)
- if [ "$1" != "${1##--rootfs=}" ]; then
- rootfs="${1##--rootfs=}"
- else
- rootfs="$2"
- shift
- fi
- ;;
- --rootopts*)
- if [ "$1" != "${1##--rootopts=}" ]; then
- rootopts="${1##--rootopts=}"
- else
- rootopts="$2"
- shift
- fi
- ;;
- --root*)
- if [ "$1" != "${1##--root=}" ]; then
- root="${1##--root=}"
- else
- root="$2"
- shift
- fi
- ;;
- --loopdev*)
- if [ "$1" != "${1##--loopdev=}" ]; then
- loopdev="${1##--loopdev=}"
- else
- loopdev="$2"
- shift
- fi
- ;;
- --loopfs*)
- if [ "$1" != "${1##--loopfs=}" ]; then
- loopfs="${1##--loopfs=}"
- else
- loopfs="$2"
- shift
- fi
- ;;
- --loopopts*)
- if [ "$1" != "${1##--loopopts=}" ]; then
- loopopts="${1##--loopopts=}"
- else
- loopopts="$2"
- shift
- fi
- ;;
- --looppath*)
- if [ "$1" != "${1##--looppath=}" ]; then
- looppath="${1##--looppath=}"
- else
- looppath="$2"
- shift
- fi
- ;;
- --help)
- usage -n
- ;;
- *)
- if [ -z "$target" ]; then
- target=$1
- elif [ -z "$kernel" ]; then
- kernel=$1
- else
- usage
- fi
- ;;
- esac
-
- shift
-done
-
-[ -z "$rootfs" ] && rootfs=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $3; }}' $fstab)
-[ -z "$rootopts" ] && rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' $fstab)
-[ -z "$rootopts" ] && rootopts="defaults"
-
-
-[ -z "$rootdev" ] && rootdev=$(awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' $fstab)
- # check if it's nfsroot
-physdev=""
-if [ "$rootfs" == "nfs" ]; then
- if [ "x$net_list" == "x" ]; then
- handlenfs $rootdev
- fi
-else
- # check if it's root by label
- rdev=$rootdev
- rdev=$(resolve_device_name "$rdev")
- rootopts=$(echo $rootopts | sed -e 's/^r[ow],//' -e 's/,_netdev//' -e 's/_netdev//' -e 's/,_rnetdev//' -e 's/_rnetdev//' -e 's/,r[ow],$//' -e 's/,r[ow],/,/' -e 's/^r[ow]$/defaults/' -e 's/$/,ro/')
- findstoragedriver "$rdev"
-fi
-
- # find the first swap dev which would get used for swsusp
-[ -z "$thawdev" ] && thawdev=$(awk '/^[ \t]*[^#]/ { if ($3 == "swap") { print $1; exit }}' $fstab)
-swsuspdev="$thawdev"
-if [ -n "$swsuspdev" ]; then
- swsuspdev=$(resolve_device_name "$swsuspdev")
- findstoragedriver "$swsuspdev"
-fi
-
-
-cemit()
-{
- cat
-}
-
-emit()
-{
- NONL=""
- if [ "$1" == "-n" ]; then
- NONL="-n"
- shift
- fi
- echo $NONL "$@"
-}
-
-emitdmraids()
-{
- if [ -z "$nodmraid" -a -n "$DMRAIDS" ]; then
- for raid in $DMRAIDS; do
- echo -n "rd_DM_UUID=$raid "
- done
- fi
-}
-
-
-# HACK: module loading + device creation isn't necessarily synchronous...
-# this will make sure that we have all of our devices before trying
-# things like RAID or LVM
-emitdmraids
-
-emitcrypto()
-{
- local luksuuid=$(grep "^$2 " /etc/crypttab 2>/dev/null| awk '{ print $2 }')
- if [ -z "$luksuuid" ]; then
- luksuuid="$2"
- fi
- luksuuid=${luksuuid##UUID=}
- echo -n "rd_LUKS_UUID=$luksuuid "
-}
-
-if [ -n "$raiddevices" ]; then
- for dev in $raiddevices; do
- uid=$(udevadm info --query=env --name /dev/${dev}|grep MD_UUID)
- uid=${uid##MD_UUID=}
- [ -n "$uid" ] && echo -n "rd_MD_UUID=$uid "
- done
-else
- echo -n "rd_NO_MD "
-fi
-
-if [ -z "$nolvm" -a -n "$vg_list" ]; then
- for vg in $vg_list; do
- echo -n "rd_LVM_VG=$vg "
- done
-else
- echo -n "rd_NO_LVM "
-fi
-
-cryptdevs="$(echo ${!cryptoraid@} ${!cryptopart@} ${!cryptolv@})"
-
-if [ -z "$cryptdevs" ]; then
- echo -n "rd_NO_LUKS "
-else
- for cryptdev in ${!cryptoraid@} ${!cryptopart@} ${!cryptolv@} ; do
- emitcrypto `eval echo '$'$cryptdev`
- done
-fi
-
-# output local keyboard/18n settings
-[ -e /etc/sysconfig/keyboard ] && . /etc/sysconfig/keyboard
-[ -e /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
-
-for i in KEYTABLE SYSFONT SYSFONTACM UNIMAP LANG; do
- val=$(eval echo \$$i)
- [[ $val ]] && echo -n "$i=$val "
-done
-
-if [ -n "$KEYBOARDTYPE" -a "$KEYBOARDTYPE" != "pc" ]; then
- echo -n "KEYBOARDTYPE=$KEYBOARDTYPE "
-fi
-
-if [ -n "$rootdev" ]; then
- echo -n "root=$rootdev "
-fi
-
-echo
diff --git a/dracut.spec b/dracut.spec
index 0275af3..7a058ae 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -318,9 +318,7 @@ rm -rf $RPM_BUILD_ROOT
%files tools
%defattr(-,root,root,0755)
-%{_mandir}/man8/dracut-gencmdline.8*
%{_mandir}/man8/dracut-catimages.8*
-%{_bindir}/dracut-gencmdline
%{_bindir}/dracut-catimages
%dir /boot/dracut
%dir /var/lib/dracut

File diff suppressed because it is too large Load Diff

View File

@ -1,98 +0,0 @@
From 4ce3a1b1bbd08c3d5031632b88036335d2d2dfee Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 14 Mar 2012 15:19:39 +0100
Subject: [PATCH] precompile doc
---
Makefile | 27 +++++++++++++++++----------
dracut.spec | 6 ++++--
2 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/Makefile b/Makefile
index bd27d06..f0af487 100644
--- a/Makefile
+++ b/Makefile
@@ -13,9 +13,10 @@ manpages = dracut.8 dracut.cmdline.7 dracut.conf.5 dracut-catimages.8
.PHONY: install clean archive rpm testimage test all check AUTHORS doc
-doc: $(manpages) dracut.html
all: syncheck
+doc: $(manpages) dracut.html
+
%: %.xml
xsltproc -o $@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
@@ -26,7 +27,8 @@ dracut.html: dracut.asc $(manpages)
asciidoc -a numbered -d book -b docbook -o dracut.xml dracut.asc
xsltproc -o dracut.html --xinclude -nonet \
--stringparam draft.mode yes \
- --stringparam html.stylesheet http://docs.redhat.com/docs/en-US/Common_Content/css/default.css \
+ --stringparam html.stylesheet \
+ http://docs.redhat.com/docs/en-US/Common_Content/css/default.css \
http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl dracut.xml
rm dracut.xml
@@ -57,8 +59,10 @@ install: doc
install -m 0644 dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir); \
mkdir -p $(DESTDIR)$(systemdsystemunitdir)/reboot.target.wants; \
mkdir -p $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants; \
- ln -s ../dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir)/reboot.target.wants/dracut-shutdown.service; \
- ln -s ../dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
+ ln -s ../dracut-shutdown.service \
+ $(DESTDIR)$(systemdsystemunitdir)/reboot.target.wants/dracut-shutdown.service; \
+ ln -s ../dracut-shutdown.service \
+ $(DESTDIR)$(systemdsystemunitdir)/shutdown.target.wants/dracut-shutdown.service; \
fi
clean:
@@ -72,13 +76,16 @@ clean:
archive: dracut-$(VERSION)-$(GITVERSION).tar.bz2
-dist: dracut-$(VERSION).tar.gz
-
-dracut-$(VERSION).tar.bz2:
- git archive --format=tar $(VERSION) --prefix=dracut-$(VERSION)/ |bzip2 > dracut-$(VERSION).tar.bz2
+dist: dracut-$(VERSION).tar.bz2
-dracut-$(VERSION).tar.gz:
- git archive --format=tar $(VERSION) --prefix=dracut-$(VERSION)/ |gzip > dracut-$(VERSION).tar.gz
+dracut-$(VERSION).tar.bz2: doc
+ git archive --format=tar $(VERSION) --prefix=dracut-$(VERSION)/ > dracut-$(VERSION).tar
+ mkdir -p dracut-$(VERSION)
+ cp $(manpages) dracut.html dracut-$(VERSION)
+ tar -rf dracut-$(VERSION).tar dracut-$(VERSION)/*.[0-9] dracut-$(VERSION)/dracut.html
+ rm -fr dracut-$(VERSION).tar.bz2 dracut-$(VERSION)
+ bzip2 -9 dracut-$(VERSION).tar
+ rm -f dracut-$(VERSION).tar
rpm: dracut-$(VERSION).tar.bz2
rpmbuild=$$(mktemp -d -t rpmbuild-dracut.XXXXXX); src=$$(pwd); \
diff --git a/dracut.spec b/dracut.spec
index 7a058ae..be7ba8a 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -40,9 +40,11 @@ BuildRequires: docbook-style-xsl docbook-dtds libxslt
%endif
%if 0%{?suse_version}
-BuildRequires: docbook-xsl-stylesheets libxslt
+-BuildRequires: docbook-xsl-stylesheets libxslt
%endif
+BuildRequires: asciidoc
+
%if 0%{?fedora} > 12 || 0%{?rhel}
# no "provides", because dracut does not offer
# all functionality of the obsoleted packages
@@ -161,7 +163,7 @@ git am -p1 %{patches}
%endif
%build
-make
+make all
%install
%if 0%{?fedora} || 0%{?rhel}

View File

@ -1,48 +0,0 @@
From f94ceb13b8e6eb825b29f453a68657c508481942 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 14 Mar 2012 15:52:35 +0100
Subject: [PATCH] TEST-10-RAID: wait for udev settle before deconstructing
---
test/TEST-10-RAID/create-root.sh | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/test/TEST-10-RAID/create-root.sh b/test/TEST-10-RAID/create-root.sh
index 099d619..3dd86cb 100755
--- a/test/TEST-10-RAID/create-root.sh
+++ b/test/TEST-10-RAID/create-root.sh
@@ -16,20 +16,23 @@ mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 /dev/sda2 /d
# wait for the array to finish initailizing, otherwise this sometimes fails
# randomly.
mdadm -W /dev/md0
+set -e
echo -n test >keyfile
cryptsetup -q luksFormat /dev/md0 /keyfile
echo "The passphrase is test"
-cryptsetup luksOpen /dev/md0 dracut_crypt_test </keyfile && \
-lvm pvcreate -ff -y /dev/mapper/dracut_crypt_test && \
-lvm vgcreate dracut /dev/mapper/dracut_crypt_test && \
+cryptsetup luksOpen /dev/md0 dracut_crypt_test </keyfile
+lvm pvcreate -ff -y /dev/mapper/dracut_crypt_test
+lvm vgcreate dracut /dev/mapper/dracut_crypt_test
lvm lvcreate -l 100%FREE -n root dracut && \
-lvm vgchange -ay && \
-mke2fs /dev/dracut/root && \
-mkdir -p /sysroot && \
-mount /dev/dracut/root /sysroot && \
-cp -a -t /sysroot /source/* && \
-umount /sysroot && \
-lvm lvchange -a n /dev/dracut/root && \
-cryptsetup luksClose /dev/mapper/dracut_crypt_test && \
+lvm vgchange -ay
+mke2fs /dev/dracut/root
+mkdir -p /sysroot
+mount /dev/dracut/root /sysroot
+cp -a -t /sysroot /source/*
+umount /sysroot
+lvm lvchange -a n /dev/dracut/root
+udevadm settle
+cryptsetup luksClose /dev/mapper/dracut_crypt_test
+udevadm settle
echo "dracut-root-block-created" >/dev/sda1
poweroff -f

View File

@ -1,32 +0,0 @@
From 08842612835a2ccf4051afc43213af9243dc6ecf Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 14 Mar 2012 16:00:42 +0100
Subject: [PATCH] NEWS: update
---
NEWS | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/NEWS b/NEWS
index bed32ca..017fc9d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,18 @@
+dracut-018
+==========
+- converted manpage and documentation source to asciidoc
+- write-ifcfg fixes and cleanups
+- ifup is now done in the initqueue
+- netroot cleanup
+- initqueue/online is now for hooks, which require network
+- no more /tmp/root.info
+- 98pollcdrom: factored out the ugly cdrom polling in the main loop
+- simplified rd.luks.uuid testing
+- removed "egrep" and "ls" calls
+- speedup kernel module installation
+- make bzip2 optional
+- lots of bugfixes
+
dracut-017
==========
- a _lot_ faster than dracut-016 in image creation

View File

@ -1,84 +0,0 @@
From 02aa795514b4f6febcedd1d0f3079c6eacdfd3f2 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 14 Mar 2012 16:13:48 +0100
Subject: [PATCH] remove --ctty
---
dracut.8.asc | 3 ---
dracut.cmdline.7.asc | 6 ------
dracut.sh | 4 +---
modules.d/99base/module-setup.sh | 1 -
4 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/dracut.8.asc b/dracut.8.asc
index 6ca7347..891246d 100644
--- a/dracut.8.asc
+++ b/dracut.8.asc
@@ -193,9 +193,6 @@ example:
**--noprefix**::
do not prefix initramfs files (default)
-**--ctty**::
- if possible, try to spawn an emergency shell on a terminal with job control
-
**-h, --help**::
display help text and exit.
diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
index 8924b89..738d464 100644
--- a/dracut.cmdline.7.asc
+++ b/dracut.cmdline.7.asc
@@ -78,12 +78,6 @@ Misc
force loading kernel module <drivername> after all automatic loading modules
have been loaded. This parameter can be specified multiple times.
-**rd.ctty=**_<terminal>_::
- if the dracut image was generated with --ctty option, try to spawn an
- emergency shell on the specified terminal; if rd.ctty is specified without a
- value or not provided at all, the default is /dev/tty1. The '/dev' prefix
- can be omitted.
-
[[dracutkerneldebug]]
Debug
~~~~~
diff --git a/dracut.sh b/dracut.sh
index 417008c..1bf8ad9 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -121,7 +121,6 @@ Creates initial ramdisk images for preloading modules
build.
--keep Keep the temporary initramfs for debugging purposes
--sshkey [SSHKEY] Add ssh key to initramfs (use with ssh-client module)
- --ctty Add control tty for emergency shells
If [LIST] has multiple arguments, then you have to put these in quotes.
For example:
@@ -241,7 +240,6 @@ while (($# > 0)); do
--nolvmconf) lvmconf_l="no";;
--debug) debug="yes";;
--profile) profile="yes";;
- --ctty) cttyhack="yes";;
--sshkey) read_arg sshkey "$@" || shift;;
-v|--verbose) ((verbosity_mod_l++));;
-q|--quiet) ((verbosity_mod_l--));;
@@ -625,7 +623,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 cttyhack \
+ use_fstab fstab_lines libdir usrlibdir fscks nofscks \
stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
debug host_fs_types host_devs sshkey
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
index 5a97770..98742f5 100755
--- a/modules.d/99base/module-setup.sh
+++ b/modules.d/99base/module-setup.sh
@@ -16,7 +16,6 @@ install() {
dracut_install mount mknod mkdir modprobe pidof sleep chroot \
sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink
dracut_install -o less
- [[ $cttyhack = yes ]] && dracut_install -o setsid
if [ ! -e "${initdir}/bin/sh" ]; then
dracut_install bash
(ln -s bash "${initdir}/bin/sh" || :)

View File

@ -1,101 +0,0 @@
From c3d81de59b3828c35bbab6973f2ab0777777cf51 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 14 Mar 2012 16:19:53 +0100
Subject: [PATCH] remove openvt and use "setsid -c", if possible
---
dracut.conf.d/fedora.conf.example | 2 +-
modules.d/99base/dracut-lib.sh | 21 ++++++++++++---------
modules.d/99base/module-setup.sh | 2 +-
modules.d/99shutdown/shutdown.sh | 21 ++++++++++++---------
4 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/dracut.conf.d/fedora.conf.example b/dracut.conf.d/fedora.conf.example
index efec77e..02a530e 100644
--- a/dracut.conf.d/fedora.conf.example
+++ b/dracut.conf.d/fedora.conf.example
@@ -7,4 +7,4 @@ omit_dracutmodules+=" dash "
omit_drivers+=" .*/fs/ocfs/.* "
stdloglvl=3
realinitpath="/usr/lib/systemd/systemd"
-install_items+=" vi /etc/virc ps grep cat rm openvt "
+install_items+=" vi /etc/virc ps grep cat rm "
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index 80e093b..a6c4e24 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -803,16 +803,19 @@ emergency_shell()
echo
export PS1="$_rdshell_name:\${PWD}# "
[ -e /.profile ] || >/.profile
- _ctty=/dev/console
- if [ -n "$(command -v setsid)" ]; then
- _ctty="$(getarg rd.ctty=)" && _ctty="/dev/${_ctty##*/}"
- [ -c "$_ctty" ] || _ctty=/dev/tty1
- setsid sh -i -l 0<$_ctty 1>$_ctty 2>&1
- elif [ -n "$(command -v openvt)" ] && ! getarg "console=" >/dev/null 2>&1 && getargbool 1 "rd.openvt" ; then
- openvt -f -c 1 -w -s -l -- sh
- else
- sh -i -l 0<$_ctty 1>$_ctty 2>&1
+
+ _ctty="$(getarg rd.ctty=)" && _ctty="/dev/${_ctty##*/}"
+ if [ -z "$_ctty" ]; then
+ _ctty=console
+ while [ -f /sys/class/tty/$_ctty/active ]; do
+ _ctty=$(cat /sys/class/tty/$_ctty/active)
+ _ctty=${_ctty##* } # last one in the list
+ done
+ _ctty=/dev/$_ctty
fi
+ [ -c "$_ctty" ] || _ctty=/dev/tty1
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY /bin/sh -i -l 0<$_ctty 1>$_ctty 2>&1
else
warn "Boot has failed. To debug this issue add \"rdshell\" to the kernel command line."
# cause a kernel panic
diff --git a/modules.d/99base/module-setup.sh b/modules.d/99base/module-setup.sh
index 98742f5..581ba93 100755
--- a/modules.d/99base/module-setup.sh
+++ b/modules.d/99base/module-setup.sh
@@ -14,7 +14,7 @@ depends() {
install() {
local _d
dracut_install mount mknod mkdir modprobe pidof sleep chroot \
- sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink
+ sed ls flock cp mv dmesg rm ln rmmod mkfifo umount readlink setsid
dracut_install -o less
if [ ! -e "${initdir}/bin/sh" ]; then
dracut_install bash
diff --git a/modules.d/99shutdown/shutdown.sh b/modules.d/99shutdown/shutdown.sh
index 2576687..c8ca664 100755
--- a/modules.d/99shutdown/shutdown.sh
+++ b/modules.d/99shutdown/shutdown.sh
@@ -30,16 +30,19 @@ emergency_shell()
echo
export PS1="$_rdshell_name:\${PWD}# "
[ -e /.profile ] || >/.profile
- _ctty=/dev/console
- if [ -n "$(command -v setsid)" ]; then
- _ctty="$(getarg rd.ctty=)" && _ctty="/dev/${_ctty##*/}"
- [ -c "$_ctty" ] || _ctty=/dev/tty1
- setsid sh -i -l 0<$_ctty 1>$_ctty 2>&1
- elif [ -n "$(command -v openvt)" ] && ! getarg "console=" >/dev/null 2>&1 && getargbool 1 "rd.openvt" ; then
- openvt -f -c 1 -w -s -l -- sh
- else
- sh -i -l 0<$_ctty 1>$_ctty 2>&1
+
+ _ctty="$(getarg rd.ctty=)" && _ctty="/dev/${_ctty##*/}"
+ if [ -z "$_ctty" ]; then
+ _ctty=console
+ while [ -f /sys/class/tty/$_ctty/active ]; do
+ _ctty=$(cat /sys/class/tty/$_ctty/active)
+ _ctty=${_ctty##* } # last one in the list
+ done
+ _ctty=/dev/$_ctty
fi
+ [ -c "$_ctty" ] || _ctty=/dev/tty1
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY /bin/sh -i -l 0<$_ctty 1>$_ctty 2>&1
else
exec /lib/systemd/systemd-shutdown "$@"
warn "Shutdown has failed. To debug this issue add \"rdshell\" to the kernel command line."

View File

@ -1,39 +0,0 @@
From d8eb522e8062751f53def079ac1bab8f1c05a401 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 14 Mar 2012 16:32:19 +0100
Subject: [PATCH] TEST-01-BASIC: add setsid
---
test/TEST-01-BASIC/test-init.sh | 5 ++++-
test/TEST-01-BASIC/test.sh | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/test/TEST-01-BASIC/test-init.sh b/test/TEST-01-BASIC/test-init.sh
index fd03aa5..f8d6693 100755
--- a/test/TEST-01-BASIC/test-init.sh
+++ b/test/TEST-01-BASIC/test-init.sh
@@ -11,7 +11,10 @@ export PS1='initramfs-test:\w\$ '
[ -f /etc/fstab ] || ln -sfn /proc/mounts /etc/fstab
stty sane
echo "made it to the rootfs!"
-strstr "$CMDLINE" "rd.shell" && sh -i
+if strstr "$CMDLINE" "rd.shell"; then
+ strstr "$(setsid --help)" "control" && CTTY="-c"
+ setsid $CTTY sh -i
+fi
echo "Powering down."
mount -n -o remount,ro /
poweroff -f
diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh
index ca7a1fe..6187144 100755
--- a/test/TEST-01-BASIC/test.sh
+++ b/test/TEST-01-BASIC/test.sh
@@ -29,7 +29,7 @@ test_setup() {
. $basedir/dracut-functions.sh
dracut_install sh df free ls shutdown poweroff stty cat ps ln ip route \
mount dmesg ifconfig dhclient mkdir cp ping dhclient \
- umount strace less
+ umount strace less setsid
for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
[ -f ${_terminfodir}/l/linux ] && break
done

View File

@ -1,24 +0,0 @@
From 8cd592dfcb6a5c41ae0dae0b4ec7571fdfa36f92 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Wed, 14 Mar 2012 17:09:40 -0400
Subject: [PATCH] fix "execvp: No such file or directory" in emergency_shell
Older versions of setsid emit this message on stderr if you try to run
"setsid --help". Redirect it to /dev/null.
---
modules.d/99base/dracut-lib.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index a6c4e24..f0d426c 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -814,7 +814,7 @@ emergency_shell()
_ctty=/dev/$_ctty
fi
[ -c "$_ctty" ] || _ctty=/dev/tty1
- strstr "$(setsid --help)" "control" && CTTY="-c"
+ strstr "$(setsid --help 2>/dev/null)" "control" && CTTY="-c"
setsid $CTTY /bin/sh -i -l 0<$_ctty 1>$_ctty 2>&1
else
warn "Boot has failed. To debug this issue add \"rdshell\" to the kernel command line."

View File

@ -1,37 +0,0 @@
From 478314a90e4c8db40c483d7ad5f9337fc561d3ad Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Wed, 14 Mar 2012 17:09:49 -0400
Subject: [PATCH] Make sure 'set -x' gets turned back on in wait_for_loginit
wait_for_loginit does set +x (to turn off debugging temporarily), but
sometimes it would return before turning it back on. Move the set +x
line to fix that, then use 'setdebug' to make sure we don't turn it back
on unless it was needed.
---
modules.d/99base/dracut-lib.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh
index f0d426c..6f506b6 100755
--- a/modules.d/99base/dracut-lib.sh
+++ b/modules.d/99base/dracut-lib.sh
@@ -756,9 +756,9 @@ need_shutdown() {
wait_for_loginit()
{
- set +x
[ "$RD_DEBUG" = "yes" ] || return
[ -e /run/initramfs/loginit.pipe ] || return
+ set +x
echo "DRACUT_LOG_END"
exec 0<>/dev/console 1<>/dev/console 2<>/dev/console
# wait for loginit
@@ -778,7 +778,7 @@ wait_for_loginit()
kill $(while read line;do echo $line;done</run/initramfs/loginit.pid)
fi
- set -x
+ setdebug
rm -f /run/initramfs/loginit.pipe /run/initramfs/loginit.pid
}

View File

@ -1,66 +0,0 @@
From abbb76fe930763ca48878f3c8098633b10e6f579 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Tue, 20 Mar 2012 13:30:42 +0100
Subject: [PATCH] Do not mount --bind /run anymore
switch_root in util-linux 2.21 does mount --move /run also
---
dracut.spec | 6 +++---
modules.d/99base/init.sh | 16 +++-------------
2 files changed, 6 insertions(+), 16 deletions(-)
diff --git a/dracut.spec b/dracut.spec
index be7ba8a..d197173 100644
--- a/dracut.spec
+++ b/dracut.spec
@@ -76,11 +76,11 @@ Requires: hardlink
Requires: gzip
Requires: module-init-tools >= 3.7-9
Requires: sed
-Requires: udev
+Requires: udev > 166
%if 0%{?fedora} || 0%{?rhel} > 6
-Requires: util-linux >= 2.20
+Requires: util-linux >= 2.21
%else
-Requires: util-linux-ng >= 2.17.2
+Requires: util-linux-ng >= 2.21
%endif
%if 0%{?fedora} || 0%{?rhel} > 6
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index 5d51c9d..fa712a7 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -68,7 +68,7 @@ fi
if ! ismounted /run; then
mkdir -m 0755 /newrun
mount -t tmpfs -o mode=0755,nosuid,nodev tmpfs /newrun >/dev/null
- cp -a /run/* /newrun
+ mv /run/* /newrun >/dev/null 2>&1
mount --move /newrun /run
rm -fr /newrun
fi
@@ -312,20 +312,10 @@ else
fi
[ "$RD_DEBUG" = "yes" ] && set -x
-if [ -d "$NEWROOT"/run ]; then
- NEWRUN="${NEWROOT}/run"
- mount --bind /run "$NEWRUN"
- NEWINITRAMFSROOT="$NEWRUN/initramfs"
-
- if [ "$NEWINITRAMFSROOT/lib" -ef "/lib" ]; then
- for d in bin etc lib lib64 sbin tmp usr var; do
- [ -h /$d ] && ln -fsn $NEWINITRAMFSROOT/$d /$d
- done
- fi
-else
+if ! [ -d "$NEWROOT"/run ]; then
NEWRUN=/dev/.initramfs
mkdir -m 0755 "$NEWRUN"
- mount --bind /run/initramfs "$NEWRUN"
+ mount --rbind /run/initramfs "$NEWRUN"
fi
wait_for_loginit

View File

@ -1,23 +0,0 @@
From 5055abb615a0b4f7519d24a6a37d8af5b5bea6d5 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Tue, 20 Mar 2012 13:31:36 +0100
Subject: [PATCH] 98selinux/selinux-loadpolicy.sh: use mount --rbind for /dev
This preserves /dev/shm and /dev/pts for the selinux relabel.
---
modules.d/98selinux/selinux-loadpolicy.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/98selinux/selinux-loadpolicy.sh b/modules.d/98selinux/selinux-loadpolicy.sh
index 6eb1dbb..d6e24d6 100755
--- a/modules.d/98selinux/selinux-loadpolicy.sh
+++ b/modules.d/98selinux/selinux-loadpolicy.sh
@@ -43,7 +43,7 @@ rd_load_policy()
if [ $ret -eq 0 -o $ret -eq 2 ]; then
# If machine requires a relabel, force to permissive mode
[ -e "$NEWROOT"/.autorelabel ] && LANG=C /usr/sbin/setenforce 0
- mount --bind /dev "$NEWROOT/dev"
+ mount --rbind /dev "$NEWROOT/dev"
LANG=C chroot "$NEWROOT" /sbin/restorecon -R /dev
return 0
fi

View File

@ -1,36 +0,0 @@
From 4e25cf6edf94755219a822ebc0e108e13377cc27 Mon Sep 17 00:00:00 2001
From: Daniel Drake <dsd@laptop.org>
Date: Fri, 16 Mar 2012 21:11:24 +0000
Subject: [PATCH] Avoid use of "export -n"
"export -n" is a bash extension, not part of POSIX, and is hence
incompatible with the busybox shell.
This was breaking boot when the busybox module was used.
Reimplement the scope change in a few lines of standard shell code.
---
modules.d/99base/init.sh | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index fa712a7..84c13e0 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -263,8 +263,15 @@ else
udevadm info --cleanup-db
fi
+# Retain the values of these variables but ensure that they are unexported
+# This is a POSIX-compliant equivalent of bash's "export -n"
+for var in root rflags fstype netroot NEWROOT; do
+ eval tmp=\$$var
+ unset $var
+ [ -n "$tmp" ] && eval $var=\"$tmp\"
+done
+
export RD_TIMESTAMP
-export -n root rflags fstype netroot NEWROOT
set +x # Turn off debugging for this section
# Clean up the environment
for i in $(export -p); do

View File

@ -1,27 +0,0 @@
From b7b062ba795521433ecd82fa4f214084d17f1ffa Mon Sep 17 00:00:00 2001
From: Wim Muskee <wimmuskee@gmail.com>
Date: Sat, 17 Mar 2012 12:33:55 +0100
Subject: [PATCH] provide name based nbd connects
Because nbd-server also provides name-based exports instead of
port-based ones, make it possible to connect to those.
---
modules.d/95nbd/nbdroot.sh | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/modules.d/95nbd/nbdroot.sh b/modules.d/95nbd/nbdroot.sh
index e20b4e4..0e7dd9b 100755
--- a/modules.d/95nbd/nbdroot.sh
+++ b/modules.d/95nbd/nbdroot.sh
@@ -30,6 +30,11 @@ nbdfstype=${root%%:*}; root=${root#*:}
nbdflags=${root%%:*}
nbdopts=${root#*:}
+# If nbdport not an integer, then assume name based import
+if [[ $nbdport != [0-9]* ]]; then
+ nbdport="-N $nbdport"
+fi
+
if [ "$nbdopts" = "$nbdflags" ]; then
unset nbdopts
fi

View File

@ -1,30 +0,0 @@
From 3d3f32aea3d2cfb8bffe3e487aca0296d0939ea2 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Wed, 21 Mar 2012 17:40:08 +0100
Subject: [PATCH] dracut.asc: set level down for the manpage includes
---
dracut.asc | 3 +++
1 file changed, 3 insertions(+)
diff --git a/dracut.asc b/dracut.asc
index a4bf726..1a0e3d2 100644
--- a/dracut.asc
+++ b/dracut.asc
@@ -1007,6 +1007,8 @@ FIXME
FIXME
+
+:leveloffset: 1
[[dracut8]]
include::dracut.8.asc[]
@@ -1016,6 +1018,7 @@ include::dracut.conf.5.asc[]
[[dracutcmdline7]]
include::dracut.cmdline.7.asc[]
+:leveloffset: 0
[appendix]
License
-------

View File

@ -1,23 +0,0 @@
From 317191848a64006249de30fb3ed388a88ff22a90 Mon Sep 17 00:00:00 2001
From: Will Woods <wwoods@redhat.com>
Date: Wed, 21 Mar 2012 19:47:46 -0400
Subject: [PATCH] shutdown: fix PATH
Some systems might not use /bin:/sbin in their paths anymore, but we're
still using it in initramfs, so make sure our PATH is correct.
---
modules.d/99shutdown/shutdown.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/modules.d/99shutdown/shutdown.sh b/modules.d/99shutdown/shutdown.sh
index c8ca664..8817a4c 100755
--- a/modules.d/99shutdown/shutdown.sh
+++ b/modules.d/99shutdown/shutdown.sh
@@ -10,6 +10,7 @@
#!/bin/sh
. /lib/dracut-lib.sh
export TERM=linux
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
emergency_shell()
{

View File

@ -1,23 +0,0 @@
From 56bf6156d6022b30f5354467f552496e8b87a71b Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 22 Mar 2012 17:05:20 +0100
Subject: [PATCH] 99base/init.sh: revert the "cp" "mv" change for
/run/initramfs
---
modules.d/99base/init.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh
index 84c13e0..2f87a20 100755
--- a/modules.d/99base/init.sh
+++ b/modules.d/99base/init.sh
@@ -68,7 +68,7 @@ fi
if ! ismounted /run; then
mkdir -m 0755 /newrun
mount -t tmpfs -o mode=0755,nosuid,nodev tmpfs /newrun >/dev/null
- mv /run/* /newrun >/dev/null 2>&1
+ cp -a /run/* /newrun >/dev/null 2>&1
mount --move /newrun /run
rm -fr /newrun
fi

View File

@ -9,8 +9,8 @@
%endif
Name: dracut
Version: 017
Release: 62.git20120322%{?dist}
Version: 018
Release: 1%{?dist}
Summary: Initramfs generator using udev
%if 0%{?fedora} || 0%{?rhel}
@ -24,67 +24,6 @@ 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
Patch1: 0001-99fs-lib-module-setup.sh-removed-touch.patch
Patch2: 0002-95nfs-module-setup.sh-removed-egrep-and-ls-calls.patch
Patch3: 0003-30convertfs-convertfs.sh-use-hardlinks-for-inter-usr.patch
Patch4: 0004-dracut-functions.sh-get_fs_env-replaced-egrep-with-s.patch
Patch5: 0005-dracut-functions.sh-instmods-replace-egrep-with-shel.patch
Patch6: 0006-dracut-functions.sh-instmods-removed-special-case-fo.patch
Patch7: 0007-dracut-functions.sh-instmods-print-only-filename-ins.patch
Patch8: 0008-dracut.sh-dracut-functions.sh-use-a-marker-dir-for-k.patch
Patch9: 0009-dracut.spec-require-hardlink.patch
Patch10: 0010-95terminfo-module-setup.sh-no-need-to-call-find.patch
Patch11: 0011-10i18n-module-setup.sh-optimize-install-of-all-kbd-f.patch
Patch12: 0012-make-bzip2-optional.patch
Patch13: 0013-TODO-update.patch
Patch14: 0014-98usrmount-mount-usr.sh-ignore-comments-in-fstab.patch
Patch15: 0015-98usrmount-mount-usr.sh-check-if-we-have-NEWROOT-etc.patch
Patch16: 0016-30convertfs-convertfs.sh-correct-check-for-usr-bin.patch
Patch17: 0017-90crypt-parse-crypt.sh-simplify-rd.luks.uuid-testing.patch
Patch18: 0018-dracut-functions.sh-install_kmod_with_fw-delay-.kern.patch
Patch19: 0019-Fix-correct-nfs-path.patch
Patch20: 0020-move-emergency_shell-to-dracut-lib.sh.patch
Patch21: 0021-url-lib-make-nfs-support-optional.patch
Patch22: 0022-40network-kill-dhclient.sh-kill-dhclient-silently.patch
Patch23: 0023-write-ifcfg.sh-cleanups.patch
Patch24: 0024-write-ifcfg.sh-add-UUID-.-and-save-the-lease-files-w.patch
Patch25: 0025-fix-apply-live-updates-failing-because-of-lib-symlin.patch
Patch26: 0026-40network-net-genrules.sh-move-ifup-in-the-initqueue.patch
Patch27: 0027-dracut-functions.sh-check-for-.kernelmodseen-dir-bef.patch
Patch28: 0028-ifup.sh-check-for-m-to-set-manualup.patch
Patch29: 0029-get-rid-of-tmp-root.info.patch
Patch30: 0030-TEST-20-NFS-use-ext3-on-server-and-fsck-after-kill.patch
Patch31: 0031-add-initqueue-to-hookdirs-and-create-them-in-dracut-.patch
Patch32: 0032-98pollcdrom-factored-out-the-ugly-cdrom-polling-in-t.patch
Patch33: 0033-move-wait_for_loginit-to-dracut-lib.sh.patch
Patch34: 0034-network-refactor-stuff-from-netroot-parse-ip-opts-to.patch
Patch35: 0035-add-initqueue-env-and-online-hook.patch
Patch36: 0036-TEST-20-NFS-test.sh-fsck-with-a.patch
Patch37: 0037-95iscsi-iscsiroot.sh-fix-for-empty-root.patch
Patch38: 0038-dracut.spec-add-98pollcdrom.patch
Patch39: 0039-install-ctcm-network-module-on-s390.patch
Patch40: 0040-img-lib-fix-unpack_img.patch
Patch41: 0041-url-lib-clean-up-output.patch
Patch42: 0042-Add-live.updates-to-livenet-module.patch
Patch43: 0043-README-added-github-and-sourceforge-git-links.patch
Patch44: 0044-AUTHORS-update.patch
Patch45: 0045-remove-dracut-gencmdline.patch
Patch46: 0046-replace-xml-documentation-with-asciidoc.patch
Patch47: 0047-precompile-doc.patch
Patch48: 0048-TEST-10-RAID-wait-for-udev-settle-before-deconstruct.patch
Patch49: 0049-NEWS-update.patch
Patch50: 0050-remove-ctty.patch
Patch51: 0051-remove-openvt-and-use-setsid-c-if-possible.patch
Patch52: 0052-TEST-01-BASIC-add-setsid.patch
Patch53: 0053-fix-execvp-No-such-file-or-directory-in-emergency_sh.patch
Patch54: 0054-Make-sure-set-x-gets-turned-back-on-in-wait_for_logi.patch
Patch55: 0055-Do-not-mount-bind-run-anymore.patch
Patch56: 0056-98selinux-selinux-loadpolicy.sh-use-mount-rbind-for-.patch
Patch57: 0057-Avoid-use-of-export-n.patch
Patch58: 0058-provide-name-based-nbd-connects.patch
Patch59: 0059-dracut.asc-set-level-down-for-the-manpage-includes.patch
Patch60: 0060-shutdown-fix-PATH.patch
Patch61: 0061-99base-init.sh-revert-the-cp-mv-change-for-run-initr.patch
BuildArch: noarch
@ -135,7 +74,7 @@ Requires: filesystem >= 2.1.0
Requires: findutils
Requires: grep
Requires: hardlink
Requires: gzip
Requires: gzip xz
Requires: module-init-tools >= 3.7-9
Requires: sed
Requires: udev > 166
@ -312,6 +251,7 @@ rm -rf $RPM_BUILD_ROOT
%{dracutlibdir}/modules.d/30convertfs
%{dracutlibdir}/modules.d/45url-lib
%{dracutlibdir}/modules.d/50plymouth
%{dracutlibdir}/modules.d/80cms
%{dracutlibdir}/modules.d/90btrfs
%{dracutlibdir}/modules.d/90crypt
%{dracutlibdir}/modules.d/90dm
@ -389,6 +329,9 @@ rm -rf $RPM_BUILD_ROOT
%dir /var/lib/dracut/overlay
%changelog
* Thu Apr 05 2012 Harald Hoyer <harald@redhat.com> 018-1
- version 018
* Thu Mar 22 2012 Harald Hoyer <harald@redhat.com> 017-62.git20120322
- fixed /run prefix copying

View File

@ -1 +1 @@
bf8e4045d5cb9e5186ac267520d28465 dracut-017.tar.bz2
cbd88a03bb423be06a0b10ece10a7e1c dracut-018.tar.bz2