# HG changeset patch # User Pascal Bellard # Date 1600681945 0 # Node ID 1f97fc4c73f13fe01a891fd70c0d626f173ce75e # Parent 1a30965ea03c51738383f962b918741ec5bb3d67 taziso/bootusbkey: up to 2TB diff -r 1a30965ea03c -r 1f97fc4c73f1 syslinux/stuff/iso2exe/init --- a/syslinux/stuff/iso2exe/init Sun Sep 20 21:21:51 2020 +0000 +++ b/syslinux/stuff/iso2exe/init Mon Sep 21 09:52:25 2020 +0000 @@ -35,7 +35,9 @@ getiso() { mkdir -p $media - for dev in /sys/block/?d?/?d??*; do + for dev in /sys/block/*; do + dev=$(ls $dev/$(basename $dev)* 2> /dev/null) + [ "$dev" ] || continue mount /dev/$(basename $dev) $mnt if checkmagic $mnt/$ISO; then mount -o loop,ro $mnt/$ISO $media @@ -52,7 +54,7 @@ uncpio64() { i=$1 - sed 's|$| |' /proc/cpuinfo | grep ' lm ' && [ -s ${i}64 ] && i=${i}64 + grep ' lm ' /proc/cpuinfo && [ -s ${i}64 ] && i=${i}64 [ -s "$i" ] || return echo -en "\n Extracting $(basename $i) ..." case $(get 0 $i) in @@ -93,7 +95,8 @@ losetup -o 124 /dev/loop6 $(ls -r $media/boot/rootfs?*.* | sed q) mount -r /dev/loop6 /sqfs fi - cp -a /sqfs/dev/fuse /sqfs/dev/tty[12] /sqfs/dev/[hs]d* /dev + cp -a /sqfs/dev/fuse /sqfs/dev/tty[12] /dev + for i in /sqfs/dev/* ; do [ -b $i ] && cp -a $i /dev ; done ln -s /sqfs/lib/* lib 2>/dev/null ln -fs /sqfs/usr /sqfs/var / mkdir /etc && cp /sqfs/etc/dialogrc /etc 2>/dev/null @@ -167,16 +170,6 @@ kexec -e } -runmemtest() -{ - gotcdfile "memtest*" && dokexec -} - -runpxe() -{ - gotcdfile "?pxe*" && dokexec -} - shell() { trap text 2 @@ -187,6 +180,7 @@ [ -x /usr/s$BIN ] || mv /bin/mount.posixovl.iso2exe \ /usr/s$BIN 2>/dev/null || mv /bin/mount.posixovl.iso2exe /$BIN 2>/dev/null mount_proc +mdev -s 2> /dev/null || for i in /sys/block/*/dev /sys/block/*/*/dev; do [ -s "$i" ] || continue n=${i%/dev} diff -r 1a30965ea03c -r 1f97fc4c73f1 syslinux/stuff/iso2exe/taziso --- a/syslinux/stuff/iso2exe/taziso Sun Sep 20 21:21:51 2020 +0000 +++ b/syslinux/stuff/iso2exe/taziso Mon Sep 21 09:52:25 2020 +0000 @@ -33,7 +33,7 @@ done | xargs echo -en } -word32s2bin() +quads2bin() { for i in $@ ; do printf '\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X' $(($i&255)) \ @@ -41,17 +41,6 @@ done | xargs echo -en } -word64s2bin() -{ - for i in $@ ; do -# printf '\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X' \ -# $(($i&255)) $((($i>>8)&255)) $((($i>>16)&255)) $((($i>>24)&255)) \ -# $((($i>>32)&255)) $((($i>>40)&255)) $((($i>>48)&255)) $((($i>>56)&255)) - printf '\\\\x%02X\\\\x%02X\\\\x%02X\\\\x%02X\\\\x00\\\\x00\\\\x00\\\\x00' $(($i&255)) \ - $((($i>>8)&255)) $((($i>>16)&255)) $((($i>>24)&255)) - done | xargs echo -en -} - gettazboot() { echo -e "\nCreating $(basename $1) ..." @@ -75,12 +64,13 @@ size() { - [ -L "$1" ] && case "$(readlink "$1")" in - /*) set -- $(readlink "$1") ;; - *) set -- $(dirname "$1")/$(readlink "$1") ;; - esac - [ ! -b "$1" ] && echo $(stat -c %s "$1") || - echo $(($(cat /sys/block/${1#/dev/}/size)*512)) + stat -c %s "$1" +} + +sectcnt() +{ + [ ! -b "$1" ] && echo $(($(size "$1")/512)) || + cat /sys/block/${1#/dev/}/size } uncpio() @@ -1207,7 +1197,7 @@ fi # perform dd in progress bar - max=$(($(size "$ISO")/1024/1024)) + max=$(($(sectcnt "$ISO")/2048)) i=0; while [ $i -le $max ]; do ddq if="$ISO" bs=1024k count=1 skip=$i seek=$i of=$device echo $((($i*100)/$max)) @@ -1216,32 +1206,32 @@ 6 70 0 > /dev/tty 2>&1 # GPT partition + fat32 format for the remaining space - sectors=$(($(size $device)/512)) - word32s2bin $(($sectors-1)) | ddq bs=1 seek=458 of=$device # pmbr - word32s2bin 0 | ddq bs=1 seek=$((512+16)) of=$device - word64s2bin $(($sectors-3)) | ddq bs=1 seek=$((512+48)) of=$device + sectors=$(($(sectcnt $device)-1)) + quads2bin $sectors | ddq bs=1 seek=458 of=$device # pmbr + quads2bin 0 | ddq bs=1 seek=$((512+16)) of=$device + quads2bin $(($sectors-2)) 0 | ddq bs=1 seek=$((512+48)) of=$device uudecode - <> 16)) | ddn \ - bs=1 seek=536 of=/tmp/fd$$ + quads2bin $rdadrs | ddn bs=1 seek=536 of=/tmp/fd$$ fi n=$(echo $len | wc -w) if [ $((494 - $(get 494 /tmp/fd$$))) -ge $(($n * 4)) ]; then @@ -1488,8 +1477,7 @@ ddn bs=1 seek=60 of=/tmp/fd$$ fi for r in $len ; do - words2bin $(($r & 0xFFFF)) $(($r >> 16)) | ddn \ - bs=1 seek=$i of=/tmp/fd$$ + quads2bin $r | ddn bs=1 seek=$i of=/tmp/fd$$ i=$(($i + 4)) done split -b 1440k /tmp/fd$$ fd$$ @@ -1569,7 +1557,14 @@ exit fi ISO="${1:-/dev/null}" -[ ${ISO:0:1} != "/" ] && ISO=$(cd $(dirname $ISO); echo $PWD/$(basename $ISO)) +while [ -L "$ISO" ]; do + media="$(readlink "$ISO")" + case "$media" in + /*) ISO="$media" ;; + *) ISO="$(dirname "$ISO")/$media" ;; + esac +done +[ "${ISO:0:1}" != "/" ] && ISO="$(cd $(dirname "$ISO"); echo $PWD/$(basename "$ISO"))" [ -z "$(isiso 2> /dev/null)" ] && echo "Usage : $0 file.iso" && exit 1 media=/tmp/media$$ mkdir -p $media