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: @@ -11,9 +11,8 @@ install:
install -m 0755 init $(DESTDIR)/usr/libexec/dracut/init
install -m 0755 switch_root $(DESTDIR)/usr/libexec/dracut/switch_root
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
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
clean:
rm -f *~

6
dracut

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

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 @@ -48,11 +47,11 @@ for d in bin sbin usr/bin usr/sbin usr/lib etc proc sys sysroot dev/pts; do
done

# 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"
cryptexe="cryptsetup"
# 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
udevexe="/lib/udev/vol_id /lib/udev/console_init"

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

4
echoer

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

7
init

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

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

2
pre-mount/50cryptroot

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

2
rules.d/63-luks.rules

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

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"

Loading…
Cancel
Save