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

linld: skip xmm_alloc
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Dec 12 10:41:29 2020 +0000 (2020-12-12)
parents a1fa13454a0c
children 8eaf1d9eb640
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 media=/media/cdrom
pascal@23820 9 mnt=/mnt
pascal@13691 10 getiso()
pascal@13691 11 {
pascal@23820 12 mkdir -p $media
pascal@23951 13 for dev in /sys/block/*; do
pascal@23988 14 for dev in $(ls -d $dev/$(basename $dev)*); do
pascal@23988 15 [ "$dev" ] || continue 2
pascal@23988 16 mount /dev/$(basename $dev) $mnt
pascal@23992 17 if [ -s $mnt/$ISO ] && [ $(getarg magic) = $(hexdump -v -s 18 -n 2 -e "\"\" 1/2 \" %u\n\"" $mnt/$ISO) ]; then
pascal@23988 18 echo "Found $ISO on $(basename $dev)"
pascal@23988 19 ISO=$mnt/$ISO
pascal@23988 20 mount -o loop,ro $ISO $media
pascal@23992 21 return
pascal@23988 22 fi
pascal@23988 23 umount $mnt
pascal@23988 24 done
pascal@23986 25 done
pascal@23992 26 text
pascal@13691 27 }
pascal@13691 28
pascal@23820 29 uncpio=uncpio64
pascal@23820 30 uncpio64()
pascal@13691 31 {
pascal@21801 32 i=$1
pascal@23951 33 grep ' lm ' /proc/cpuinfo && [ -s ${i}64 ] && i=${i}64
pascal@21801 34 [ -s "$i" ] || return
pascal@21801 35 echo -en "\n Extracting $(basename $i) ..."
pascal@21801 36 case $(get 0 $i) in
pascal@21801 37 *35615) ( zcat || gunzip );;
pascal@21801 38 *14333) unxz;;
pascal@21801 39 *\ 93) unlzma;;
pascal@21801 40 *) cat;;
pascal@21801 41 esac < $i | ( cd ${2:-/}; cpio -idmu > /dev/null 2>&1 )
pascal@13691 42 }
pascal@13691 43
pascal@23820 44 tty0=tty0
pascal@13697 45 bootlog()
pascal@13697 46 {
pascal@23988 47 dialog --clear --title " Linux boot messages " --textbox /tmp/dmesg 24 78
pascal@13697 48 }
pascal@13697 49
pascal@16041 50 gotposixovl()
pascal@16041 51 {
pascal@20771 52 mount.posixovl 2>&1 | grep -qi usage &&
pascal@16041 53 echo -en "\"$1\" \"$2\""
pascal@16041 54 }
pascal@16041 55
pascal@17569 56 dosync()
pascal@13691 57 {
pascal@17569 58 sync
pascal@23992 59 if [ -s /lib/modules/squashfs.ko* ]; then
pascal@23992 60 rm /var /usr
pascal@23992 61 umount -d /sqfs
pascal@23992 62 rmdir /sqfs 2>/dev/null || rm -f /sqfs
pascal@23992 63 rm -rf /etc
pascal@23992 64 fi
pascal@23820 65 umount -d $media
pascal@16073 66 rm -f /dev/cdrom
pascal@23820 67 umount $mnt
pascal@23992 68 killall udevd 2>/dev/null
pascal@23992 69 umount /sys/fs/fuse/connections 2>/dev/null
pascal@23992 70 umount /sys
pascal@23992 71 umount /proc
pascal@17569 72 }
pascal@17569 73
pascal@23831 74 xhascustomconf=false
pascal@17569 75 text()
pascal@17569 76 {
pascal@23991 77 [ -d /etc/skel ] || $uncpio $(ls -r $media/boot/rootfs?*.* | sed q)
pascal@18774 78 init=
pascal@18774 79 cmdline="$(cat /proc/cmdline)"
pascal@23831 80 if $xhascustomconf 2> /dev/null; then
pascal@18774 81 getcustomconf /tmp > /dev/null
pascal@18774 82 [ -s /tmp/cmdline ] &&
pascal@18774 83 cmdline="$cmdline $(cat /tmp/cmdline)" &&
pascal@23992 84 init="$(sed '/rdinit=/!d;s/.*rdinit=\([^ ]*\).*/\1/' /tmp/cmdline)"
pascal@23820 85 [ -s /tmp/initrd ] && $uncpio /tmp/initrd
pascal@18774 86 fi
pascal@17569 87 dosync
pascal@23992 88 sed 's/ || exit//' -i /init
pascal@18774 89 exec ${init:-/init} $cmdline
pascal@13691 90 }
pascal@13691 91
pascal@23831 92 xdowait=echo
pascal@13691 93 live()
pascal@13691 94 {
pascal@13691 95 n=0
pascal@23831 96 $xdotwait "Extract filesystem..."
pascal@23988 97 for i in $(ls -r $media/boot/rootfs?*.*); do
pascal@23820 98 [ $((n++)) -eq 0 ] || $uncpio $i
pascal@13691 99 done
pascal@17476 100 rm -f /tmp/wait
pascal@13691 101 text
pascal@13691 102 }
pascal@13691 103
pascal@13713 104 restart()
pascal@13691 105 {
pascal@17476 106 dosync
pascal@13713 107 reboot -f
pascal@13691 108 }
pascal@13691 109
pascal@13713 110 stop()
pascal@13691 111 {
pascal@17476 112 dosync
pascal@13713 113 poweroff -f
pascal@13691 114 }
pascal@13691 115
pascal@17489 116 dokexec()
pascal@17476 117 {
pascal@17659 118 kexec -l $file || return
pascal@17476 119 dosync
pascal@17476 120 kexec -e
pascal@17476 121 }
pascal@17476 122
pascal@13697 123 shell()
pascal@13697 124 {
pascal@20771 125 trap text 2
pascal@21801 126 getty -n -l /bin/ash 38400 tty1 2>/dev/null || sh
pascal@13697 127 }
pascal@13697 128
pascal@14247 129 BIN=bin/mount.posixovl
pascal@23992 130 [ -x /usr/s$BIN ] || mv /$BIN.iso2exe /usr/s$BIN 2>/dev/null || mv /$BIN.iso2exe /$BIN 2>/dev/null
pascal@23992 131 mount -t proc /proc /proc
pascal@23992 132 mount -t sysfs /sys /sys
pascal@23992 133 udevd --daemon 2>/dev/null && udevadm trigger && sleep 5
pascal@23951 134 mdev -s 2> /dev/null ||
pascal@21801 135 for i in /sys/block/*/dev /sys/block/*/*/dev; do
pascal@18804 136 [ -s "$i" ] || continue
pascal@18804 137 n=${i%/dev}
pascal@18804 138 n=/dev/${n##*/}
pascal@18804 139 [ -e $n ] && continue
pascal@18804 140 mknod $n b $(sed 's/:/ /' < $i)
pascal@21801 141 done 2>/dev/null
pascal@23992 142 ISO="$(getarg iso | sed 's/.://;s|\\|/|g')"
pascal@21801 143 getiso 2>/dev/null || text
pascal@23992 144 if [ -s /lib/modules/squashfs.ko* ]; then
pascal@23992 145 insmod /lib/modules/squashfs.ko* 2>/dev/null
pascal@23992 146 if [ -d $media/fs ]; then
pascal@23992 147 ln -s $media/fs /sqfs
pascal@23992 148 else
pascal@23992 149 mkdir /sqfs
pascal@23992 150 losetup -o 124 /dev/loop6 $(ls -r $media/boot/rootfs?*.* | sed q)
pascal@23992 151 mount -r /dev/loop6 /sqfs
pascal@23992 152 fi
pascal@23992 153 cp -a /sqfs/dev/fuse /sqfs/dev/tty[12] /dev
pascal@23992 154 for i in /sqfs/dev/* ; do [ -b $i ] && cp -a $i /dev ; done
pascal@23992 155 ln -s /sqfs/lib/* lib 2>/dev/null
pascal@23992 156 ln -fs /sqfs/usr /sqfs/var /
pascal@23992 157 mkdir /etc && cp /sqfs/etc/dialogrc /etc 2>/dev/null
pascal@23992 158 fi
pascal@23820 159 [ -s /usr/bin/taziso ] || live
pascal@23987 160 . /usr/bin/taziso