slitaz-modular rev 166
initramfs: Updated init and linuxrc.
author | Christopher Rogers <slaxemulator@gmail.com> |
---|---|
date | Fri Feb 24 18:58:07 2012 -0500 (2012-02-24) |
parents | 666c76a20586 |
children | 3528c0778d4b |
files | initramfs/init initramfs/linuxrc |
line diff
1.1 --- a/initramfs/init Tue Jan 24 05:06:38 2012 -0500 1.2 +++ b/initramfs/init Fri Feb 24 18:58:07 2012 -0500 1.3 @@ -1,35 +1,51 @@ 1.4 #!/bin/sh 1.5 1.6 +success() 1.7 +{ 1.8 + cat > /tmp/init 1.9 + [ -d /proc/sys ] && umount /proc 1.10 + echo -e "\\033[70G[ \\033[1;32mOK\\033[0;39m ]" 1.11 + exit 1.12 +} 1.13 + 1.14 launch_init() 1.15 { 1.16 + mount --move /dev/pts /mnt/dev/pts 1.17 + mount --move /dev/shm /mnt/dev/shm 1.18 + success <<EOT 1.19 +exec /sbin/switch_root mnt /sbin/init 1.20 +EOT 1.21 +} 1.22 + 1.23 +failed() 1.24 +{ 1.25 [ -d /proc/sys ] && umount /proc 1.26 - echo -e "\\033[70G[ \\033[1;32mOK\\033[0;39m ]" 1.27 - exec /sbin/switch_root mnt /sbin/init 1.28 + echo -e "\\033[70G[ \\033[1;31mFailed\\033[0;39m ]" 1.29 } 1.30 1.31 launch_init_modular() 1.32 { 1.33 - [ -d /proc/sys ] && umount /proc 1.34 echo -e "\\033[70G[ \\033[1;32mOK\\033[0;39m ]" 1.35 [ -d /mnt/initramfs ] || mkdir -p /mnt/initramfs 1.36 SYS_DIR="dev bin etc boot lib sbin home root run usr var" 1.37 for dir in $SYS_DIR; do 1.38 cp -a /$dir /mnt/initramfs 1.39 done 1.40 - [ -f /mnt/dev/sdc ] || mknod /mnt/dev/sdc b 8 32 1.41 - [ -f /mnt/dev/sdc1 ] || mknod /mnt/dev/sdc1 b 8 33 1.42 MK_DIR="sys proc tmp media mnt" 1.43 for dir1 in $MK_DIR; do 1.44 mkdir -p /mnt/initramfs/$dir1 1.45 done 1.46 - exec /sbin/switch_root mnt /linuxrc 1.47 -} 1.48 - 1.49 -failed() 1.50 -{ 1.51 - [ -d /proc/sys ] && umount /proc 1.52 - echo -e "\\033[70G[ \\033[1;31mFailed\\033[0;39m ]" 1.53 - conspy -d 1 > /init.log 1.54 + mount --move /dev /mnt/dev 1.55 + [ -f /mnt/dev/sdc ] || mknod /mnt/dev/sdc b 8 32 1.56 + [ -f /mnt/dev/sdc1 ] || mknod /mnt/dev/sdc1 b 8 33 1.57 + mount --move /run /mnt/run 1.58 + mkdir -p /mnt/dev/pts 1.59 + mount --move /dev/pts /mnt/dev/pts 1.60 + mkdir -p /mnt/dev/shm 1.61 + mount --move /dev/shm /mnt/dev/shm 1.62 + success <<EOT 1.63 +exec /sbin/switch_root mnt /linuxrc 1.64 +EOT 1.65 } 1.66 1.67 try_init() 1.68 @@ -91,12 +107,20 @@ 1.69 done 1.70 } 1.71 1.72 -mount -t proc proc /proc 1.73 -mount -t sysfs sysfs /sys 1.74 -echo -n "Switching / to " 1.75 +if [ "$1" != "logged" ]; then 1.76 + mount -t devpts devpts /dev/pts 1.77 + mount -t tmpfs tmpfs /dev/shm 1.78 + script -qc '/init logged' /dev/shm/boot.log 1.79 + . /tmp/init 1.80 +else 1.81 +mountpoint -q /proc || mount -t proc proc /proc -o nosuid,noexec,nodev 1.82 +mountpoint -q /sys || mount -t sysfs sys /sys -o nosuid,noexec,nodev 1.83 +mountpoint -q /run || mount -t tmpfs run /run -o mode=0755,nosuid,nodev 1.84 +mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid 1.85 + 1.86 if grep -q dmraid= /proc/cmdline; then 1.87 root="$(sed 's/.*dmraid=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.88 - echo -n "dmraid $root..." 1.89 + echo -n "Switching / to dmraid $root..." 1.90 dmraid -s | grep ^type | awk '{ print $3 }' | load_raid 1.91 case "$root" in 1.92 /dev/*);; 1.93 @@ -108,7 +132,7 @@ 1.94 fi 1.95 if grep -q softraid= /proc/cmdline; then 1.96 root="$(sed 's/.*softraid=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.97 - echo -n "softraid $root..." 1.98 + echo -n "Switching / to softraid $root..." 1.99 mdadm --examine --scan --config=partitions > /etc/mdadm.conf 1.100 grep -qs " $root " /etc/mdadm.conf || 1.101 root=$(awk '/dev.md/ { print $2; exit }' < /etc/mdadm.conf) 1.102 @@ -122,13 +146,13 @@ 1.103 mount_mapper /etc/mdadm.conf 1.104 fi 1.105 if lvmsetup; then 1.106 - echo -n "lvm $root..." 1.107 + echo -n "Switching / to lvm $root..." 1.108 mount_mapper 1.109 fi 1.110 if grep -q mount= /proc/cmdline; then 1.111 root="$(sed 's/.*mount=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.112 dev=$(blkid | grep $root | sed 's/:.*//;q') 1.113 - echo -n "Mounting $dev ($root) ..." 1.114 + echo "Mounting $dev ($root) ..." 1.115 if ! mount $dev /mnt; then 1.116 if echo $dev | grep -q "/dev/sd"; then 1.117 delay=`cat /sys/module/usb_storage/parameters/delay_use` 1.118 @@ -142,37 +166,45 @@ 1.119 fi 1.120 if grep -q loopfs= /proc/cmdline; then 1.121 loopfs="$(sed 's/.*loopfs=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.122 - echo -n "loop $loopfs..." 1.123 + echo -n "Into loop file $loopfs..." 1.124 losetup /dev/loop0 /mnt/$loopfs 1.125 mount /dev/loop0 /mnt 2> /dev/null 1.126 fi 1.127 if grep -q bindfs= /proc/cmdline; then 1.128 bind="$(sed 's/.*bindfs=\([^ ]*\).*/\1/' < /proc/cmdline)" 1.129 + echo "Binding ${bind/,/ to } ..." 1.130 mount --bind /mnt/${bind%,*} /mnt/${bind%,*}/${bind#*,} 1.131 fi 1.132 grep -q cryptoroot= /proc/cmdline && try_init 1.133 umount /sys 1.134 if grep -q subroot= /proc/cmdline; then 1.135 subroot="/$(sed 's/.*subroot=\([^ ]*\).*/\1/' < /proc/cmdline)" && 1.136 - if [ -s /usr/share/boot/busybox-static ]; then 1.137 - mv /usr/share/boot/busybox-static . 1.138 - /busybox-static rm -rf /etc /lib /*bin /usr /var 1.139 - exec /busybox-static chroot /mnt$subroot /sbin/init 1.140 + echo -n "Chrooting to $subroot..." 1.141 + mount --move /dev/pts /mnt$subroot/dev/pts 1.142 + shm=$subroot/dev/shm 1.143 + mount --move /dev/shm /mnt$shm && 1.144 + if mv /usr/share/boot/busybox-static /mnt$shm 2> /dev/null; then 1.145 + success <<EOT 1.146 +exec /sbin/switch_root mnt $shm/busybox-static chroot $subroot /sbin/init 1.147 +EOT 1.148 else 1.149 - exec chroot /mnt$subroot /sbin/init 1.150 + success <<EOT 1.151 +exec chroot /mnt$subroot /sbin/init 1.152 +EOT 1.153 fi 1.154 fi 1.155 -echo -n "tmpfs..." 1.156 +echo -n "Switching / to tmpfs" 1.157 size="$(grep rootfssize= < /proc/cmdline | \ 1.158 sed 's/.*rootfssize=\([0-9]*[kmg%]\).*/-o size=\1/')" 1.159 free=$(busybox free | busybox awk '/Mem:/ { print int(($4*100)/$3) }') 1.160 umount /proc 1.161 [ -n "$size" ] || size="-o size=90%" 1.162 -if [ $free -lt 100 ] || ! mount -t tmpfs $size tmpfs /mnt; then 1.163 +echo "exec /sbin/init" > /tmp/init 1.164 +if [ $free -lt 50 ] || ! mount -t tmpfs $size tmpfs /mnt; then 1.165 echo -e "\\033[70G[ \\033[1;33mSkipped\\033[0;39m]" 1.166 - exec /sbin/init 1.167 + exit 1.168 fi 1.169 -for i in $(ls -a /); do 1.170 +for i in $(ls -ar /); do 1.171 case "$i" in 1.172 .|..) ;; 1.173 mnt) mkdir /mnt/mnt;; 1.174 @@ -184,3 +216,4 @@ 1.175 esac 1.176 done 1.177 launch_init_modular 1.178 +fi
2.1 --- a/initramfs/linuxrc Tue Jan 24 05:06:38 2012 -0500 2.2 +++ b/initramfs/linuxrc Fri Feb 24 18:58:07 2012 -0500 2.3 @@ -4,8 +4,8 @@ 2.4 2.5 export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin 2.6 2.7 -mount -n -t proc proc /proc 2.8 -mount -n -t sysfs sysfs /sys 2.9 +mount -t proc proc /proc -o nosuid,noexec,nodev 2.10 +mount -t sysfs sys /sys -o nosuid,noexec,nodev 2.11 #mount -n -o remount,rw / # for the case we forgot rw boot option 2.12 ln -sf /proc/mounts /etc/mtab # this allows us to use umount -a 2.13 2.14 @@ -320,8 +320,12 @@ 2.15 #mount -n -o move /proc proc 2.16 #mount -n -o move /sys sys 2.17 fumount /sys 2.18 +fumount /run 2.19 +fumount /dev 2.20 2.21 if [ ! -e /dev/console ]; then mknod /dev/console c 5 1; fi 2.22 +if [ ! -d dev/shm ]; then mkdir -p dev/shm; fi 2.23 +if [ ! -d dev/pts ]; then mkdir -p dev/pts; fi 2.24 2.25 # find chroot and init 2.26 if [ -x bin/chroot ]; then CHROOT=bin/chroot; fi