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
This commit is contained in:
Julia Kreger 2022-05-17 13:28:37 -07:00
parent 565e3c4bff
commit c8be82c525
3 changed files with 37 additions and 70 deletions

View File

@ -169,71 +169,6 @@ the PXE UEFI environment.
for them. Please check :doc:`../admin/drivers` for information on whether for them. Please check :doc:`../admin/drivers` for information on whether
your driver requires manual UEFI configuration. 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 iPXE setup
---------- ----------
@ -438,18 +373,18 @@ instead.
In the following example, since 'x86' and 'x86_64' keys are not in the 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 ``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 on the node's ``boot_mode`` capability ('bios' or 'uefi'). However, aarch64
nodes will be deployed by 'grubaa64.efi', and ppc64 nodes by 'bootppc64':: nodes will be deployed by 'grubaa64.efi', and ppc64 nodes by 'bootppc64'::
[pxe] [pxe]
# Bootfile DHCP parameter. (string value) # Bootfile DHCP parameter. (string value)
pxe_bootfile_name=pxelinux.0 pxe_bootfile_name=undionly.kpxe
# On ironic-conductor node, template file for PXE # On ironic-conductor node, template file for PXE
# configuration. (string value) # 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) # Bootfile DHCP parameter for UEFI boot mode. (string value)
uefi_pxe_bootfile_name=bootx64.efi 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 iPXE based deployment, and defaults to the same behavior as the comperable
``[pxe]pxe_bootfile_by_arch`` setting for standard PXE. ``[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 PXE timeouts tuning
------------------- -------------------

View File

@ -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: These pre-requisites must be met before the deployment process:
* Dependent packages to be configured on the Bare Metal service node(s) * Dependent packages to be configured on the Bare Metal service node(s)
where ironic-conductor is running like tftp-server, ipmi, syslinux etc for where ironic-conductor is running like tftp-server, ipmi, grub/ipxe, etc
bare metal provisioning. for bare metal provisioning.
* Nova must be configured to make use of the bare metal service endpoint * 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 and compute driver should be configured to use ironic driver on the Nova
compute node(s). compute node(s).

View File

@ -0,0 +1,26 @@
---
deprecations:
- |
Support for the `syslinux <https://wiki.syslinux.org/wiki/index.php?title=Syslinux_6_Changelog#Changes_in_6.04>`_
and the often separately package `isolinux <https://wiki.syslinux.org/wiki/index.php?title=ISOLINUX>`_
and `pxelinux <https://wiki.syslinux.org/wiki/index.php?title=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 <https://repo.or.cz/syslinux.git/shortlog>`_.
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 <https://wiki.syslinux.org/wiki/index.php?title=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 <https://wiki.syslinux.org/wiki/index.php?title=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.