]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
[PATCH 35/50] POSIX-ize all the shell scripts that get installed to the initramfs.
authorVictor Lowther <victor.lowther@gmail.com>
Fri, 13 Feb 2009 12:42:55 +0000 (04:42 -0800)
committerDave Jones <davej@redhat.com>
Mon, 16 Feb 2009 18:56:42 +0000 (13:56 -0500)
Also install all the scripts using inst, so that we can install the right
shell interpreter for our scripts.  We still install bash as well.

dracut
echoer
init
pre-mount/50cryptroot
pre-mount/99resume
pre-pivot/50selinux-loadpolicy

diff --git a/dracut b/dracut
index aec20c0a215058fdb4acc217a6458fed69a42c94..c5f68c74d089774b7a4ee2a3621f4209fdf0f3a1 100755 (executable)
--- a/dracut
+++ b/dracut
@@ -108,9 +108,9 @@ if [ -f /etc/sysconfig/i18n ]; then
 fi
 
 # install our files
-cp $initfile "$initdir/init"
-cp $switchroot "$initdir/sbin/switch_root"
-cp $echoer "$initdir/echoer"
+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##*/}"
diff --git a/echoer b/echoer
index 249155d538c843a7f7e94375eae201148dbe3f0e..9fc7abfd87f5260612d0d616d4021c26ca318ee2 100755 (executable)
--- a/echoer
+++ b/echoer
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 target=$1
 shift
 echo "$@" >"$target"
\ No newline at end of file
diff --git a/init b/init
index 611781cb9d4307cf2eec9f62a3a8986dd0cb227f..84ae051b9f393b9a04f6345fcc879012b253282d 100755 (executable)
--- a/init
+++ b/init
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 #
 # Licensed under the GPLv2
 #
@@ -10,28 +10,28 @@ emergency_shell()
     echo ; echo
     echo "Bug in initramfs /init detected. Dropping to a shell. Good luck!"
     echo
-    bash < /dev/console
+    sh < /dev/console
 }
 
 getarg() {
     local o;
-    for o in $(< /proc/cmdline); do
-       [[ $o == $1 ]] && { echo $o; break; }
+    for o in $(cat /proc/cmdline); do
+       [ "${o%%=*}" = "$1" ] && { echo $o; break; }
     done
     return 1
 }
 
 source_all() {
     local f
-    [[ $1 &&  -d /$1 ]] || return
-    for f in "/$1"/*; do [[ -f $f ]] && . "$f"; done
+    [ "$1" ] && [  -d "/$1" ] || return
+    for f in "/$1"/*; do [ -f "$f" ] && . "$f"; done
 }
 
 echo "Starting initrd..."
 export PATH=/sbin:/bin:/usr/sbin:/usr/bin
 export TERM=linux
 
-trap "emergency_shell" 0 2
+trap "emergency_shell" 0
 # /dev/console comes from the built-in initramfs crud in the kernel
 # someday, we may need to mkdir /dev first here
 exec > /dev/console 2>&1 < /dev/console
@@ -63,7 +63,7 @@ NEWROOT="/sysroot"
 # FIXME: there's got to be a better way ...
 # it'd be nice if we had a udev rule that just did all of the bits for
 # figuring out what the specified root is and linking it /dev/root
-root=$(getarg 'root=*'); root=${root#root=}
+root=$(getarg root); root=${root#root=}
 case $root in
     LABEL=*) root=${root#LABEL=}
              root=${root//\//\\x2f}
@@ -80,7 +80,7 @@ udevadm settle --timeout=30
 source_all pre-mount
 
 echo "Trying to mount rootfs $root"
-[[ -e $root ]] || emergency_shell
+[ -e "$root" ] || emergency_shell
 ln -s "$root" /dev/root    
 mount -o ro /dev/root $NEWROOT || emergency_shell
 
index 39e6e6ec33bc7cbb46e695e4858971c93aad917f..de7eca4a3862b60b8153064a36e36b5addca416a 100755 (executable)
@@ -1,6 +1,7 @@
-#!/bin/bash
-[[ -f /cryptroot ]] || return
-echo "Encrypted root detected."
-cryptopts=$(< /cryptroot)
-/sbin/cryptsetup luksOpen $cryptopts || emergency_shell
-udevadm settle --timeout=30
+#!/bin/sh
+[ -f /cryptroot ] && { 
+    echo "Encrypted root detected."
+    cryptopts=$(cat /cryptroot)
+    /sbin/cryptsetup luksOpen $cryptopts || emergency_shell
+    udevadm settle --timeout=30
+}
index 7eacd387f8e6cce3d44ef245c70e02475a60f0d0..4f1d6c31c45ec733682501b8a3ded891367dd104 100755 (executable)
@@ -1,7 +1,10 @@
-#!/bin/bash
-resume=$(getarg 'resume=*') || return
-resume=${resume#resume=}
-[[ -b $resume ]] || return
-# parsing the output of ls is Bad, but until there is a better way...
-read x x x x maj min x < <(ls -lH "$resume")
-echo "${maj/,/}:$min"> /sys/power/resume
+#!/bin/sh
+resume=$(getarg resume) && {
+    resume=${resume#resume=}
+    [ -b "$resume" ] && {
+        # parsing the output of ls is Bad, but until there is a better way...
+       ls -lH "$resume" | ( 
+           read x x x x maj min x;
+           echo "${maj%,}:$min"> /sys/power/resume)
+    }
+}
index 8cc3133f6af49832098f52c33cfc7be787937264..ceece632db51f94a9f711d064966c26b506c0dee 100755 (executable)
@@ -1,10 +1,11 @@
-#!/bin/bash
+#!/bin/sh
 # FIXME: load selinux policy.  this should really be done after we switchroot 
-[[ -x $NEWROOT/usr/sbin/load_policy ]] || return
-chroot $NEWROOT /usr/sbin/load_policy -i
-if (($? == 3)); then
-   echo "Initial SELinux policy load failed and enforcing mode requested."
-   echo "Not continuing"
-   sleep 100d
-   exit 1
-fi
+[ -x "$NEWROOT/usr/sbin/load_policy" ] && {
+    chroot $NEWROOT /usr/sbin/load_policy -i
+    if [ $? -eq 3 ]; then
+       echo "Initial SELinux policy load failed and enforcing mode requested."
+       echo "Not continuing"
+       sleep 100d
+       exit 1
+    fi
+}