wok-next annotate busybox/stuff/init @ rev 21721

created recipes for efivar and efibootmgr
author Hans-G?nter Theisgen
date Tue Sep 01 10:09:15 2020 +0100 (2020-09-01)
parents
children
rev   line source
al@19875 1 #!/bin/busybox sh
al@19875 2
al@19875 3 export PATH=/bin
al@19875 4 export HOME=/
al@19875 5 export TERM=vt100
al@19875 6
al@19875 7 if [ -d /etc ]; then
al@19875 8 [ -n "$domain" ] && echo search $domain > /etc/resolv.conf
al@19875 9 for i in $dns; do
al@19875 10 echo nameserver $i
al@19875 11 done >> /etc/resolv.conf
al@19875 12 [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
al@19875 13 [ -n "$subnet" ] && NETMASK="netmask $subnet"
al@19875 14 if ifconfig $interface ${ip:-0.0.0.0} $BROADCAST $NETMASK; then
al@19875 15 while route del default gw 0.0.0.0 dev $interface; do
al@19875 16 :
al@19875 17 done
al@19875 18 for i in $router; do
al@19875 19 route add default gw $i dev $interface
al@19875 20 done
al@19875 21 fi
al@19875 22 exit
al@19875 23 fi
al@19875 24
al@19875 25 mkdir /tmp /mnt /proc /etc
al@19875 26 mount -t proc none /proc
al@19875 27 mount -t devtmpfs none /dev
al@19875 28
al@19875 29 arg() {
al@19875 30 root="$(sed "s/^/ /; s/$/ /; / $1=/!d; s/.* $1=\\([^ ]*\\).*/\\1/" </proc/cmdline)"
al@19875 31 [ -n "$root" ]
al@19875 32 }
al@19875 33
al@19875 34 arg init
al@19875 35 init=${root:-/sbin/init}
al@19875 36 [ -n "$(sed 's/$/ /; s/^/ /; / ro /!d' /proc/cmdline)" ] && ro="-o ro"
al@19875 37 [ -n "$(sed 's/$/ /; s/^/ /; / rw /!d' /proc/cmdline)" ] && ro="-o rw"
al@19875 38
al@19875 39 arg root &&
al@19875 40 root="$(echo $root | sed 's|/|\\\\/|g')" &&
al@19875 41 root="$(blkid | sed "s/\"//g; /$root/!d; s/:.*//;q")" &&
al@19875 42 [ -n "$root" ] &&
al@19875 43 mount $ro $root /mnt
al@19875 44
al@19875 45 arg loopfs &&
al@19875 46 losetup /dev/loop0 /mnt/$root &&
al@19875 47 mount /dev/loop0 /mnt
al@19875 48
al@19875 49 arg subroot &&
al@19875 50 cp /bin/busybox /mnt/$root/dev/shm &&
al@19875 51 chroot="$root/dev/shm/busybox chroot $root"
al@19875 52
al@19875 53 [ -x /mnt/$root/$init ] &&
al@19875 54 umount /dev &&
al@19875 55 umount /proc &&
al@19875 56 exec switch_root mnt $chroot $init
al@19875 57
al@19875 58 [ -d /proc/bus/usb ] &&
al@19875 59 mount -t usbfs usbfs /proc/bus/usb
al@19875 60
al@19875 61 while read type dir; do
al@19875 62 grep -qs $type /proc/filesystems || continue
al@19875 63 [ -d "$dir" ] || mkdir $dir
al@19875 64 mount -t $type none $dir
al@19875 65 done <<EOM
al@19875 66 sysfs /sys
al@19875 67 devpts /dev/pts
al@19875 68 EOM
al@19875 69
al@19875 70 TTY=$(tty 2>/dev/null)
al@19875 71 TTY=${TTY:-/dev/tty1}
al@19875 72
al@19875 73 stty -F $TTY rows 30 2>/dev/null # for jslinux only
al@19875 74
al@19875 75 udhcpc -b -s /init
al@19875 76 while true; do
al@19875 77 busybox | sed '/Current/,$!d'
al@19875 78 setsid sh -c "exec sh <$TTY >$TTY 2>&1"
al@19875 79 done