From 863247d0a6980906dad0308044f2f3b6ceccc110 Mon Sep 17 00:00:00 2001 From: nl6720 Date: Tue, 17 Nov 2020 14:10:21 +0200 Subject: Keep all SYSLINUX files in /syslinux This gets rid of the duplicate ldlinux.c32 and the useless isolinux.cfg which only points to syslinux.cfg. Implements https://gitlab.archlinux.org/archlinux/archiso/-/issues/46 . --- README.profile.rst | 13 +---- archiso/mkarchiso | 76 ++++++++------------------- configs/baseline/isolinux/isolinux.cfg | 9 ---- configs/baseline/syslinux/syslinux-linux.cfg | 4 +- configs/baseline/syslinux/syslinux.cfg | 4 +- configs/releng/isolinux/isolinux.cfg | 9 ---- configs/releng/syslinux/archiso.cfg | 14 ----- configs/releng/syslinux/archiso_head.cfg | 4 +- configs/releng/syslinux/archiso_pxe-linux.cfg | 12 ++--- configs/releng/syslinux/archiso_pxe.cfg | 6 +-- configs/releng/syslinux/archiso_sys-linux.cfg | 8 +-- configs/releng/syslinux/archiso_sys.cfg | 6 +-- configs/releng/syslinux/archiso_tail.cfg | 12 ++--- configs/releng/syslinux/syslinux.cfg | 17 ++++-- 14 files changed, 64 insertions(+), 130 deletions(-) delete mode 100644 configs/baseline/isolinux/isolinux.cfg delete mode 100644 configs/releng/isolinux/isolinux.cfg delete mode 100644 configs/releng/syslinux/archiso.cfg diff --git a/README.profile.rst b/README.profile.rst index 1729319..6541bd7 100644 --- a/README.profile.rst +++ b/README.profile.rst @@ -9,7 +9,6 @@ An archiso profile consists of several configuration files and a directory for f profile |- airootfs/ |- efiboot/ - |- isolinux/ |- syslinux/ |- packages.arch |- pacman.conf @@ -133,21 +132,13 @@ selected in **profiledef.sh**. It contains configuration for `systemd-boot The *custom template identifiers* are **only** understood in the boot loader entry `.conf` files (i.e. **not** in `loader.conf`). -isolinux --------- - -This directory is mandatory when the `bios.syslinux.eltorito` bootmode is selected in **profiledef.sh**. -It contains configuration for `isolinux `_ used in the resuling -image. - -The *custom template identifiers* are understood in all `.cfg` files in this directory. - syslinux -------- This directory is mandatory when the `bios.syslinux.mbr` or the `bios.syslinux.eltorito` bootmodes are selected in **profiledef.sh**. -It contains configuration files for `syslinux `_ or `pxelinux +It contains configuration files for `syslinux `_ or `isolinux +`_ , or `pxelinux `_ used in the resuling image. The *custom template identifiers* are understood in all `.cfg` files in this directory. diff --git a/archiso/mkarchiso b/archiso/mkarchiso index 645dd83..0e478a4 100755 --- a/archiso/mkarchiso +++ b/archiso/mkarchiso @@ -372,33 +372,33 @@ _make_boot_on_iso9660() { _msg_info "Done!" } -# Prepare /${install_dir}/boot/syslinux +# Prepare /syslinux for booting from MBR _make_bootmode_bios.syslinux.mbr() { _msg_info "Setting up SYSLINUX for BIOS booting from a disk..." - install -d -m 0755 -- "${isofs_dir}/${install_dir}/boot/syslinux" + install -d -m 0755 -- "${isofs_dir}/syslinux" for _cfg in "${profile}/syslinux/"*.cfg; do sed "s|%ARCHISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g; s|%ARCH%|${arch}|g" \ - "${_cfg}" > "${isofs_dir}/${install_dir}/boot/syslinux/${_cfg##*/}" + "${_cfg}" > "${isofs_dir}/syslinux/${_cfg##*/}" done if [[ -e "${profile}/syslinux/splash.png" ]]; then - install -m 0644 -- "${profile}/syslinux/splash.png" "${isofs_dir}/${install_dir}/boot/syslinux/" + install -m 0644 -- "${profile}/syslinux/splash.png" "${isofs_dir}/syslinux/" fi - install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/"*.c32 "${isofs_dir}/${install_dir}/boot/syslinux/" - install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/lpxelinux.0" "${isofs_dir}/${install_dir}/boot/syslinux/" - install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/memdisk" "${isofs_dir}/${install_dir}/boot/syslinux/" + install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/"*.c32 "${isofs_dir}/syslinux/" + install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/lpxelinux.0" "${isofs_dir}/syslinux/" + install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/memdisk" "${isofs_dir}/syslinux/" _run_once _make_boot_on_iso9660 - if [[ -e "${isofs_dir}/${install_dir}/boot/syslinux/hdt.c32" ]]; then - install -d -m 0755 -- "${isofs_dir}/${install_dir}/boot/syslinux/hdt" + if [[ -e "${isofs_dir}/syslinux/hdt.c32" ]]; then + install -d -m 0755 -- "${isofs_dir}/syslinux/hdt" if [[ -e "${airootfs_dir}/usr/share/hwdata/pci.ids" ]]; then gzip -c -9 "${airootfs_dir}/usr/share/hwdata/pci.ids" > \ - "${isofs_dir}/${install_dir}/boot/syslinux/hdt/pciids.gz" + "${isofs_dir}/syslinux/hdt/pciids.gz" fi find "${airootfs_dir}/usr/lib/modules" -name 'modules.alias' -print -exec gzip -c -9 '{}' ';' -quit > \ - "${isofs_dir}/${install_dir}/boot/syslinux/hdt/modalias.gz" + "${isofs_dir}/syslinux/hdt/modalias.gz" fi # Add other aditional/extra files to ${install_dir}/boot/ @@ -412,21 +412,14 @@ _make_bootmode_bios.syslinux.mbr() { _msg_info "Done! SYSLINUX set up for BIOS booting from a disk successfully." } -# Prepare /isolinux +# Prepare /syslinux for El-Torito booting _make_bootmode_bios.syslinux.eltorito() { _msg_info "Setting up SYSLINUX for BIOS booting from an optical disc..." - install -d -m 0755 -- "${isofs_dir}/isolinux" - for _cfg in "${profile}/isolinux/"*".cfg"; do - sed "s|%ARCHISO_LABEL%|${iso_label}|g; - s|%INSTALL_DIR%|${install_dir}|g; - s|%ARCH%|${arch}|g" \ - "${_cfg}" > "${isofs_dir}/isolinux/${_cfg##*/}" - done - install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/isolinux.bin" "${isofs_dir}/isolinux/" - install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/isohdpfx.bin" "${isofs_dir}/isolinux/" - install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/ldlinux.c32" "${isofs_dir}/isolinux/" + install -d -m 0755 -- "${isofs_dir}/syslinux" + install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/isolinux.bin" "${isofs_dir}/syslinux/" + install -m 0644 -- "${airootfs_dir}/usr/lib/syslinux/bios/isohdpfx.bin" "${isofs_dir}/syslinux/" - # isolinux.cfg loads syslinux.cfg + # ISOLINUX and SYSLINUX installation is shared _run_once _make_bootmode_bios.syslinux.mbr _msg_info "Done! SYSLINUX set up for BIOS booting from an optical disc successfully." @@ -573,34 +566,7 @@ _validate_requirements_bootmode_bios.syslinux.mbr() { } _validate_requirements_bootmode_bios.syslinux.eltorito() { - # Check if the syslinux package is in the package list - # shellcheck disable=SC2076 - if [[ ! " ${pkg_list[*]} " =~ ' syslinux ' ]]; then - (( validation_error=validation_error+1 )) - _msg_error "Validating '${bootmode}': The 'syslinux' package is missing from the package list!" 0 - fi - - # Check if isolinux configuration files exist - if [[ ! -d "${profile}/isolinux" ]]; then - (( validation_error=validation_error+1 )) - _msg_error "Validating '${bootmode}': The '${profile}/isolinux' directory is missing!" 0 - else - local cfgfile - for cfgfile in "${profile}/isolinux/"*'.cfg'; do - if [[ -e "${cfgfile}" ]]; then - break - else - (( validation_error=validation_error+1 )) - _msg_error "Validating '${bootmode}': No configuration file found in '${profile}/isolinux/'!" 0 - fi - done - fi - - # Check for optional packages - # shellcheck disable=SC2076 - if [[ ! " ${pkg_list[*]} " =~ ' memtest86+ ' ]]; then - _msg_info "Validating '${bootmode}': 'memtest86+' is not in the package list. Memory testing will not be available from syslinux." - fi + _validate_requirements_bootmode_bios.syslinux.mbr } _validate_requirements_bootmode_uefi-x64.systemd-boot.esp() { @@ -675,9 +641,9 @@ _validate_requirements_airootfs_image_type_ext4+squashfs() { _add_xorrisofs_options_bios.syslinux.eltorito() { xorrisofs_options+=( # El Torito boot image for x86 BIOS - '-eltorito-boot' 'isolinux/isolinux.bin' + '-eltorito-boot' 'syslinux/isolinux.bin' # El Torito boot catalog file - '-eltorito-catalog' 'isolinux/boot.cat' + '-eltorito-catalog' 'syslinux/boot.cat' # Required options to boot with ISOLINUX '-no-emul-boot' '-boot-load-size' '4' '-boot-info-table' ) @@ -686,8 +652,8 @@ _add_xorrisofs_options_bios.syslinux.eltorito() { # SYSLINUX MBR _add_xorrisofs_options_bios.syslinux.mbr() { xorrisofs_options+=( - # SYSLINUX MBR bootstrap code; does not work without "-eltorito-boot isolinux/isolinux.bin" - '-isohybrid-mbr' "${isofs_dir}/isolinux/isohdpfx.bin" + # SYSLINUX MBR bootstrap code; does not work without "-eltorito-boot syslinux/isolinux.bin" + '-isohybrid-mbr' "${isofs_dir}/syslinux/isohdpfx.bin" # When GPT is used, create an additional partition in the MBR (besides 0xEE) for sectors 0–1 (MBR # bootstrap code area) and mark it as bootable # This violates the UEFI specification, but may allow booting on some systems diff --git a/configs/baseline/isolinux/isolinux.cfg b/configs/baseline/isolinux/isolinux.cfg deleted file mode 100644 index e078ce3..0000000 --- a/configs/baseline/isolinux/isolinux.cfg +++ /dev/null @@ -1,9 +0,0 @@ -# -# SPDX-License-Identifier: GPL-3.0-or-later - -PATH /%INSTALL_DIR%/boot/syslinux/ -DEFAULT loadconfig - -LABEL loadconfig - CONFIG /%INSTALL_DIR%/boot/syslinux/syslinux.cfg - APPEND /%INSTALL_DIR%/ diff --git a/configs/baseline/syslinux/syslinux-linux.cfg b/configs/baseline/syslinux/syslinux-linux.cfg index 21dfbd7..867d815 100644 --- a/configs/baseline/syslinux/syslinux-linux.cfg +++ b/configs/baseline/syslinux/syslinux-linux.cfg @@ -3,6 +3,6 @@ LABEL arch MENU LABEL Arch Linux (x86_64, BIOS) -LINUX boot/%ARCH%/vmlinuz-linux -INITRD boot/%ARCH%/initramfs-linux.img +LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux +INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% diff --git a/configs/baseline/syslinux/syslinux.cfg b/configs/baseline/syslinux/syslinux.cfg index c021a0e..88a36ea 100644 --- a/configs/baseline/syslinux/syslinux.cfg +++ b/configs/baseline/syslinux/syslinux.cfg @@ -1,11 +1,11 @@ # # SPDX-License-Identifier: GPL-3.0-or-later -UI boot/syslinux/menu.c32 +UI menu.c32 MENU TITLE Arch Linux MENU CLEAR DEFAULT arch TIMEOUT 30 -INCLUDE boot/syslinux/syslinux-linux.cfg +INCLUDE syslinux-linux.cfg diff --git a/configs/releng/isolinux/isolinux.cfg b/configs/releng/isolinux/isolinux.cfg deleted file mode 100644 index 7b14d59..0000000 --- a/configs/releng/isolinux/isolinux.cfg +++ /dev/null @@ -1,9 +0,0 @@ -# -# SPDX-License-Identifier: GPL-3.0-or-later - -PATH /%INSTALL_DIR%/boot/syslinux/ -DEFAULT loadconfig - -LABEL loadconfig - CONFIG /%INSTALL_DIR%/boot/syslinux/archiso.cfg - APPEND /%INSTALL_DIR%/ diff --git a/configs/releng/syslinux/archiso.cfg b/configs/releng/syslinux/archiso.cfg deleted file mode 100644 index a6ba8b0..0000000 --- a/configs/releng/syslinux/archiso.cfg +++ /dev/null @@ -1,14 +0,0 @@ -# -# SPDX-License-Identifier: GPL-3.0-or-later - -DEFAULT select - -LABEL select -COM32 boot/syslinux/whichsys.c32 -APPEND -pxe- pxe -sys- sys -iso- sys - -LABEL pxe -CONFIG boot/syslinux/archiso_pxe.cfg - -LABEL sys -CONFIG boot/syslinux/archiso_sys.cfg diff --git a/configs/releng/syslinux/archiso_head.cfg b/configs/releng/syslinux/archiso_head.cfg index be08525..e553e79 100644 --- a/configs/releng/syslinux/archiso_head.cfg +++ b/configs/releng/syslinux/archiso_head.cfg @@ -2,9 +2,9 @@ # SPDX-License-Identifier: GPL-3.0-or-later SERIAL 0 38400 -UI boot/syslinux/vesamenu.c32 +UI vesamenu.c32 MENU TITLE Arch Linux -MENU BACKGROUND boot/syslinux/splash.png +MENU BACKGROUND splash.png MENU WIDTH 78 MENU MARGIN 4 diff --git a/configs/releng/syslinux/archiso_pxe-linux.cfg b/configs/releng/syslinux/archiso_pxe-linux.cfg index aa4bc2a..c991ca0 100644 --- a/configs/releng/syslinux/archiso_pxe-linux.cfg +++ b/configs/releng/syslinux/archiso_pxe-linux.cfg @@ -7,8 +7,8 @@ Boot the Arch Linux install medium using NBD. It allows you to install Arch Linux or perform system maintenance. ENDTEXT MENU LABEL Arch Linux install medium (x86_64, NBD) -LINUX boot/x86_64/vmlinuz-linux -INITRD boot/intel-ucode.img,boot/amd-ucode.img,boot/x86_64/initramfs-linux.img +LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux +INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver} checksum verify SYSAPPEND 3 @@ -18,8 +18,8 @@ Boot the Arch Linux live medium using NFS. It allows you to install Arch Linux or perform system maintenance. ENDTEXT MENU LABEL Arch Linux install medium (x86_64, NFS) -LINUX boot/x86_64/vmlinuz-linux -INITRD boot/intel-ucode.img,boot/amd-ucode.img,boot/x86_64/initramfs-linux.img +LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux +INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt checksum verify SYSAPPEND 3 @@ -29,7 +29,7 @@ Boot the Arch Linux live medium using HTTP. It allows you to install Arch Linux or perform system maintenance. ENDTEXT MENU LABEL Arch Linux install medium (x86_64, HTTP) -LINUX boot/x86_64/vmlinuz-linux -INITRD boot/intel-ucode.img,boot/amd-ucode.img,boot/x86_64/initramfs-linux.img +LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux +INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ checksum verify SYSAPPEND 3 diff --git a/configs/releng/syslinux/archiso_pxe.cfg b/configs/releng/syslinux/archiso_pxe.cfg index 202ed7a..b005cb1 100644 --- a/configs/releng/syslinux/archiso_pxe.cfg +++ b/configs/releng/syslinux/archiso_pxe.cfg @@ -1,8 +1,8 @@ # # SPDX-License-Identifier: GPL-3.0-or-later -INCLUDE boot/syslinux/archiso_head.cfg +INCLUDE archiso_head.cfg -INCLUDE boot/syslinux/archiso_pxe-linux.cfg +INCLUDE archiso_pxe-linux.cfg -INCLUDE boot/syslinux/archiso_tail.cfg +INCLUDE archiso_tail.cfg diff --git a/configs/releng/syslinux/archiso_sys-linux.cfg b/configs/releng/syslinux/archiso_sys-linux.cfg index d5fd776..e2b4edd 100644 --- a/configs/releng/syslinux/archiso_sys-linux.cfg +++ b/configs/releng/syslinux/archiso_sys-linux.cfg @@ -7,8 +7,8 @@ Boot the Arch Linux install medium on BIOS. It allows you to install Arch Linux or perform system maintenance. ENDTEXT MENU LABEL Arch Linux install medium (x86_64, BIOS) -LINUX boot/x86_64/vmlinuz-linux -INITRD boot/intel-ucode.img,boot/amd-ucode.img,boot/x86_64/initramfs-linux.img +LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux +INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% # Accessibility boot option @@ -18,6 +18,6 @@ Boot the Arch Linux install medium on BIOS with speakup screen reader. It allows you to install Arch Linux or perform system maintenance with speech feedback. ENDTEXT MENU LABEL Arch Linux install medium (x86_64, BIOS) with ^speech -LINUX boot/x86_64/vmlinuz-linux -INITRD boot/intel-ucode.img,boot/amd-ucode.img,boot/x86_64/initramfs-linux.img +LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux +INITRD /%INSTALL_DIR%/boot/intel-ucode.img,/%INSTALL_DIR%/boot/amd-ucode.img,/%INSTALL_DIR%/boot/x86_64/initramfs-linux.img APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% accessibility=on diff --git a/configs/releng/syslinux/archiso_sys.cfg b/configs/releng/syslinux/archiso_sys.cfg index 9e70c17..cab78f8 100644 --- a/configs/releng/syslinux/archiso_sys.cfg +++ b/configs/releng/syslinux/archiso_sys.cfg @@ -1,11 +1,11 @@ # # SPDX-License-Identifier: GPL-3.0-or-later -INCLUDE boot/syslinux/archiso_head.cfg +INCLUDE archiso_head.cfg DEFAULT arch64 TIMEOUT 150 -INCLUDE boot/syslinux/archiso_sys-linux.cfg +INCLUDE archiso_sys-linux.cfg -INCLUDE boot/syslinux/archiso_tail.cfg +INCLUDE archiso_tail.cfg diff --git a/configs/releng/syslinux/archiso_tail.cfg b/configs/releng/syslinux/archiso_tail.cfg index 685e1c8..af172c0 100644 --- a/configs/releng/syslinux/archiso_tail.cfg +++ b/configs/releng/syslinux/archiso_tail.cfg @@ -7,19 +7,19 @@ Boot an existing operating system. Press TAB to edit the disk and partition number to boot. ENDTEXT MENU LABEL Boot existing OS -COM32 boot/syslinux/chain.c32 +COM32 chain.c32 APPEND hd0 0 # http://www.memtest.org/ LABEL memtest MENU LABEL Run Memtest86+ (RAM test) -LINUX boot/memtest +LINUX /%INSTALL_DIR%/boot/memtest # http://hdt-project.org/ LABEL hdt MENU LABEL Hardware Information (HDT) -COM32 boot/syslinux/hdt.c32 -APPEND modules_alias=boot/syslinux/hdt/modalias.gz pciids=boot/syslinux/hdt/pciids.gz +COM32 hdt.c32 +APPEND modules_alias=hdt/modalias.gz pciids=hdt/pciids.gz LABEL reboot TEXT HELP @@ -27,7 +27,7 @@ Reboot computer. The computer's firmware must support APM. ENDTEXT MENU LABEL Reboot -COM32 boot/syslinux/reboot.c32 +COM32 reboot.c32 LABEL poweroff TEXT HELP @@ -35,4 +35,4 @@ Power off computer. The computer's firmware must support APM. ENDTEXT MENU LABEL Power Off -COM32 boot/syslinux/poweroff.c32 +COM32 poweroff.c32 diff --git a/configs/releng/syslinux/syslinux.cfg b/configs/releng/syslinux/syslinux.cfg index 3ee98de..847ab6b 100644 --- a/configs/releng/syslinux/syslinux.cfg +++ b/configs/releng/syslinux/syslinux.cfg @@ -1,5 +1,14 @@ -DEFAULT loadconfig +# +# SPDX-License-Identifier: GPL-3.0-or-later -LABEL loadconfig - CONFIG archiso.cfg - APPEND ../../ +DEFAULT select + +LABEL select +COM32 whichsys.c32 +APPEND -pxe- pxe -sys- sys -iso- sys + +LABEL pxe +CONFIG archiso_pxe.cfg + +LABEL sys +CONFIG archiso_sys.cfg -- cgit v1.2.3-54-g00ecf