From c8be82c525bab0deac7c8e44a2f7c400e003f28f Mon Sep 17 00:00:00 2001 From: Julia Kreger Date: Tue, 17 May 2022 13:28:37 -0700 Subject: [PATCH] Deprecate syslinux Syslinux is a functionally abandoned Legacy BIOS boot mode bootloader which has not seen updates since 2019, and is starting to see discussion amongst linux distributions to remove explicit support and packaging for Syslinux. Syslinux's relevance is also disappearing as UEFI booting is becoming the standard. While syslinux did go ahead and ensure their bootloader *could* be built and support UEFI, distributions also didn't uniformly adopt packaging and support for this bootloader. This change proposes to deprecate it and notates the areas in which functionality is deprecated. Change-Id: Ic52007fa4f207561d282eb5ae54273885c0ab0c0 --- doc/source/install/configure-pxe.rst | 77 +++---------------- doc/source/user/architecture.rst | 4 +- ...ate-syslinux-support-98d327c67607fc8e.yaml | 26 +++++++ 3 files changed, 37 insertions(+), 70 deletions(-) create mode 100644 releasenotes/notes/deprecate-syslinux-support-98d327c67607fc8e.yaml diff --git a/doc/source/install/configure-pxe.rst b/doc/source/install/configure-pxe.rst index 59346ce140..863ff15497 100644 --- a/doc/source/install/configure-pxe.rst +++ b/doc/source/install/configure-pxe.rst @@ -169,71 +169,6 @@ the PXE UEFI environment. for them. Please check :doc:`../admin/drivers` for information on whether your driver requires manual UEFI configuration. - -Legacy BIOS - Syslinux setup ----------------------------- - -In order to deploy instances with PXE on bare metal using Legacy BIOS boot -mode, perform these additional steps on the ironic conductor node. - -#. Install the syslinux package with the PXE boot images: - - Ubuntu (16.04LTS and later):: - - sudo apt-get install syslinux-common pxelinux - - RHEL8/CentOS8/Fedora:: - - sudo dnf install syslinux-tftpboot - - SUSE:: - - sudo zypper install syslinux - -#. Copy the PXE image to ``/tftpboot``. The PXE image might be found at [1]_: - - Ubuntu (16.04LTS and later):: - - sudo cp /usr/lib/PXELINUX/pxelinux.0 /tftpboot - - RHEL8/CentOS8/SUSE:: - - sudo cp /usr/share/syslinux/pxelinux.0 /tftpboot - -#. If whole disk images need to be deployed via PXE-netboot, copy the - chain.c32 image to ``/tftpboot`` to support it: - - Ubuntu (16.04LTS and later):: - - sudo cp /usr/lib/syslinux/modules/bios/chain.c32 /tftpboot - - Fedora:: - - sudo cp /boot/extlinux/chain.c32 /tftpboot - - RHEL8/CentOS8/SUSE:: - - sudo cp /usr/share/syslinux/chain.c32 /tftpboot/ - -#. If the version of syslinux is **greater than** 4 we also need to make sure - that we copy the library modules into the ``/tftpboot`` directory [2]_ - [1]_. For example, for Ubuntu run:: - - sudo cp /usr/lib/syslinux/modules/*/ldlinux.* /tftpboot - -#. Update the bare metal node with ``boot_mode:bios`` capability in - node's properties field. See :ref:`boot_mode_support` for details. - -#. Make sure that bare metal node is configured to boot in Legacy BIOS boot mode - and boot device is set to network/pxe. - -.. [1] On **Fedora/RHEL** the ``syslinux-tftpboot`` package already installs - the library modules and PXE image at ``/tftpboot``. If the TFTP server - is configured to listen to a different directory you should copy the - contents of ``/tftpboot`` to the configured directory -.. [2] http://www.syslinux.org/wiki/index.php/Library_modules - - iPXE setup ---------- @@ -438,18 +373,18 @@ instead. In the following example, since 'x86' and 'x86_64' keys are not in the ``pxe_bootfile_name_by_arch`` or ``pxe_config_template_by_arch`` options, x86 -and x86_64 nodes will be deployed by 'pxelinux.0' or 'bootx64.efi', depending +and x86_64 nodes will be deployed by 'undionly.kpxe' or 'bootx64.efi', depending on the node's ``boot_mode`` capability ('bios' or 'uefi'). However, aarch64 nodes will be deployed by 'grubaa64.efi', and ppc64 nodes by 'bootppc64':: [pxe] # Bootfile DHCP parameter. (string value) - pxe_bootfile_name=pxelinux.0 + pxe_bootfile_name=undionly.kpxe # On ironic-conductor node, template file for PXE # configuration. (string value) - pxe_config_template = $pybasedir/drivers/modules/pxe_config.template + pxe_config_template = $pybasedir/drivers/modules/ipxe_config.template # Bootfile DHCP parameter for UEFI boot mode. (string value) uefi_pxe_bootfile_name=bootx64.efi @@ -478,6 +413,12 @@ nodes will be deployed by 'grubaa64.efi', and ppc64 nodes by 'bootppc64':: iPXE based deployment, and defaults to the same behavior as the comperable ``[pxe]pxe_bootfile_by_arch`` setting for standard PXE. +.. note:: + When booting PowerPC based machines, the firmware loader directly boots + a kernel and ramdisk. It explicitly reads a "pxelinux" style template, + and then directly retrieves the files defined in the file without a + "network boot program". + PXE timeouts tuning ------------------- diff --git a/doc/source/user/architecture.rst b/doc/source/user/architecture.rst index 714c9e16e4..de86f47dea 100644 --- a/doc/source/user/architecture.rst +++ b/doc/source/user/architecture.rst @@ -83,8 +83,8 @@ through the steps involved during the provisioning of a bare metal instance. These pre-requisites must be met before the deployment process: * Dependent packages to be configured on the Bare Metal service node(s) - where ironic-conductor is running like tftp-server, ipmi, syslinux etc for - bare metal provisioning. + where ironic-conductor is running like tftp-server, ipmi, grub/ipxe, etc + for bare metal provisioning. * Nova must be configured to make use of the bare metal service endpoint and compute driver should be configured to use ironic driver on the Nova compute node(s). diff --git a/releasenotes/notes/deprecate-syslinux-support-98d327c67607fc8e.yaml b/releasenotes/notes/deprecate-syslinux-support-98d327c67607fc8e.yaml new file mode 100644 index 0000000000..670047a828 --- /dev/null +++ b/releasenotes/notes/deprecate-syslinux-support-98d327c67607fc8e.yaml @@ -0,0 +1,26 @@ +--- +deprecations: + - | + Support for the `syslinux `_ + and the often separately package `isolinux `_ + and `pxelinux `_. + Legacy BIOS boot loaders, is deprecated and will be removed the future. + This is for two reasons. The first is because it is a BIOS mode bootloader, + and the shift to UEFI booting has reduced the need for these packages. + The second reason is a lack of maintenance, which is ultimately the same + reason Linux distributions are discussing dropping support and packaging. + Syslinux has not been updated since `2019 `_. + Incidently, the file format it utilizes *is* supported by Power hardware, + and that may result in the configuration template remaining in Ironic for + the forseeable future. + - Support for use of `pxelinux `_ + is deprecated due to the deprecation of support for Syslinux. + - Support for virtual media booting with x86 Hardware in Legacy BIOS mode is + deprecated due to the dependency upon + `isolinux `_ + for use of Legacy BIOS boot mode. ``isolinux`` is from the ``syslinux`` + package and source tree. + - Deprecation of ``pxelinux``, as a result of the deprecation of ``syslinux``, + does ultimately mean the default for the ``pxe`` boot_interface to carry + defaults for the use of grub based network booting, specifically for + for operators who are unable to use iPXE.