wok
annotate BootProg/stuff/bootprog.sh @ rev 25485
BootProg/fat32: active fat support
author |
Pascal Bellard <pascal.bellard@slitaz.org> |
date |
Tue Nov 01 16:13:12 2022 +0000 (23 months ago) |
parents |
81fc994927a6 |
children |
3c71bb4367c3 |
rev |
line source |
pascal@24476
|
1 #!/bin/sh
|
pascal@25485
|
2 p=/tmp/bp$$;sed '1,2d' $0|unlzma>$p;sh $p $0 "$@";s=$?;rm $p;exit $s
|
pascal@25485
|
3 set -- "$2" "${3:-startup.bin}" $1
|
pascal@25454
|
4 [ ! -e "$1" ] && cat<<S && exit 2
|
pascal@25485
|
5 Usage: [FS=<FAT12|FAT16|FAT32|EXFAT>] $3 device [file]
|
pascal@25485
|
6 Example: $3 /dev/fd0 $1
|
pascal@25454
|
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@25485
|
14 do sed '1,/^exit/d' $0 | $w=$a; done
|
pascal@25456
|
15 echo -n $f | $w=$c
|
pascal@25463
|
16 echo "Set boot file $2" && echo -n "$2" | case "$f" in
|
pascal@24942
|
17 E*) sed 's| |.|;s| ||g' | cat - /dev/zero;;
|
pascal@24942
|
18 *) tr a-z A-Z | sed 's|\.| |;s|^\(.\{8\}\) *|\1|;s|$| |'
|
pascal@25454
|
19 esac | $w=499 count=11
|
pascal@25454
|
20 case "$f" in
|
pascal@25485
|
21 *32) $w=$(($(od -An -j50 -N2 -d $1)<<9)) if=$1 count=$s;;
|
pascal@25454
|
22 E*) $r=11 bs=1b | od -vAn -tu1 -w1 - | LANG=C awk 'BEGIN { a=0;i=-1;m=0xFFFFFFFE }
|
pascal@24942
|
23 { if (++i!=106 && i!=107 && i!=112) a=or(and(lshift(a,31),m),and(rshift(a,1),m/2))+$1 }
|
pascal@25454
|
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@25454
|
27 done<<S 2>/dev/null
|
pascal@25485
|
28 54 59 0 512 FAT12
|
pascal@25485
|
29 54 59 0 512 FAT16
|
pascal@25485
|
30 3 113 512 512 EXFAT
|
pascal@25485
|
31 82 87 1024 FAT32SZ FAT32
|
pascal@25454
|
32 S
|
pascal@24476
|
33 exit 1
|