Calculate required efiboot.img size instead of hardcoding it
Use du to count the file size of the kernel(s), initramfs images and boot loader (and its configuration). This allows to compress initramfs with something other than xz, or have more than one kernel installed. Fixes https://gitlab.archlinux.org/archlinux/archiso/-/issues/62 .
This commit is contained in:
parent
8c047047ab
commit
f34c95797d
1 changed files with 10 additions and 1 deletions
|
@ -540,12 +540,21 @@ _make_boot_on_fat() {
|
|||
|
||||
# Prepare efiboot.img::/EFI for EFI boot mode
|
||||
_make_boot_uefi-x64.systemd-boot.esp() {
|
||||
local efiboot_imgsize="0"
|
||||
_msg_info "Setting up systemd-boot for UEFI booting..."
|
||||
install -d -m 0755 -- "${isofs_dir}/EFI/archiso"
|
||||
|
||||
efiboot_imgsize="$(( (( (( $(du --apparent-size -bc \
|
||||
"${airootfs_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" \
|
||||
"${airootfs_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" \
|
||||
"${profile}/efiboot/" \
|
||||
"${airootfs_dir}/boot/vmlinuz-"* \
|
||||
"${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} \
|
||||
2>/dev/null | awk 'END {print $1}') / 1048576 )) +1 )) * 1024 ))"
|
||||
# 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
|
||||
mkfs.fat -C -n ARCHISO_EFI "${isofs_dir}/EFI/archiso/efiboot.img" 65536
|
||||
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
|
||||
mcopy -i "${isofs_dir}/EFI/archiso/efiboot.img" \
|
||||
|
|
Loading…
Add table
Reference in a new issue