Merge "Update doc for UEFI first"

This commit is contained in:
Zuul 2019-03-19 13:27:39 +00:00 committed by Gerrit Code Review
commit 5b4c929c96

View File

@ -1,11 +1,11 @@
Configuring PXE and iPXE Configuring PXE and iPXE
======================== ========================
PXE setup TFTP server setup
--------- -----------------
If you will be using PXE, it needs to be set up on the Bare Metal service In order to deploy instances via PXE, a TFTP server needs to be
node(s) where ``ironic-conductor`` is running. set up on the Bare Metal service nodes which run the ``ironic-conductor``.
#. Make sure the tftp root directory exist and can be written to by the #. Make sure the tftp root directory exist and can be written to by the
user the ``ironic-conductor`` is running as. For example:: user the ``ironic-conductor`` is running as. For example::
@ -13,27 +13,23 @@ node(s) where ``ironic-conductor`` is running.
sudo mkdir -p /tftpboot sudo mkdir -p /tftpboot
sudo chown -R ironic /tftpboot sudo chown -R ironic /tftpboot
#. Install tftp server and the syslinux package with the PXE boot images: #. Install tftp server:
Ubuntu (Up to and including 14.04):: Ubuntu::
sudo apt-get install xinetd tftpd-hpa syslinux-common syslinux sudo apt-get install xinetd tftpd-hpa
Ubuntu (14.10 and after)::
sudo apt-get install xinetd tftpd-hpa syslinux-common pxelinux
RHEL7/CentOS7:: RHEL7/CentOS7::
sudo yum install tftp-server syslinux-tftpboot xinetd sudo yum install tftp-server xinetd
Fedora:: Fedora::
sudo dnf install tftp-server syslinux-tftpboot xinetd sudo dnf install tftp-server xinetd
SUSE:: SUSE::
sudo zypper install tftp syslinux xinetd sudo zypper install tftp xinetd
#. Using xinetd to provide a tftp server setup to serve ``/tftpboot``. #. Using xinetd to provide a tftp server setup to serve ``/tftpboot``.
Create or edit ``/etc/xinetd.d/tftp`` as below:: Create or edit ``/etc/xinetd.d/tftp`` as below::
@ -63,55 +59,16 @@ node(s) where ``ironic-conductor`` is running.
sudo systemctl restart xinetd sudo systemctl restart xinetd
.. note:: .. note::
In certain environments the network's MTU may cause TFTP UDP packets to get In certain environments the network's MTU may cause TFTP UDP packets to get
fragmented. Certain PXE firmwares struggle to reconstruct the fragmented fragmented. Certain PXE firmwares struggle to reconstruct the fragmented
packets which can cause significant slow down or even prevent the server from packets which can cause significant slow down or even prevent the server
PXE booting. In order to avoid this, TFTPd provides an option to limit the from PXE booting. In order to avoid this, TFTPd provides an option to limit
packet size so that it they do not get fragmented. To set this additional the packet size so that it they do not get fragmented. To set this
option in the server_args above:: additional option in the server_args above::
--blocksize <MAX MTU minus 32> --blocksize <MAX MTU minus 32>
#. Copy the PXE image to ``/tftpboot``. The PXE image might be found at [1]_:
Ubuntu (Up to and including 14.04)::
sudo cp /usr/lib/syslinux/pxelinux.0 /tftpboot
Ubuntu (14.10 and after)::
sudo cp /usr/lib/PXELINUX/pxelinux.0 /tftpboot
RHEL7/CentOS7/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 (Up to and including 14.04)::
sudo cp /usr/lib/syslinux/chain.c32 /tftpboot
Ubuntu (14.10 and after)::
sudo cp /usr/lib/syslinux/modules/bios/chain.c32 /tftpboot
Fedora::
sudo cp /boot/extlinux/chain.c32 /tftpboot
RHEL7/CentOS7/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
#. Create a map file in the tftp boot directory (``/tftpboot``):: #. Create a map file in the tftp boot directory (``/tftpboot``)::
@ -120,22 +77,17 @@ node(s) where ``ironic-conductor`` is running.
echo 're ^(^/) /tftpboot/\1' >> /tftpboot/map-file echo 're ^(^/) /tftpboot/\1' >> /tftpboot/map-file
echo 're ^([^/]) /tftpboot/\1' >> /tftpboot/map-file echo 're ^([^/]) /tftpboot/\1' >> /tftpboot/map-file
.. [1] On **Fedora/RHEL** the ``syslinux-tftpboot`` package already install
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
UEFI PXE - Grub setup
---------------------
PXE UEFI setup In order to deploy instances with PXE on bare metal nodes which support
-------------- UEFI, perform these additional steps on the ironic conductor node to configure
the PXE UEFI environment.
If you want to deploy on a UEFI supported bare metal, perform these additional
steps on the ironic conductor node to configure the PXE UEFI environment.
#. Install Grub2 and shim packages: #. Install Grub2 and shim packages:
Ubuntu (14.04LTS and later):: Ubuntu (16.04LTS and later)::
sudo apt-get install grub-efi-amd64-signed shim-signed sudo apt-get install grub-efi-amd64-signed shim-signed
@ -153,7 +105,7 @@ steps on the ironic conductor node to configure the PXE UEFI environment.
#. Copy grub and shim boot loader images to ``/tftpboot`` directory: #. Copy grub and shim boot loader images to ``/tftpboot`` directory:
Ubuntu (14.04LTS and later):: Ubuntu (16.04LTS and later)::
sudo cp /usr/lib/shim/shim.efi.signed /tftpboot/bootx64.efi sudo cp /usr/lib/shim/shim.efi.signed /tftpboot/bootx64.efi
sudo cp /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed /tftpboot/grubx64.efi sudo cp /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed /tftpboot/grubx64.efi
@ -205,10 +157,8 @@ steps on the ironic conductor node to configure the PXE UEFI environment.
sudo chmod 644 $GRUB_DIR/grub.cfg sudo chmod 644 $GRUB_DIR/grub.cfg
#. Update the bare metal node with ``boot_mode`` capability in node's properties #. Update the bare metal node with ``boot_mode:uefi`` capability in
field:: node's properties field. See :ref:`boot_mode_support` for details.
openstack baremetal node set <node-uuid> --property capabilities='boot_mode:uefi'
#. Make sure that bare metal node is configured to boot in UEFI boot mode and #. Make sure that bare metal node is configured to boot in UEFI boot mode and
boot device is set to network/pxe. boot device is set to network/pxe.
@ -219,8 +169,73 @@ steps on the ironic conductor node to configure 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.
.. note::
For more information on configuring boot modes, see :ref:`boot_mode_support`. 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
RHEL7/CentOS7::
sudo yum install syslinux-tftpboot
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
RHEL7/CentOS7/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
RHEL7/CentOS7/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