wok annotate BootProg/stuff/bootprog.sh @ rev 25791
Up dropbear (2024.86), libssh2 (1.11.1), xz (5.6.3)
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Wed Oct 23 13:27:53 2024 +0000 (3 months ago) |
parents | 82a123e54615 |
children |
rev | line source |
---|---|
pascal@24476 | 1 #!/bin/sh |
pascal@25698 | 2 p=/tmp/b$$;sed 1,2d $0|unlzma>$p;sh $p $0 "$@";s=$?;rm $p;exit $s |
pascal@25485 | 3 set -- "$2" "${3:-startup.bin}" $1 |
pascal@25698 | 4 [ ! -e "$1" ] && cat<<s && exit 2 |
pascal@25485 | 5 Usage: [FS=<FAT12|FAT16|FAT32|EXFAT>] $3 device [file] |
pascal@25698 | 6 Example: $3 /dev/fd0 $2 |
pascal@25698 | 7 s |
pascal@25454 | 8 r="dd if=$1 count" |
pascal@25454 | 9 w="dd of=$1 bs=1 conv=notrunc seek" |
pascal@25485 | 10 while read c o b s f |
pascal@25463 | 11 do [ "${FS:-$($r=5 bs=1 skip=$c)}" = "$f" ] || continue |
pascal@24942 | 12 echo "Install $f bootsector on $1." |
pascal@25485 | 13 for a in "$o skip=$((o+b)) count=$((s-o))" "0 skip=$b count=11" |
pascal@25705 | 14 do sed 1,/^exit/d $0|$w=$a;done |
pascal@25705 | 15 echo -n $f|$w=$c |
pascal@25705 | 16 echo "Set boot file $2" && echo -n "$2" | case $f in |
pascal@25705 | 17 E*) sed 's| |.|;s| ||g'|cat - /dev/zero|$w=499 count=11;; |
pascal@25705 | 18 *) tr a-z A-Z|sed 's|\.| |;s|^\(.\{8\}\) *|\1|;s|$| |'|$w=499 count=11 |
pascal@25705 | 19 esac |
pascal@25705 | 20 case $f in |
pascal@25485 | 21 *32) $w=$(($(od -An -j50 -N2 -d $1)<<9)) if=$1 count=$s;; |
pascal@25705 | 22 E*) $r=11 bs=1b|od -vAn -tu1 -w1 -|LANG=C awk ' |
pascal@25705 | 23 {if(++i!=107&&i!=108&&i!=113)a=or(lshift(and(a,1),31),$1+a/2)} |
pascal@25705 | 24 END{b=a/256;c=b/256;for(;i>0;i-=44)printf "%c%c%c%c",a%256,b%256,c%256,(c/256)%256}'|$w=5632 |
pascal@25454 | 25 esac |
pascal@24476 | 26 exit 0 |
pascal@25698 | 27 done<<s 2>/dev/null |
pascal@25485 | 28 54 59 0 512 FAT12 |
pascal@25564 | 29 54 59 512 512 FAT16 |
pascal@25564 | 30 3 113 1024 512 EXFAT |
pascal@25564 | 31 82 87 1536 FAT32SZ FAT32 |
pascal@25698 | 32 s |
pascal@24476 | 33 exit 1 |