wok rev 16041
syslinux/iso2exe: fix 'a la umsdos' install
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Mar 09 14:09:57 2014 +0000 (2014-03-09) |
parents | 311ad10166ae |
children | e4cda1000ec7 |
files | ffmpeg-git/receipt shell-detector/receipt syslinux/stuff/iso2exe/boot.c syslinux/stuff/iso2exe/bootlinux.c syslinux/stuff/iso2exe/init |
line diff
1.1 --- a/ffmpeg-git/receipt Sun Mar 09 11:49:44 2014 +0100 1.2 +++ b/ffmpeg-git/receipt Sun Mar 09 14:09:57 2014 +0000 1.3 @@ -1,7 +1,7 @@ 1.4 # SliTaz package receipt. 1.5 1.6 PACKAGE="ffmpeg-git" 1.7 -VERSION="snapshot" 1.8 +VERSION="20140308" 1.9 CATEGORY="multimedia" 1.10 SHORT_DESC="Record, convert and stream audio and video (Devel version)." 1.11 MAINTAINER="pankso@slitaz.org"
2.1 --- a/shell-detector/receipt Sun Mar 09 11:49:44 2014 +0100 2.2 +++ b/shell-detector/receipt Sun Mar 09 14:09:57 2014 +0000 2.3 @@ -1,7 +1,7 @@ 2.4 # SliTaz package receipt. 2.5 2.6 PACKAGE="shell-detector" 2.7 -VERSION="current" 2.8 +VERSION="20140308" 2.9 CATEGORY="network" 2.10 SHORT_DESC="Web shell detection tool." 2.11 MAINTAINER="pascal.bellard@slitaz.org"
3.1 --- a/syslinux/stuff/iso2exe/boot.c Sun Mar 09 11:49:44 2014 +0100 3.2 +++ b/syslinux/stuff/iso2exe/boot.c Sun Mar 09 14:09:57 2014 +0000 3.3 @@ -44,7 +44,9 @@ 3.4 if (magic < 0x20630) 3.5 init = ""; // Does not support multiple initramfs 3.6 if (magic > 0) { 3.7 - fmt = "rw root=/dev/null%s iso=%s magic=%lu mode=%s"; 3.8 + fmt = "rw root=/dev/null%s iso=%s magic=%lu mode=%s autologin"; 3.9 + if (rootfs[6] != '.' && !isoopen("rootfs.gz")) 3.10 + loadinitrd(); // for loram 3.11 isoopen(rootfs); 3.12 loadinitrd(); 3.13 if (*init) {
4.1 --- a/syslinux/stuff/iso2exe/bootlinux.c Sun Mar 09 11:49:44 2014 +0100 4.2 +++ b/syslinux/stuff/iso2exe/bootlinux.c Sun Mar 09 14:09:57 2014 +0000 4.3 @@ -91,8 +91,7 @@ 4.4 #define ZIMAGE_SUPPORT 4.5 4.6 #ifdef ZIMAGE_SUPPORT 4.7 -static int zimage = 0; 4.8 -static unsigned zimage_base; 4.9 +static unsigned zimage = 0; 4.10 static unsigned getss(void) 4.11 { 4.12 #asm 4.13 @@ -230,9 +229,8 @@ 4.14 } 4.15 if (!setup_version || !(buffer[LOADFLAGS] & 1)) { 4.16 #ifdef ZIMAGE_SUPPORT 4.17 - zimage = 1; 4.18 - zimage_base = getss() + 0x1000L; 4.19 - mem.base = zimage_base * 16L; 4.20 + zimage = getss() + 0x1000; 4.21 + mem.base = zimage * 16L; 4.22 if (mem.base + syssize > SETUP_SEGMENT*16L - 32) 4.23 die("Out of memory"); 4.24 #else 4.25 @@ -332,11 +330,12 @@ 4.26 mov sp, #CMDLINE_OFFSET 4.27 #endasm 4.28 #ifdef ZIMAGE_SUPPORT 4.29 - if (zimage) { 4.30 #asm 4.31 + mov bx, _zimage 4.32 + or bx, bx 4.33 + jz notzimage 4.34 mov eax, _mem 4.35 shr eax, #4 // top 4.36 - mov bx, _zimage_base 4.37 mov dx, #0x1000 4.38 push cs 4.39 pop ds 4.40 @@ -361,8 +360,8 @@ 4.41 inc dx 4.42 cmp ax,bx 4.43 jne sysmove 4.44 +notzimage: 4.45 #endasm 4.46 - } 4.47 #endif 4.48 #asm 4.49 push ss
5.1 --- a/syslinux/stuff/iso2exe/init Sun Mar 09 11:49:44 2014 +0100 5.2 +++ b/syslinux/stuff/iso2exe/init Sun Mar 09 14:09:57 2014 +0000 5.3 @@ -13,6 +13,21 @@ 5.4 sed "/$1=/!d;s/.*$1=\\([^ ]*\\).*/\\1/" /proc/cmdline 5.5 } 5.6 5.7 +mount_proc() 5.8 +{ 5.9 + mount -t proc /proc /proc 5.10 + mount -t sysfs /sys /sys 5.11 + udevd --daemon 2> /dev/null && udevadm trigger && sleep 5 5.12 +} 5.13 + 5.14 +umount_proc() 5.15 +{ 5.16 + killall udevd 2> /dev/null 5.17 + umount /sys/fs/fuse/connections 2> /dev/null 5.18 + umount /sys 5.19 + umount /proc 5.20 +} 5.21 + 5.22 gettazboot() 5.23 { 5.24 echo "Creating $(basename $1) ..." 5.25 @@ -61,7 +76,7 @@ 5.26 getuuid() 5.27 { 5.28 dev=$(mount | sed '/ \/mnt /!d;s/ .*//;s|/dev/||;q') 5.29 - blkid | sed "/$dev:/!d;s/.*UUID=.\\([^ ]*\\)\".*/\\1/" 5.30 + blkid | sed "/$dev:/!d;s/.* UUID=.\\([^ ]*\\)\".*/\\1/" 5.31 } 5.32 5.33 mkinitrd() 5.34 @@ -70,7 +85,7 @@ 5.35 for i in bin lib dev proc tmp mnt etc ; do 5.36 mkdir -p /tmp/fs/$i 5.37 done 5.38 - for i in /dev/console /dev/null /dev/tty /dev/tty1 /dev/fuse \ 5.39 + for i in /dev/console /dev/null /dev/tty /dev/tty1 /dev/tty2 /dev/fuse \ 5.40 /dev/hd* /dev/sd* ; do 5.41 cp -a $i /tmp/fs$i 5.42 done 5.43 @@ -84,6 +99,10 @@ 5.44 [ -e /tmp/fs/bin/${i%,} ] || ln -s busybox /tmp/fs/bin/${i%,} 5.45 done 5.46 ln -s /proc/mounts /tmp/fs/etc/mtab 5.47 + sed 's/ .*//' /proc/modules | while read mod ; do 5.48 + find /lib/modules/ | grep $mod.ko | \ 5.49 + sed 's|.*|cp & /tmp/fs/lib|' | sh 5.50 + done 5.51 cat > /tmp/fs/init <<EOT 5.52 #!/bin/sh 5.53 5.54 @@ -95,14 +114,17 @@ 5.55 } 5.56 5.57 mount -t proc /proc /proc 5.58 + arg debug "shell" && debug=true && set -x 5.59 +for i in /lib/*.ko* ; do insmod \$i ; done; sleep 2 5.60 arg mount "Mount device" 5.61 mount \$( (blkid /dev/?d* || blkid) | grep \$val | sed 's/:.*//;q') /mnt 5.62 arg subroot "Change root to directory" 5.63 -mount.posixovl -F /mnt/\$val 5.64 +mount.posixovl -F /mnt/\$val -- -oallow_other -odefault_permissions -osuid 5.65 mount --bind /mnt /mnt/\$val/mnt/dos 5.66 LDSO=\$(ls /mnt/\$val/lib/ld-* | sed q) 5.67 +export LD_LIBRARY_PATH=\$val/lib:\$val/usr/lib:/lib 5.68 + [ "$debug" = "true" ] && sh 5.69 umount /proc 5.70 -export LD_LIBRARY_PATH=\$val/lib:\$val/usr/lib:/lib 5.71 exec /bin/switch_root /mnt \${LDSO#/mnt/} \$val/usr/sbin/chroot \$val /sbin/init 5.72 EOT 5.73 chmod +x /tmp/fs/init 5.74 @@ -115,16 +137,26 @@ 5.75 [ -s /lib/squashfs.ko* ] 5.76 } 5.77 5.78 +ls_r() 5.79 +{ 5.80 + ls -r $@ 2> /dev/null || ls $@ 5.81 +} 5.82 + 5.83 doinstall() 5.84 { 5.85 mkdir -p /mnt/slitaz/boot /mnt/slitaz/mnt/dos 5.86 - mount.posixovl -F /mnt/slitaz || return 5.87 - echo "Install root filesystem..." 5.88 + if ! mount.posixovl -F /mnt/slitaz -- \ 5.89 + -oallow_other -odefault_permissions -osuid; then 5.90 + echo "Can't install SliTaz. Abort." 5.91 + sleep 5 5.92 + return 1 5.93 + fi 5.94 + echo "Install root filesystem in /slitaz..." 5.95 if [ -n "$1" ]; then 5.96 if [ -d /media/cdrom/fs ]; then 5.97 ( cd /mnt/slitaz/fs; find | cpio -o -H newc ) | gzip -9 5.98 else 5.99 - ls -r /media/cdrom/boot/rootfs* | xargs cat 5.100 + ls_r /media/cdrom/boot/rootfs* | xargs cat 5.101 fi > /mnt/slitaz/boot/rootfs.gz 5.102 mkdir /mnt/slitaz/home 5.103 initrd=rootfs.gz 5.104 @@ -137,13 +169,13 @@ 5.105 [ -s $(basename $i) ] && continue 5.106 cpio -i $i 5.107 done 5.108 - for i in $(ls -r /media/cdrom/boot/rootfs*); do 5.109 + for i in $(ls_r /media/cdrom/boot/rootfs*); do 5.110 mount -o loop,ro $i /sqfs/mnt 5.111 cp -a /sqfs/mnt/. /mnt/slitaz 5.112 umount -d /sqfs/mnt 5.113 done 5.114 else 5.115 - for i in $(ls -r /media/cdrom/boot/rootfs*); do 5.116 + for i in $(ls_r /media/cdrom/boot/rootfs*); do 5.117 uncpio $i /mnt/slitaz 5.118 done 5.119 fi 5.120 @@ -159,24 +191,29 @@ 5.121 done 5.122 gettazboot /mnt/slitaz/boot/tazboot.exe 5.123 unix2dos > /mnt/slitaz/boot/tazboot.cmd <<EOT 5.124 -kernel=\\slitaz\\boot\\bzimage 5.125 -initrd=\\slitaz\\boot\\$initrd 5.126 +kernel=/slitaz/boot/bzimage 5.127 +initrd=/slitaz/boot/$initrd 5.128 rw root=/dev/null $extraargs autologin 5.129 EOT 5.130 unix2dos /mnt/slitaz/boot/he* /mnt/slitaz/boot/opt* \ 5.131 /mnt/slitaz/boot/README 5.132 [ -d /mnt/slitaz/usr/sbin -a ! -x /mnt/slitaz/usr/sbin/mount.posixovl ] && 5.133 cp $(which mount.posixovl) /mnt/slitaz/usr/sbin 5.134 - ! grep -qs tazboot /mnt/boot.ini && unix2dos >> /mnt/boot.ini <<EOT 5.135 +false && 5.136 + ! grep -qs tazboot /mnt/boot.ini && echo "Update boot.ini ..." && 5.137 + unix2dos >> /mnt/boot.ini <<EOT 5.138 C:\\slitaz\\boot\\tazboot.exe="SliTaz" 5.139 EOT 5.140 - grep -qs menuitem /mnt/config.sys && !grep -q tazboot /mnt/config.sys && 5.141 - sed -i 's/menudefault=/menuitem=slitaz,SliTaz\n&/' /mnt/config.sys && 5.142 - cat >> /mnt/config.sys <<EOT 5.143 -[slitaz] 5.144 -device=\\slitaz\\boot\\tazboot.exe 5.145 + grep -qs menuitem /mnt/config.sys && ! grep -q tazboot /mnt/config.sys && 5.146 + echo "Update config.sys ..." && 5.147 + sed -i 's/menudefault=/menuitem=slitaz,SliTaz\r\n&/' /mnt/config.sys && 5.148 + echo -e "[slitaz]\r" >> /mnt/config.sys && 5.149 + echo "Update autoexec.bat ..." && 5.150 + unix2dos >> /mnt/autoexec.bat <<EOT 5.151 +:slitaz 5.152 +\\slitaz\\boot\\tazboot.exe 5.153 EOT 5.154 - unix2dos /mnt/config.sys 2> /dev/null 5.155 + return 0 5.156 } 5.157 5.158 install() 5.159 @@ -195,10 +232,10 @@ 5.160 start SliTaz Live with 'SliTaz RAM boot' menu.\n 5.161 " 19 70 5.162 [ $? -eq 0 ] || return 5.163 - doinstall 5.164 - [ -x /sbin/init ] || return 5.165 + doinstall || return 5.166 + [ -x /mnt/slitaz/sbin/init ] || return 5.167 umount -d /media/cdrom 5.168 - umount /proc 5.169 + umount_proc 5.170 exec chroot /mnt/slitaz /sbin/init 5.171 } 5.172 5.173 @@ -218,11 +255,11 @@ 5.174 start SliTaz Live with 'SliTaz RAM boot' menu.\n 5.175 " 19 70 5.176 [ $? -eq 0 ] || return 5.177 - doinstall tazusblike 5.178 + doinstall tazusblike || return 5.179 if [ -d /media/cdrom/fs ]; then 5.180 zcat /mnt/slitaz/boot/rootfs.gz | cpio -idmu 5.181 else 5.182 - for i in $(ls -r /media/cdrom/boot/rootfs*); do 5.183 + for i in $(ls_r /media/cdrom/boot/rootfs*); do 5.184 ( zcat $i 2> /dev/null || unlzma -c $i ) | cpio -idmu 5.185 done 5.186 fi 5.187 @@ -230,7 +267,7 @@ 5.188 umount -d /media/cdrom 5.189 mount --move /mnt /mnt/dos 5.190 ln -s /mnt/dos/slitaz/home /home 5.191 - umount /proc 5.192 + umount_proc 5.193 exec /sbin/init 5.194 } 5.195 5.196 @@ -338,6 +375,12 @@ 5.197 dd if=/media/cdrom/boot/?pxe of=/dev/fd0 5.198 } 5.199 5.200 +gotposixovl() 5.201 +{ 5.202 + mount.posixovl 2>&1 | grep -qi usage && 5.203 + echo -en "\"$1\" \"$2\"" 5.204 +} 5.205 + 5.206 xfile() 5.207 { 5.208 [ -n "$(which $1)" ] && echo -en "\"$2\" \"$3\"" 5.209 @@ -481,14 +524,14 @@ 5.210 umount_loram 5.211 umount -d /media/cdrom 5.212 umount /mnt 5.213 - umount /proc 5.214 + umount_proc 5.215 exec /init 5.216 } 5.217 5.218 live() 5.219 { 5.220 n=0 5.221 - for i in $(ls -r /media/cdrom/boot/rootfs*); do 5.222 + for i in $(ls_r /media/cdrom/boot/rootfs* 2> /dev/null); do 5.223 [ $((n++)) -eq 0 ] || uncpio $i 5.224 done 5.225 text 5.226 @@ -516,16 +559,16 @@ 5.227 BIN=bin/mount.posixovl 5.228 [ -x /usr/s$BIN ] || mv /bin/mount.posixovl.iso2exe \ 5.229 /usr/s$BIN 2> /dev/null || mv /bin/mount.posixovl.iso2exe /$BIN 5.230 -mount -t proc /proc /proc 5.231 +mount_proc 5.232 ISO="$(getarg iso | sed 's/.://;s|\\|/|g')" 5.233 getiso 5.234 mount_loram 5.235 -case "$(basename $ISO | tr [A-Z] [a-z])$(getarg mode)" in 5.236 +case "${ISO##*/}$(getarg mode)" in 5.237 *install*) install ;; 5.238 *live*) live ;; 5.239 *text*) text ;; 5.240 esac 5.241 -which $DIALOG || live 5.242 +which $DIALOG 2> /dev/null || live 5.243 dmesg > /tmp/dmesg 5.244 5.245 while true; do 5.246 @@ -533,16 +576,16 @@ 5.247 $DIALOG --clear \ 5.248 --title " Welcome to SliTaz " \ 5.249 --menu "" 21 70 15 \ 5.250 - "live" "SliTaz RAM boot" \ 5.251 +$(cdfile boot/bzImage "live" "SliTaz RAM boot") \ 5.252 "text" "SliTaz RAM boot (text mode only)" \ 5.253 $(cdfile README "readme" "Show the README file") \ 5.254 $(cdfile md5sum "md5" "Check ISO files") \ 5.255 -$(xfile mount.posixovl "install" "Hard disk installation (UMSDOS way)") \ 5.256 -$(xfile mount.posixovl "installtaz" "Hard disk installation (TAZUSB way)") \ 5.257 +$(gotposixovl "install" "Hard disk installation (UMSDOS way)") \ 5.258 +$(gotposixovl "installtaz" "Hard disk installation (TAZUSB way)") \ 5.259 $(xfile tazusb "usbkey" "USB key read/write installation") \ 5.260 - "usbbootkey" "USB boot key (read only)" \ 5.261 +$(cdfile boot/bzImage "usbbootkey" "USB boot key (read only)") \ 5.262 $(fddata "fdbootstrap" "Floppy bootstrap") \ 5.263 - "tazboot" "Get tazboot.exe Linux loader" \ 5.264 +$(cdfile boot/bzImage "tazboot" "Get tazboot.exe Linux loader") \ 5.265 $(cdexe boot/memtest "memtest" "Get Memtest86") \ 5.266 $(cdfile boot/memtest "fdmemtest" "Create a Memtest86 boot floppy") \ 5.267 $(cdexe boot/gpxe "pxe" "Get SliTaz Web boot utility") \