tazlito rev 529
move efi.img to /efi/esp.img
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sat Oct 31 16:26:51 2020 +0000 (2020-10-31) |
parents | fba53d645af2 |
children | 668f2e7befb0 |
files | tazlito |
line diff
1.1 --- a/tazlito Sun Oct 04 13:26:53 2020 +0000 1.2 +++ b/tazlito Sat Oct 31 16:26:51 2020 +0000 1.3 @@ -34,6 +34,7 @@ 1.4 CACHE_DIR='/var/cache/tazpkg' 1.5 MIRROR="$LOCALSTATE/mirror" 1.6 DEFAULT_MIRROR="http://mirror1.slitaz.org/packages/$(cat /etc/slitaz-release)/" 1.7 +efi_img="efi/esp.img" 1.8 1.9 log='/var/log/tazlito.log' 1.10 if [ $(id -u) -eq 0 ]; then 1.11 @@ -269,7 +270,7 @@ 1.12 1.13 1.14 1.15 -# Force size and location in the 2nd eltorito boot file (/boot/isolinux/efi.img) 1.16 +# Force size and location in the 2nd eltorito boot file (/$efi_img) 1.17 1.18 fix_efi_boot_img_size() { 1.19 local n=$3 1.20 @@ -279,11 +280,11 @@ 1.21 } 1.22 1.23 1.24 -# Force the size for the /boot/isolinux/efi.img file 1.25 +# Force the size for the /$efi_img file 1.26 1.27 fix_efi_img_size() { 1.28 local e=$((0x809C)) 1.29 - for i in BOOT ISOLINUX EFI.IMG ; do 1.30 + for i in $(echo ${efi_img//\// } | tr a-z A-Z) ; do 1.31 local sz=$(get $(($e+10)) "$2" 4) 1.32 e=$(($(get $(($e+2)) "$2" 4) * 2048)) 1.33 while [ $sz -gt 0 ]; do 1.34 @@ -300,31 +301,31 @@ 1.35 } 1.36 1.37 1.38 -# create /boot/isolinux/efi.img to share EFI files with the iso image 1.39 +# create /$efi_img to share EFI files with the iso image 1.40 1.41 fixup_uefi_part() { 1.42 - [ -s $2/boot/isolinux/efi.img ] || return 1.43 - [ -x $2/boot/isolinux/efi.img ] && return 1.44 - local n=$(get 19 "$2/boot/isolinux/efi.img") 1.45 - [ $n -eq 0 ] && n=$(get 32 "$2/boot/isolinux/efi.img" 4) 1.46 - efiblock=$(first_block "$2/boot/isolinux/efi.img") 1.47 + [ -s $2/$efi_img ] || return 1.48 + [ -x $2/$efi_img ] && return 1.49 + local n=$(get 19 "$2/$efi_img") 1.50 + [ $n -eq 0 ] && n=$(get 32 "$2/$efi_img" 4) 1.51 + efiblock=$(first_block "$2/$efi_img") 1.52 fix_efi_img_size $(($n*512)) $1 1.53 fix_efi_boot_img_size $1 $2 $n $efiblock 1.54 1.55 # Build file list tree 1.56 - resv=$(get 14 "$2/boot/isolinux/efi.img") 1.57 - if [ $(get 57 "$2/boot/isolinux/efi.img" 1) -ne 49 ]; then 1.58 + resv=$(get 14 "$2/$efi_img") 1.59 + if [ $(get 57 "$2/$efi_img" 1) -ne 49 ]; then 1.60 skiphead=5 1.61 - fatsz=$(get 36 "$2/boot/isolinux/efi.img" 4) 1.62 + fatsz=$(get 36 "$2/$efi_img" 4) 1.63 basecluster=$((($resv+2*$fatsz)/4+$efiblock-2)) 1.64 dd if=$1 bs=512 skip=$(($efiblock*4)) count=3 \ 1.65 of=$1 seek=$(($efiblock*4+3)) conv=notrunc 1.66 else 1.67 skiphead=4 1.68 - fatsz=$(get 22 "$2/boot/isolinux/efi.img") 1.69 + fatsz=$(get 22 "$2/$efi_img") 1.70 basecluster=$((($resv+2*$fatsz)/4+$efiblock-1)) 1.71 fi 2> /dev/null 1.72 - hd "$2/boot/isolinux/efi.img" | awk 'BEGIN { skiphead='$skiphead' } 1.73 + hd "$2/$efi_img" | awk 'BEGIN { skiphead='$skiphead' } 1.74 { 1.75 if (skiphead!=0) { 1.76 if ($1=="*") skiphead-- 1.77 @@ -389,8 +390,8 @@ 1.78 done 1.79 1.80 # Update fat12 or fat16 1.81 - get 57 "$2/boot/isolinux/efi.img" 1.82 - dd if="$2/boot/isolinux/efi.img" bs=512 count=$fatsz skip=$resv 2> /dev/null | \ 1.83 + get 57 "$2/$efi_img" 1.84 + dd if="$2/$efi_img" bs=512 count=$fatsz skip=$resv 2> /dev/null | \ 1.85 od -An -t u1 -w1 -v 1.86 ) | awk ' 1.87 { 1.88 @@ -467,8 +468,8 @@ 1.89 1.90 alloc_uefi_part() { 1.91 local basedir=$(dirname "$1")/.. 1.92 - if [ -s $basedir/boot/isolinux/efi.img ]; then 1.93 - chmod +x $basedir/boot/isolinux/efi.img 1.94 + if [ -s $basedir/$efi_img ]; then 1.95 + chmod +x $basedir/$efi_img 1.96 return 1.97 fi 1.98 local fclust=$({ 1.99 @@ -546,13 +547,13 @@ 1.100 size="$(printf "%02X %02X" $(($s%256)) $((($s>>8)%256)) )" 1.101 size32="00 00 00 00" 1.102 fi 1.103 - dd if=/dev/zero bs=512 of=$basedir/boot/isolinux/efi.img \ 1.104 + dd if=/dev/zero bs=512 of=$basedir/$efi_img \ 1.105 count=$s 2> /dev/null 1.106 1.107 # Create boot sector 1.108 doslabel="$(echo "SLITAZ BOOT " | od -v -N 11 -t x1 -w1 -An)" 1.109 if [ "$ftype" = "33 32" ]; then 1.110 - hexdump -R <<EOT | dd of=$basedir/boot/isolinux/efi.img \ 1.111 + hexdump -R <<EOT | dd of=$basedir/$efi_img \ 1.112 conv=notrunc 1.113 0 eb 58 90 53 6c 69 54 61 7a 00 00 00 02 04 $rsect 00 | 1.114 0 02 00 00 $size f8 00 00 20 00 40 00 00 00 00 00 | 1.115 @@ -563,16 +564,16 @@ 1.116 EOT 1.117 while read ofs data; do 1.118 echo "0 ${data//:/ } |" | hexdump -R | dd conv=notrunc \ 1.119 - bs=1 seek=$ofs of=$basedir/boot/isolinux/efi.img 1.120 + bs=1 seek=$ofs of=$basedir/$efi_img 1.121 done <<EOT 1.122 510 55:aa:52:52:61:41 1.123 996 72:72:41:61:ff:ff:ff:ff:02 1.124 1022 55:aa 1.125 EOT 1.126 else 1.127 - echo -en '\x55\xAA' | dd of=$basedir/boot/isolinux/efi.img \ 1.128 + echo -en '\x55\xAA' | dd of=$basedir/$efi_img \ 1.129 seek=510 bs=1 conv=notrunc 1.130 - hexdump -R <<EOT | dd of=$basedir/boot/isolinux/efi.img \ 1.131 + hexdump -R <<EOT | dd of=$basedir/$efi_img \ 1.132 conv=notrunc 1.133 0 eb 3c 90 53 6c 69 54 61 7a 00 00 00 02 04 $rsect 00 | 1.134 0 02 40 00 $size f8 $fsz 20 00 40 00 00 00 00 00 | 1.135 @@ -583,32 +584,32 @@ 1.136 fi 2> /dev/null 1.137 1.138 # Create fats 1.139 - echo "0 $fhead |" | hexdump -R | dd of=$basedir/boot/isolinux/efi.img \ 1.140 + echo "0 $fhead |" | hexdump -R | dd of=$basedir/$efi_img \ 1.141 seek=$(($rsect)) bs=512 conv=notrunc 2> /dev/null 1.142 - echo "0 $fhead |" | hexdump -R | dd of=$basedir/boot/isolinux/efi.img \ 1.143 + echo "0 $fhead |" | hexdump -R | dd of=$basedir/$efi_img \ 1.144 seek=$(($rsect+$fsect)) bs=512 conv=notrunc 2> /dev/null 1.145 1.146 # Add label 1.147 echo "0 $doslabel 08 |" | hexdump -R | \ 1.148 - dd of=$basedir/boot/isolinux/efi.img bs=512 conv=notrunc \ 1.149 + dd of=$basedir/$efi_img bs=512 conv=notrunc \ 1.150 seek=$(($rsect+$fsect+$fsect)) 2> /dev/null 1.151 1.152 mkdir -p /tmp/mnt$$ 1.153 - mount -o loop $basedir/boot/isolinux/efi.img /tmp/mnt$$ 1.154 + mount -o loop $basedir/$efi_img /tmp/mnt$$ 1.155 ( cd $basedir; find efi -type d | cpio -o -H newc ) | \ 1.156 ( cd /tmp/mnt$$ ; cpio -idmu 2> /dev/null ) 1.157 sync 1.158 - dd if=$basedir/boot/isolinux/efi.img of=/tmp/fat$$ \ 1.159 + dd if=$basedir/$efi_img of=/tmp/fat$$ \ 1.160 skip=$rsect bs=512 count=$fsect 2> /dev/null 1.161 - ( cd $basedir; find efi -type f | cpio -o -H newc ) | \ 1.162 + ( cd $basedir; find efi/boot -type f | cpio -o -H newc ) | \ 1.163 ( cd /tmp/mnt$$ ; cpio -idmu 2> /dev/null ) 1.164 umount /tmp/mnt$$ 1.165 - cat /tmp/fat$$ /tmp/fat$$ | dd of=$basedir/boot/isolinux/efi.img \ 1.166 + cat /tmp/fat$$ /tmp/fat$$ | dd of=$basedir/$efi_img \ 1.167 seek=$rsect bs=512 conv=notrunc 2> /dev/null 1.168 rm /tmp/fat$$ 1.169 rmdir /tmp/mnt$$ 1.170 1.171 - dd count=0 bs=2k of=$basedir/boot/isolinux/efi.img \ 1.172 + dd count=0 bs=2k of=$basedir/$efi_img \ 1.173 seek=$count 2> /dev/null 1.174 } 1.175 1.176 @@ -648,7 +649,7 @@ 1.177 $PWD/boot/isolinux/i18n.cfg 1.178 $PWD/boot/isolinux/c32box.c32 1.179 $PWD/boot/isolinux/kbd 1.180 -$PWD/boot/isolinux/efi.img 1.181 +$PWD/$efi_img 1.182 $PWD/boot/bzImage* 1.183 $PWD/efi/boot/linux.cmdline* 1.184 $PWD/boot/rootfs* 1.185 @@ -664,7 +665,7 @@ 1.186 title 'Generating ISO image' 1.187 1.188 _ 'Generating %s' "$1" 1.189 - uefi="$(cd $2 ; ls boot/isolinux/efi.img 2> /dev/null)" 1.190 + uefi="$(cd $2 ; ls $efi_img 2> /dev/null)" 1.191 genisoimage -R -o $1 -hide-rr-moved -sort /tmp/cdsort$$ \ 1.192 -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \ 1.193 -no-emul-boot -boot-load-size 4 -boot-info-table \ 1.194 @@ -680,7 +681,7 @@ 1.195 mount -o loop,ro $1 /tmp/mnt$$ 1.196 fixup_uefi_part $1 /tmp/mnt$$ 1.197 for i in boot/isolinux/isolinux.bin boot/isolinux/boot.cat \ 1.198 - ${uefi:+boot/isolinux/efi.img} ; do 1.199 + ${uefi:+$efi_img} ; do 1.200 sed -i "s|.* $i|$( cd /tmp/mnt$$ ; md5sum $i)|" $2/md5sum 1.201 done 1.202 dd if=$2/md5sum of=$1 conv=notrunc bs=2k \ 1.203 @@ -1295,9 +1296,9 @@ 1.204 # Remove duplicated files in $1/efi/boot from $1/boot 1.205 1.206 cleanup_efi_boot() { 1.207 - [ -s $1/boot/isolinux/efi.img ] && 1.208 - [ ! -x $1/boot/isolinux/efi.img ] && 1.209 - rm -f $1/boot/isolinux/efi.img 1.210 + for i in $1/$efi_img $1/boot/isolinux/efi.img ; do 1.211 + [ -s $i ] && [ ! -x $i ] && rm -f $i 1.212 + done 1.213 for i in $1/efi/boot/* ; do 1.214 [ -f $i ] || continue 1.215 case "$i" in