slitaz-modular rev 22
Update init and linuxrc scripts.
author | Christopher Rogers <slaxemulator@gmail.com> |
---|---|
date | Wed Jan 19 02:54:34 2011 +0000 (2011-01-19) |
parents | addad59ccab5 |
children | 3a30fa829e2a |
files | initramfs/init initramfs/linuxrc |
line diff
1.1 --- a/initramfs/init Sun Dec 26 23:31:03 2010 +0000 1.2 +++ b/initramfs/init Wed Jan 19 02:54:34 2011 +0000 1.3 @@ -2,6 +2,7 @@ 1.4 1.5 launch_init() 1.6 { 1.7 + umount /proc 1.8 echo -e "\\033[70G[ \\033[1;33mOK\\033[0;39m ]" 1.9 exec /sbin/switch_root mnt /sbin/init 1.10 } 1.11 @@ -9,20 +10,21 @@ 1.12 launch_init_modular() 1.13 { 1.14 echo -e "\\033[70G[ \\033[1;33mOK\\033[0;39m ]" 1.15 - [ -d /mnt/memory/initramfs ] || mkdir -p /mnt/memory/initramfs 1.16 + [ -d /mnt/initramfs ] || mkdir -p /mnt/initramfs 1.17 SYS_DIR="dev bin etc boot lib sbin home root usr var" 1.18 for dir in $SYS_DIR; do 1.19 - cp -a /$dir /mnt/memory/initramfs 1.20 + cp -a /$dir /mnt/initramfs 1.21 done 1.22 MK_DIR="sys proc tmp media mnt" 1.23 for dir1 in $MK_DIR; do 1.24 - mkdir -p /mnt/memory/initramfs/$dir 1.25 + mkdir -p /mnt/initramfs/$dir 1.26 done 1.27 exec /sbin/switch_root mnt /linuxrc 1.28 } 1.29 1.30 failed() 1.31 { 1.32 + umount /proc 1.33 echo -e "\\033[70G[ \\033[1;31mFailed\\033[0;39m ]" 1.34 } 1.35 1.36 @@ -51,7 +53,7 @@ 1.37 [ -n "$1" ] && for i in $@ ; do 1.38 cp -a $i /mnt$(dirname $i) 1.39 done 1.40 - umount /proc 1.41 + mount /mnt -o remount,ro 1.42 launch_init 1.43 fi 1.44 failed 1.45 @@ -105,6 +107,8 @@ 1.46 root="$(sed 's/.*softraid=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.47 echo -n "Switching / to softraid $root..." 1.48 mdadm --examine --scan --config=partitions > /etc/mdadm.conf 1.49 + grep -qs " $root " /etc/mdadm.conf || 1.50 + root=$(awk '/dev.md/ { print $2; exit }' < /etc/mdadm.conf) 1.51 grep level=raid /etc/mdadm.conf | load_raid 1.52 mdadm --assemble --scan 1.53 lvmsetup 1.54 @@ -114,11 +118,10 @@ 1.55 echo -n "Switching / to lvm $root..." 1.56 mount_mapper 1.57 fi 1.58 -if grep -q loopfs= /proc/cmdline; then 1.59 - loopfs="$(sed 's/.*loopfs=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.60 - dev=${loopfs%,*} 1.61 - loopfs=${loopfs#*,} 1.62 - echo -n "Switching / to loop $loopfs on $dev..." 1.63 +if grep -q mount= /proc/cmdline; then 1.64 + root="$(sed 's/.*mount=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.65 + dev=$(blkid | grep $root | sed 's/:.*//;q') 1.66 + echo -n "Mounting $dev ($root) ..." 1.67 if ! mount $dev /mnt; then 1.68 if echo $dev | grep -q "/dev/sd"; then 1.69 delay=`cat /sys/module/usb_storage/parameters/delay_use` 1.70 @@ -126,20 +129,27 @@ 1.71 echo -n "sleep for $delay seconds..." 1.72 sleep $delay 1.73 fi 1.74 - mount $dev /mnt || loopfs="" 1.75 + mount $dev /mnt 1.76 fi 1.77 - if [ -n "$loopfs" ]; then 1.78 - losetup /dev/loop0 /mnt/$loopfs 1.79 - mount /dev/loop0 /mnt 2> /dev/null 1.80 - fi 1.81 - try_init 1.82 +fi 1.83 +if grep -q loopfs= /proc/cmdline; then 1.84 + loopfs="$(sed 's/.*loopfs=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.85 + echo -n "Switching / to loop $loopfs..." 1.86 + losetup /dev/loop0 /mnt/$loopfs 1.87 + mount /dev/loop0 /mnt 2> /dev/null 1.88 fi 1.89 grep -q cryptoroot= /proc/cmdline && try_init 1.90 -if grep -q rootuuid= /proc/cmdline; then 1.91 - root="$(sed 's/.*rootuuid=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.92 - mount $(blkid | grep $root | sed 's/:.*//') /mnt && try_init 1.93 +umount /sys 1.94 +if grep -q subroot= /proc/cmdline; then 1.95 + subroot="/$(sed 's/.*subroot=\([^ ]*\).*/\1/' < /proc/cmdline)" && 1.96 + if [ -s /usr/share/boot/busybox-static ]; then 1.97 + mv /usr/share/boot/busybox-static . 1.98 + /busybox-static rm -rf /etc /lib /*bin /usr /var 1.99 + exec /busybox-static chroot /mnt$subroot /sbin/init 1.100 + else 1.101 + exec chroot /mnt$subroot /sbin/init 1.102 + fi 1.103 fi 1.104 -umount /sys 1.105 echo -n "Switching / to tmpfs..." 1.106 size="$(grep rootfssize= < /proc/cmdline | \ 1.107 sed 's/.*rootfssize=\([0-9]*[kmg%]\).*/-o size=\1/')"
2.1 --- a/initramfs/linuxrc Sun Dec 26 23:31:03 2010 +0000 2.2 +++ b/initramfs/linuxrc Wed Jan 19 02:54:34 2011 +0000 2.3 @@ -179,9 +179,9 @@ 2.4 debug_shell 2.5 2.6 # setup initramfs if it exist 2.7 -if [ -d /memory/initramfs ]; then 2.8 +if [ -d /initramfs ]; then 2.9 echolog "Setup initramfs for first module..." 2.10 - mount -n -o remount,add:1:/memory/initramfs=ro aufs $UNION 2.11 + mount -n -o remount,add:1:/initramfs=ro aufs $UNION 2.12 fi 2.13 2.14 debug_shell