wok annotate syslinux/stuff/iso2exe/init @ rev 23824

Up openssh (8.3p1)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu May 28 13:18:28 2020 +0000 (2020-05-28)
parents 3f40a3c71c48
children c2a80ff9499e
rev   line source
pascal@21302 1 #!/bin/sh
pascal@13691 2
pascal@13691 3 getarg()
pascal@13691 4 {
pascal@13691 5 sed "/$1=/!d;s/.*$1=\\([^ ]*\\).*/\\1/" /proc/cmdline
pascal@13691 6 }
pascal@13691 7
pascal@23820 8 myget()
pascal@17489 9 {
pascal@23820 10 od -v -j $1 -N ${4:-${3:-2}} -t u${3:-2} -w${3:-2} -An $2 2>/dev/null ||
pascal@23820 11 hexdump -v -s $1 -n ${4:-${3:-2}} -e "\"\" 1/${3:-2} \" %u\n\"" $2
pascal@17489 12 }
pascal@17489 13
pascal@16041 14 mount_proc()
pascal@16041 15 {
pascal@16041 16 mount -t proc /proc /proc
pascal@16041 17 mount -t sysfs /sys /sys
pascal@21801 18 udevd --daemon 2>/dev/null && udevadm trigger && sleep 5
pascal@16041 19 }
pascal@16041 20
pascal@16041 21 umount_proc()
pascal@16041 22 {
pascal@21801 23 killall udevd 2>/dev/null
pascal@21801 24 umount /sys/fs/fuse/connections 2>/dev/null
pascal@16041 25 umount /sys
pascal@16041 26 umount /proc
pascal@16041 27 }
pascal@16041 28
pascal@23820 29 checkmagic()
pascal@17473 30 {
pascal@23820 31 [ -s $1 ] && [ $(getarg magic) = $(myget 18 $1 2) ]
pascal@17473 32 }
pascal@17473 33
pascal@23820 34 media=/media/cdrom
pascal@23820 35 mnt=/mnt
pascal@13691 36 getiso()
pascal@13691 37 {
pascal@23820 38 mkdir -p $media
pascal@21801 39 for dev in /sys/block/?d?/?d??*; do
pascal@23820 40 mount /dev/$(basename $dev) $mnt
pascal@23820 41 if checkmagic $mnt/$ISO; then
pascal@23820 42 mount -o loop,ro $mnt/$ISO $media
pascal@17489 43 echo "Found $ISO on $(basename $dev)"
pascal@23820 44 ISO=$mnt/$ISO
pascal@19510 45 return 0
pascal@13713 46 fi
pascal@23820 47 umount $mnt
pascal@21801 48 done 2>/dev/null
pascal@19510 49 return 1
pascal@13691 50 }
pascal@13691 51
pascal@23820 52 uncpio=uncpio64
pascal@23820 53 uncpio64()
pascal@13691 54 {
pascal@21801 55 i=$1
pascal@21802 56 sed 's|$| |' /proc/cpuinfo | grep ' lm ' && [ -s ${i}64 ] && i=${i}64
pascal@21801 57 [ -s "$i" ] || return
pascal@21801 58 echo -en "\n Extracting $(basename $i) ..."
pascal@21801 59 case $(get 0 $i) in
pascal@21801 60 *35615) ( zcat || gunzip );;
pascal@21801 61 *14333) unxz;;
pascal@21801 62 *\ 93) unlzma;;
pascal@21801 63 *) cat;;
pascal@21801 64 esac < $i | ( cd ${2:-/}; cpio -idmu > /dev/null 2>&1 )
pascal@13691 65 }
pascal@13691 66
pascal@23820 67 tty0=tty0
pascal@13697 68
pascal@13697 69 bootlog()
pascal@13697 70 {
pascal@23820 71 dialog --clear --title " Linux boot messages " \
pascal@13697 72 --textbox /tmp/dmesg 24 78
pascal@13697 73 }
pascal@13697 74
pascal@16041 75 gotposixovl()
pascal@16041 76 {
pascal@20771 77 mount.posixovl 2>&1 | grep -qi usage &&
pascal@16041 78 echo -en "\"$1\" \"$2\""
pascal@16041 79 }
pascal@16041 80
pascal@23820 81 myis_loram()
pascal@23820 82 {
pascal@23820 83 [ -s /lib/modules/squashfs.ko* ]
pascal@23820 84 }
pascal@13697 85
pascal@13713 86 mount_loram()
pascal@13713 87 {
pascal@23820 88 myis_loram || return
pascal@21801 89 insmod /lib/modules/squashfs.ko* 2>/dev/null
pascal@23820 90 if [ -d $media/fs ]; then
pascal@23820 91 ln -s $media/fs /sqfs
pascal@13713 92 else
pascal@13713 93 mkdir /sqfs
pascal@23820 94 losetup -o 124 /dev/loop6 $(ls_r $media/boot/rootfs?*.* | sed q)
pascal@21801 95 mount -r /dev/loop6 /sqfs
pascal@13713 96 fi
pascal@21506 97 cp -a /sqfs/dev/fuse /sqfs/dev/tty[12] /sqfs/dev/[hs]d* /dev
pascal@21801 98 ln -s /sqfs/lib/* lib 2>/dev/null
pascal@21386 99 ln -fs /sqfs/usr /sqfs/var /
pascal@21801 100 mkdir /etc && cp /sqfs/etc/dialogrc /etc 2>/dev/null
pascal@13713 101 }
pascal@13713 102
pascal@13713 103 umount_loram()
pascal@13713 104 {
pascal@23820 105 myis_loram || return
pascal@20778 106 rm /var /usr
pascal@13713 107 umount -d /sqfs
pascal@21801 108 rmdir /sqfs 2>/dev/null || rm -f /sqfs
pascal@21801 109 rm -rf /etc
pascal@13713 110 }
pascal@13713 111
pascal@17569 112 dosync()
pascal@13691 113 {
pascal@17569 114 sync
pascal@13713 115 umount_loram
pascal@23820 116 umount -d $media
pascal@16073 117 rm -f /dev/cdrom
pascal@23820 118 umount $mnt
pascal@16041 119 umount_proc
pascal@17569 120 }
pascal@17569 121
pascal@17569 122 text()
pascal@17569 123 {
pascal@23820 124 $uncpio $(ls_r $media/boot/rootfs?*.* | sed q)
pascal@18774 125 init=
pascal@18774 126 cmdline="$(cat /proc/cmdline)"
pascal@18774 127 if hascustomconf; then
pascal@18774 128 getcustomconf /tmp > /dev/null
pascal@18774 129 [ -s /tmp/cmdline ] &&
pascal@18774 130 cmdline="$cmdline $(cat /tmp/cmdline)" &&
pascal@18774 131 init="$(sed '/rdinit=/!d;s/.*rdinit=\([^ ]*\).*/\1/' < /tmp/cmdline)"
pascal@23820 132 [ -s /tmp/initrd ] && $uncpio /tmp/initrd
pascal@18774 133 fi
pascal@17569 134 dosync
pascal@21791 135 sed -i 's/ || exit//' /init
pascal@18774 136 exec ${init:-/init} $cmdline
pascal@13691 137 }
pascal@13691 138
pascal@13691 139 live()
pascal@13691 140 {
pascal@13691 141 n=0
pascal@17476 142 dotwait "Extract filesystem..."
pascal@23820 143 for i in $(ls_r $media/boot/rootfs*); do
pascal@23820 144 [ $((n++)) -eq 0 ] || $uncpio $i
pascal@13691 145 done
pascal@17476 146 rm -f /tmp/wait
pascal@13691 147 text
pascal@13691 148 }
pascal@13691 149
pascal@13713 150 restart()
pascal@13691 151 {
pascal@17476 152 dosync
pascal@13713 153 reboot -f
pascal@13691 154 }
pascal@13691 155
pascal@13713 156 stop()
pascal@13691 157 {
pascal@17476 158 dosync
pascal@13713 159 poweroff -f
pascal@13691 160 }
pascal@13691 161
pascal@17489 162 dokexec()
pascal@17476 163 {
pascal@17659 164 kexec -l $file || return
pascal@17476 165 dosync
pascal@17476 166 kexec -e
pascal@17476 167 }
pascal@17476 168
pascal@17489 169 runmemtest()
pascal@17489 170 {
pascal@17635 171 gotcdfile "memtest*" && dokexec
pascal@17489 172 }
pascal@17489 173
pascal@17476 174 runpxe()
pascal@17476 175 {
pascal@20762 176 gotcdfile "?pxe*" && dokexec
pascal@17476 177 }
pascal@17476 178
pascal@13697 179 shell()
pascal@13697 180 {
pascal@20771 181 trap text 2
pascal@21801 182 getty -n -l /bin/ash 38400 tty1 2>/dev/null || sh
pascal@13697 183 }
pascal@13697 184
pascal@14247 185 BIN=bin/mount.posixovl
pascal@14247 186 [ -x /usr/s$BIN ] || mv /bin/mount.posixovl.iso2exe \
pascal@21801 187 /usr/s$BIN 2>/dev/null || mv /bin/mount.posixovl.iso2exe /$BIN 2>/dev/null
pascal@16041 188 mount_proc
pascal@21801 189 for i in /sys/block/*/dev /sys/block/*/*/dev; do
pascal@18804 190 [ -s "$i" ] || continue
pascal@18804 191 n=${i%/dev}
pascal@18804 192 n=/dev/${n##*/}
pascal@18804 193 [ -e $n ] && continue
pascal@18804 194 mknod $n b $(sed 's/:/ /' < $i)
pascal@21801 195 done 2>/dev/null
pascal@17489 196 ISO="$(getarg bootfrom | sed 's/.://;s|\\|/|g')"
pascal@21801 197 getiso 2>/dev/null || text
pascal@13713 198 mount_loram
pascal@23820 199 [ -s /usr/bin/taziso ] || live
pascal@13691 200
pascal@23820 201 . /usr/bin/taziso