wok-next diff syslinux/stuff/tools/isohybrid.sh @ rev 21727
created recipe for vbindiff
| author | Hans-Günter Theisgen |
|---|---|
| date | Sat Nov 21 14:32:44 2020 +0100 (2020-11-21) |
| parents | db21b68f7891 |
| children |
line diff
1.1 --- a/syslinux/stuff/tools/isohybrid.sh Fri Nov 03 15:07:20 2017 +0100 1.2 +++ b/syslinux/stuff/tools/isohybrid.sh Sat Nov 21 14:32:44 2020 +0100 1.3 @@ -187,44 +187,48 @@ 1.4 store32 440 $id 1.5 store32 508 0xAA550000 1.6 e=$(( ((${entry:-1} -1) % 4) *16 +446)) 1.7 - store32 $e 0x10080 1.8 esect=$(( ($sectors + ((($cylinders -1) & 0x300) >>2)) <<16)) 1.9 ecyl=$(( (($cylinders -1) & 0xff) <<24)) 1.10 - store32 $(($e + 4)) $(($partype + (($heads - 1) <<8) +$esect +$ecyl)) 1.11 - store32 $(($e + 8)) $offset 1.12 - store32 $(($e + 12)) $(($cylinders * $heads * $sectors)) 1.13 - if [ -n "$efi_ofs" ]; then 1.14 + epart=$(((($heads - 1) <<8) +$esect +$ecyl)) 1.15 + sectorcount=$(($cylinders * $heads * $sectors)) 1.16 + lastlba=$(($sectorcount -1)) 1.17 + if [ -z "$efi_ofs" ]; then 1.18 + store32 $e 0x10080 1.19 + store32 $(($e + 4)) $(($partype + $epart)) 1.20 + store32 $(($e + 8)) $offset 1.21 + store32 $(($e + 12)) $sectorcount 1.22 + else 1.23 [ $(read16 0 1024) -eq 35615 -a $(read16 11 0) -ne 35615 ] && 1.24 ddq bs=512 conv=notrunc skip=2 seek=44 count=20 if=$iso of=$iso 1.25 - store32 $((446+16)) $((0xFFFFFE00)) 1.26 - store32 $((446+16+4)) $((0xFFFFFEEF)) 1.27 - store32 $((446+16+8)) $efi_ofs 1.28 - store32 $((446+16+12)) $efi_len 1.29 + store32 $((446)) $((0x10000)) 1.30 + store32 $((446+4)) $((0xFFFFFEEE)) 1.31 + store32 $((446+8)) 1 1.32 + store32 $((446+12)) $lastlba 1.33 uudecode <<EOT | unlzma | ddq bs=512 seek=1 of=$iso conv=notrunc 1.34 begin-base64 644 - 1.35 -XQAAgAD//////////wAikYVN1N2VY3JXMnUMJn1RCdQOHN33EegtIBhrUQ7Q 1.36 -JNaW37NYVuUAmqtISPiCdgAxPRlBS0xDlmAPPOCSZXmEFz9jEkXSzmsGn6+o 1.37 -7SMAKMfvpMa3U1bJv/napT+/NFttJSJSx0xJA3em3KJcZsO66vaYeJC5tE+3 1.38 -T0p9AJtSH6X8SMic3vU3hYWwHsYnsmeoGmsy4EJba9Wf/0liMQA= 1.39 +XQAAgAD//////////wAikYVN1N2VY3JXMnUMJn1TblyFehfeJH+D4/XPYFjO 1.40 +OzQluqM2w0L9b1dJMfZHJbnNnBFhYprW0PWPY1UOgQJkhF/W2Z0lXvaSrZ7t 1.41 +yEtpmE3Go6qt6FetOfWNMJZhtBdE0TjxFZCvh5z8hy/kRQb1XOkLxeb5VHT3 1.42 +H4JI5S76wY0TueXYsBOJwlwW9fZ8IXP72cDO3JArS4ZhUGxbOOF2oDuf/hFM 1.43 +zQ== 1.44 ==== 1.45 EOT 1.46 - lastlba=$((($cylinders * $heads * $sectors) -1)) 1.47 + lastlba=$(($sectorcount -1)) 1.48 usablelba=34 1.49 store32 $((0x218)) 1 1.50 store32 $((0x220)) $lastlba 1.51 store32 $((0x228)) $usablelba 1.52 store32 $((0x230)) $(($lastlba-$usablelba+1)) 1.53 - store32 $((0x428)) $(($lastlba-0x800)) 1.54 - store32 $((0x4A0)) $efi_ofs 1.55 - store32 $((0x4A8)) $(($efi_ofs+$efi_len-1)) 1.56 - store32 $((0x258)) $(crc32 0x400 0x4000) 1.57 - store32 $((0x210)) $(crc32 0x200 $(read32 0 $((0x20C)))) 1.58 + store32 $((0x420)) $efi_ofs 1.59 + store32 $((0x428)) $(($efi_ofs+$efi_len-1)) 1.60 store32sw $((0x1008)) $(($efi_ofs/4)) 1.61 store32sw $((0x1054)) $(($efi_len/4)) 1.62 for i in 238 410 490 ; do 1.63 ddq if=/dev/urandom count=16 bs=1 conv=notrunc \ 1.64 of=$iso seek=$((0x$i)) 1.65 done 1.66 + store32 $((0x258)) $(crc32 0x400 $((128*$(read32 0 $((0x250)))))) 1.67 + store32 $((0x210)) $(crc32 0x200 $(read32 0 $((0x20C)))) 1.68 fi 1.69 } 1.70 1.71 @@ -241,10 +245,12 @@ 1.72 abort "invalid boot catalog." 1.73 efi_ofs= 1.74 if [ $(read8 $cat 65) -eq 239 ]; then 1.75 - [ -n "$entry" ] && echo "$iso: efi boot ignore --entry $entry" && entry= 1.76 + [ ${entry:-1} != 1 ] && echo "$iso: efi boot ignore --entry $entry" 1.77 + entry=1 1.78 partype=0 1.79 - efi_len=$(read16 $cat 102) 1.80 efi_ofs=$((4*$(read32 $cat 104))) 1.81 + efi_len=$(($(read16 $(($efi_ofs/4)) 19))) 1.82 + [ $efi_len -eq 0 ] && efi_len=$(($(read32 $(($efi_ofs/4)) 32))) 1.83 fi 1.84 lba=$(read32 $cat 40) 1.85 [ $(read32 $lba 64) -eq 1886961915 ] ||