diff options
author | David P <megver83@parabola.nu> | 2020-09-04 11:46:56 -0400 |
---|---|---|
committer | David P <megver83@parabola.nu> | 2020-09-04 11:55:52 -0400 |
commit | 7e2958c7a21991e2ed05cf2128e1b73515ea242c (patch) | |
tree | 230843ed7b832958279051f30a49d586b7b76bd4 | |
parent | 70d3bf367ffea6fe07433f618df35fd08e317f49 (diff) |
sync with archiso
Imported changes:
45a5d22 (HEAD -> master, origin/master, origin/HEAD) Create directories and copy files to the FAT image using mtools instead of mounting the file system
Signed-off-by: David P <megver83@parabola.nu>
-rw-r--r-- | README.rst | 1 | ||||
-rwxr-xr-x | parabolaiso/mkparabolaiso | 71 |
2 files changed, 28 insertions, 44 deletions
@@ -15,6 +15,7 @@ The following packages need to be installed to be able to create an image with t * dosfstools * e2fsprogs * libisoburn +* mtools * squashfs-tools For running the images in a virtualized test environment the following packages are required: diff --git a/parabolaiso/mkparabolaiso b/parabolaiso/mkparabolaiso index dcf1448..c5f898d 100755 --- a/parabolaiso/mkparabolaiso +++ b/parabolaiso/mkparabolaiso @@ -91,22 +91,6 @@ _umount_airootfs() { trap - EXIT HUP INT TERM } -_mount_efibootimg() { - trap "_umount_efibootimg" EXIT HUP INT TERM - install -d -m 0755 -- "${work_dir}/mnt/efiboot" - _msg_info "Mounting '${isofs_dir}/EFI/parabolaiso/efiboot.img' on '${work_dir}/mnt/efiboot'..." - mount -- "${isofs_dir}/EFI/parabolaiso/efiboot.img" "${work_dir}/mnt/efiboot" - _msg_info "Done!" -} - -_umount_efibootimg() { - _msg_info "Unmounting '${work_dir}/mnt/efiboot'..." - umount -d -- "${work_dir}/mnt/efiboot" - _msg_info "Done!" - rmdir -- "${work_dir}/mnt/efiboot" - trap - EXIT HUP INT TERM -} - # Show help usage, with an exit status. # $1: exit status number. _usage() { @@ -549,9 +533,9 @@ _make_refind_efi() { # Prepare kernel/initramfs on efiboot.img _make_boot_on_fat() { _msg_info "Preparing kernel and initramfs for the FAT file system..." - install -d -m 0755 -- "${work_dir}/mnt/efiboot/EFI/parabolaiso" - install -m 0644 -- "${airootfs_dir}/boot/vmlinuz-linux-libre" "${work_dir}/mnt/efiboot/EFI/parabolaiso/" - install -m 0644 -- "${airootfs_dir}/boot/parabolaiso.img" "${work_dir}/mnt/efiboot/EFI/parabolaiso/" + mmd -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" ::/EFI/parabolaiso + mcopy -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" \ + "${airootfs_dir}/boot/vmlinuz-linux" "${airootfs_dir}/boot/parabolaiso.img" ::/EFI/parabolaiso/ _msg_info "Done!" } @@ -559,65 +543,64 @@ _make_boot_on_fat() { _make_boot_uefi-x64.systemd-boot.esp() { _msg_info "Setting up systemd-boot for UEFI booting..." install -d -m 0755 -- "${isofs_dir}/EFI/parabolaiso" - mkfs.fat -C -n PARABOLAISO_EFI "${isofs_dir}/EFI/parabolaiso/efiboot.img" 65536 - - _mount_efibootimg - install -d -m 0755 -- "${work_dir}/mnt/efiboot/EFI/BOOT" - install -m 0644 -- "${airootfs_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" \ - "${work_dir}/mnt/efiboot/EFI/BOOT/BOOTx64.EFI" + # 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 PARABOLAISO_EFI "${isofs_dir}/EFI/parabolaiso/efiboot.img" 65536 - install -d -m 0755 -- "${work_dir}/mnt/efiboot/loader/entries" - install -m 0644 -- "${profile}/efiboot/loader/loader.conf" "${work_dir}/mnt/efiboot/loader/" + mmd -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" ::/EFI ::/EFI/BOOT + mcopy -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" \ + "${airootfs_dir}/usr/lib/systemd/boot/efi/systemd-bootx64.efi" ::/EFI/BOOT/BOOTx64.EFI + mmd -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" ::/loader ::/loader/entries + mcopy -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" "${profile}/efiboot/loader/loader.conf" ::/loader/ sed "s|%PARABOLAISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g; s|%ARCH%|${arch}|g" \ - "${profile}/efiboot/loader/entries/parabolaiso-x86_64-cd.conf" > \ - "${work_dir}/mnt/efiboot/loader/entries/parabolaiso-x86_64.conf" + "${profile}/efiboot/loader/entries/parabolaiso-x86_64-cd.conf" \ + | mcopy -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" - ::/loader/entries/parabolaiso-x86_64.conf # shellx64.efi is picked up automatically when on / if [[ -e "${airootfs_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ]]; then - install -m 0644 -- "${airootfs_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" "${work_dir}/mnt/efiboot/shellx64.efi" + mcopy -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" \ + "${airootfs_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ::/shellx64.efi fi # Copy kernel and initramfs _run_once _make_boot_on_fat - _umount_efibootimg - _msg_info "Done! systemd-boot set up for UEFI booting successfully." } _make_boot_uefi-x64.refind.esp() { _msg_info "Setting up rEFInd for UEFI booting..." install -d -m 0755 -- "${isofs_dir}/EFI/parabolaiso" - mkfs.fat -C -n PARABOLAISO_EFI "${isofs_dir}/EFI/parabolaiso/efiboot.img" 65536 - _mount_efibootimg - - install -d -m 0755 -- "${work_dir}/mnt/efiboot/EFI/BOOT/entries" - install -m 0644 -- "${airootfs_dir}/usr/share/refind/refind_x64.efi" \ - "${work_dir}/mnt/efiboot/EFI/BOOT/BOOTx64.EFI" + # 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 PARABOLAISO_EFI "${isofs_dir}/EFI/parabolaiso/efiboot.img" 65536 - install -m 0644 -- "${profile}/efiboot/EFI/BOOT/refind.conf" "${work_dir}/mnt/efiboot/EFI/BOOT/" + mmd -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" ::/EFI ::/EFI/BOOT + mcopy -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" \ + "${airootfs_dir}/usr/share/refind/refind_x64.efi" ::/EFI/BOOT/BOOTx64.EFI + mmd -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" ::/EFI/BOOT/entries + mcopy -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" "${profile}/efiboot/EFI/BOOT/refind.conf" ::/EFI/BOOT/ sed "s|%PARABOLAISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g; s|%ARCH%|${arch}|g" \ - "${profile}/efiboot/EFI/BOOT/entries/parabolaiso-x86_64-cd.conf" > \ - "${work_dir}/mnt/efiboot/EFI/BOOT/entries/parabolaiso-x86_64.conf" + "${profile}/efiboot/EFI/BOOT/entries/parabolaiso-x86_64-cd.conf" \ + | mcopy -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" - ::/EFI/BOOT/entries/parabolaiso-x86_64.conf # shellx64.efi is picked up automatically when on / if [[ -e "${airootfs_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ]]; then - install -m 0644 -- "${airootfs_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" "${work_dir}/mnt/efiboot/shellx64.efi" + mcopy -i "${isofs_dir}/EFI/parabolaiso/efiboot.img" \ + "${airootfs_dir}/usr/share/edk2-shell/x64/Shell_Full.efi" ::/shellx64.efi fi # Copy kernel and initramfs _run_once _make_boot_on_fat - _umount_efibootimg - _msg_info "Done! rEFInd set up for UEFI booting successfully." } |