summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.rst1
-rwxr-xr-xparabolaiso/mkparabolaiso71
2 files changed, 28 insertions, 44 deletions
diff --git a/README.rst b/README.rst
index 94c2377..f72970a 100644
--- a/README.rst
+++ b/README.rst
@@ -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."
}