Browse Source

[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 16 years ago committed by Dave Jones
parent
commit
955f8b09ad
  1. 3
      Makefile
  2. 6
      dracut
  3. 4
      echoer
  4. 7
      init
  5. 2
      pre-mount/50cryptroot
  6. 2
      rules.d/63-luks.rules

3
Makefile

@ -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

@ -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

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

7
init

@ -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

2
pre-mount/50cryptroot

@ -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
} }

2
rules.d/63-luks.rules

@ -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"

Loading…
Cancel
Save