[PATCH 44/50] Get rid of echoer script

We can use sh -c to accomplish the same goal

Also move cat back on to the list of debugging tools -- all the files we were
using it on in the initrd can use read to accomplish the same goal.
master
Victor Lowther 2009-02-13 04:43:16 -08:00 committed by Dave Jones
parent 7d18dca5c1
commit 955f8b09ad
6 changed files with 9 additions and 15 deletions

View File

@ -11,9 +11,8 @@ install:
install -m 0755 init $(DESTDIR)/usr/libexec/dracut/init install -m 0755 init $(DESTDIR)/usr/libexec/dracut/init
install -m 0755 switch_root $(DESTDIR)/usr/libexec/dracut/switch_root install -m 0755 switch_root $(DESTDIR)/usr/libexec/dracut/switch_root
install -m 0755 dracut-functions $(DESTDIR)/usr/libexec/dracut/functions install -m 0755 dracut-functions $(DESTDIR)/usr/libexec/dracut/functions
install -m 0755 echoer $(DESTDIR)/usr/libexec/dracut/echoer
mkdir $(DESTDIR)/usr/libexec/dracut/rules.d mkdir $(DESTDIR)/usr/libexec/dracut/rules.d
for rule in rules.d/*.rules ; do install -m 0644 $$rule $(DESTDIR)/usr/libexec/dracut/rules.d ; done for rule in rules.d/*.rules ; do install -m 0644 $$rule $(DESTDIR)/usr/libexec/dracut ; done
for hooks in pre-*/* ; do install -m 0755 $$hook $(DESTDIR/usr/libexec/dracut ; done for hooks in pre-*/* ; do install -m 0755 $$hook $(DESTDIR/usr/libexec/dracut ; done
clean: clean:
rm -f *~ rm -f *~

6
dracut
View File

@ -36,7 +36,6 @@ fi
initfile=$dsrc/init initfile=$dsrc/init
switchroot=$dsrc/switch_root switchroot=$dsrc/switch_root
rulesdir=$dsrc/rules.d rulesdir=$dsrc/rules.d
echoer=$dsrc/echoer
hookdirs="pre-udev pre-mount pre-pivot" hookdirs="pre-udev pre-mount pre-pivot"


initdir=$(mktemp -d -t initramfs.XXXXXX) initdir=$(mktemp -d -t initramfs.XXXXXX)
@ -48,11 +47,11 @@ for d in bin sbin usr/bin usr/sbin usr/lib etc proc sys sysroot dev/pts; do
done done


# executables that we have to have # executables that we have to have
exe="bash mount mknod mkdir modprobe udevd udevadm nash pidof sleep chroot echo cat sed" exe="bash mount mknod mkdir modprobe udevd udevadm nash pidof sleep chroot echo sed"
lvmexe="lvm" lvmexe="lvm"
cryptexe="cryptsetup" cryptexe="cryptsetup"
# and some things that are nice for debugging # and some things that are nice for debugging
debugexe="ls ln ps grep more dmesg" debugexe="ls ln ps grep more dmesg cat"
# udev things we care about # udev things we care about
udevexe="/lib/udev/vol_id /lib/udev/console_init" udevexe="/lib/udev/vol_id /lib/udev/console_init"


@ -70,7 +69,6 @@ fi
# install our scripts and hooks # install our scripts and hooks
inst "$initfile" "/init" inst "$initfile" "/init"
inst "$switchroot" "/sbin/switch_root" inst "$switchroot" "/sbin/switch_root"
inst "$echoer" "/echoer"
for hookdir in $hookdirs; do for hookdir in $hookdirs; do
for hook in "$dsrc/$hookdir"/*; do for hook in "$dsrc/$hookdir"/*; do
[[ -f $hook ]] && inst "$hook" "/$hookdir/${hook##*/}" [[ -f $hook ]] && inst "$hook" "/$hookdir/${hook##*/}"

4
echoer
View File

@ -1,4 +0,0 @@
#!/bin/sh
target=$1
shift
echo "$@" >"$target"

7
init
View File

@ -10,12 +10,13 @@ emergency_shell()
echo ; echo echo ; echo
echo "Bug in initramfs /init detected. Dropping to a shell. Good luck!" echo "Bug in initramfs /init detected. Dropping to a shell. Good luck!"
echo echo
exec sh -i sh -i 2>/dev/console
} }


getarg() { getarg() {
local o; local o line
for o in $(cat /proc/cmdline); do read -r line </proc/cmdline
for o in $line; do
[ "${o%%=*}" = "$1" ] && { echo $o; break; } [ "${o%%=*}" = "$1" ] && { echo $o; break; }
done done
return 1 return 1

View File

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
[ -f /cryptroot ] && { [ -f /cryptroot ] && {
echo "Encrypted root detected." echo "Encrypted root detected."
cryptopts=$(cat /cryptroot) read cryptopts </cryptroot
/sbin/cryptsetup luksOpen $cryptopts || emergency_shell /sbin/cryptsetup luksOpen $cryptopts || emergency_shell
udevadm settle --timeout=30 udevadm settle --timeout=30
} }

View File

@ -8,6 +8,6 @@ SUBSYSTEM!="block", GOTO="luks_end"
ACTION!="add|change", GOTO="luks_end" ACTION!="add|change", GOTO="luks_end"


KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode" KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode"
ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="/echoer /cryptroot $env{DEVNAME} luks-$env{ID_FS_UUID}" ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="/bin/sh -c 'echo $env{DEVNAME} luks-$env{ID_FS_UUID} >/cryptroot'"


LABEL="luks_end" LABEL="luks_end"