Replace bash arithmetic with awk functions
archiso/mkarchiso: The bash arithmethics in _make_boot_uefi-x64.systemd-boot.esp() introduced rounding issues, that can lead to insufficient FAT image size for the files. Conversion functions for awk now replace the bash arithmetics and additionally a ceil() function rounds the calculated size up to the next full MiB. Add an info message about the size of the created FAT image. Fixes #70
This commit is contained in:
parent
2e1ddec0a7
commit
55cfb8ba02
@ -544,16 +544,22 @@ _make_boot_uefi-x64.systemd-boot.esp() {
|
|||||||
_msg_info "Setting up systemd-boot for UEFI booting..."
|
_msg_info "Setting up systemd-boot for UEFI booting..."
|
||||||
install -d -m 0755 -- "${isofs_dir}/EFI/archiso"
|
install -d -m 0755 -- "${isofs_dir}/EFI/archiso"
|
||||||
|
|
||||||
efiboot_imgsize="$(( (( (( $(du --apparent-size -bc \
|
# the required image size in KiB (rounded up to the next full MiB with an additional MiB for reserved sectors)
|
||||||
|
efiboot_imgsize="$(du -bc \
|
||||||
"${airootfs_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" \
|
"${airootfs_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" \
|
||||||
"${airootfs_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" \
|
"${airootfs_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" \
|
||||||
"${profile}/efiboot/" \
|
"${profile}/efiboot/" \
|
||||||
"${airootfs_dir}/boot/vmlinuz-"* \
|
"${airootfs_dir}/boot/vmlinuz-"* \
|
||||||
"${airootfs_dir}/boot/initramfs-"*".img" \
|
"${airootfs_dir}/boot/initramfs-"*".img" \
|
||||||
"${airootfs_dir}/boot/"{intel-uc.img,intel-ucode.img,amd-uc.img,amd-ucode.img,early_ucode.cpio,microcode.cpio} \
|
"${airootfs_dir}/boot/"{intel-uc.img,intel-ucode.img,amd-uc.img,amd-ucode.img,early_ucode.cpio,microcode.cpio} \
|
||||||
2>/dev/null | awk 'END {print $1}') / 1048576 )) +1 )) * 1024 ))"
|
2>/dev/null | awk 'function ceil(x){return int(x)+(x>int(x))}
|
||||||
|
function byte_to_kib(x){return x/1024}
|
||||||
|
function mib_to_kib(x){return x*1024}
|
||||||
|
END {print mib_to_kib(ceil((byte_to_kib($1)+1024)/1024))}'
|
||||||
|
)"
|
||||||
# The FAT image must be created with mkfs.fat not mformat, as some systems have issues with mformat made images:
|
# The FAT image must be created with mkfs.fat not mformat, as some systems have issues with mformat made images:
|
||||||
# https://lists.gnu.org/archive/html/grub-devel/2019-04/msg00099.html
|
# https://lists.gnu.org/archive/html/grub-devel/2019-04/msg00099.html
|
||||||
|
_msg_info "Creating FAT image of size: ${efiboot_imgsize} KiB..."
|
||||||
mkfs.fat -C -n ARCHISO_EFI "${isofs_dir}/EFI/archiso/efiboot.img" "$efiboot_imgsize"
|
mkfs.fat -C -n ARCHISO_EFI "${isofs_dir}/EFI/archiso/efiboot.img" "$efiboot_imgsize"
|
||||||
|
|
||||||
mmd -i "${isofs_dir}/EFI/archiso/efiboot.img" ::/EFI ::/EFI/BOOT
|
mmd -i "${isofs_dir}/EFI/archiso/efiboot.img" ::/EFI ::/EFI/BOOT
|
||||||
|
Loading…
Reference in New Issue
Block a user