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