ironic/doc/source/install/include/kernel-boot-parameters.inc
Julia Kreger f2605e9281 Remove use of nomodeset by default
The troubleshooting kernel command line option nomodeset
unfortunately changes the way framebuffer interactions work
with graphics devices which in some cases can result in kernel
memory to be used for graphics updates. When this happens on
some specific hardware common in rack mount servers with baseboard
management controllers, this can cause the memory bus to become
locked for a brief time while the graphics update is occuring.

This locked memory bus means disk IO can become blocked,
and network cards can overflow their buffers resulting in
packet loss on top of the latency incurred by the graphics
update executing.

As such, we've removed the nomodeset option from default usage and
added a note describing its removal to the documentation along
with a release note.

Change-Id: I9084d88c3ec6f13bd64b8707892758fa87dd7f86
2023-04-26 07:34:29 -07:00

112 lines
3.9 KiB
PHP

.. _kernel-boot-parameters:
Appending kernel parameters to boot instances
---------------------------------------------
The Bare Metal service supports passing custom kernel parameters to boot instances to fit
users' requirements. The way to append the kernel parameters is depending on how to boot instances.
Network boot
~~~~~~~~~~~~
Currently, the Bare Metal service supports assigning unified kernel parameters to PXE
booted instances by:
* Modifying the ``[pxe]/kernel_append_params`` configuration option, for
example:
.. code-block:: ini
[pxe]
kernel_append_params = quiet splash
.. note::
The option was called ``pxe_append_params`` before the Xena cycle.
* Copying a template from shipped templates to another place, for example::
https://opendev.org/openstack/ironic/src/branch/master/ironic/drivers/modules/pxe_config.template
Making the modifications and pointing to the custom template via the configuration
options: ``[pxe]/pxe_config_template`` and ``[pxe]/uefi_pxe_config_template``.
Local boot
~~~~~~~~~~
For local boot instances, users can make use of configuration drive
(see :ref:`configdrive`) to pass a custom
script to append kernel parameters when creating an instance. This is more
flexible and can vary per instance.
Here is an example for grub2 with ubuntu, users can customize it
to fit their use case:
.. code:: python
#!/usr/bin/env python
import os
# Default grub2 config file in Ubuntu
grub_file = '/etc/default/grub'
# Add parameters here to pass to instance.
kernel_parameters = ['quiet', 'splash']
grub_cmd = 'GRUB_CMDLINE_LINUX'
old_grub_file = grub_file+'~'
os.rename(grub_file, old_grub_file)
cmdline_existed = False
with open(grub_file, 'w') as writer, \
open(old_grub_file, 'r') as reader:
for line in reader:
key = line.split('=')[0]
if key == grub_cmd:
#If there is already some value:
if line.strip()[-1] == '"':
line = line.strip()[:-1] + ' ' + ' '.join(kernel_parameters) + '"'
cmdline_existed = True
writer.write(line)
if not cmdline_existed:
line = grub_cmd + '=' + '"' + ' '.join(kernel_parameters) + '"'
writer.write(line)
os.remove(old_grub_file)
os.system('update-grub')
os.system('reboot')
Console
~~~~~~~
In order to change default console configuration in the Bare Metal
service configuration file (``[pxe]`` section in ``/etc/ironic/ironic.conf``),
include the serial port terminal and serial speed. Serial speed must be
the same as the serial configuration in the BIOS settings, so that the
operating system boot process can be seen in the serial console or web console.
Following examples represent possible parameters for serial and web console
respectively.
* Node serial console. The console parameter ``console=ttyS0,115200n8``
uses ``ttyS0`` for console output at ``115200bps, 8bit, non-parity``, e.g.::
[pxe]
# Additional append parameters for baremetal PXE boot.
kernel_append_params = nofb vga=normal console=ttyS0,115200n8
* For node web console configuration is similar with the addition of ``ttyX``
parameter, see example::
[pxe]
# Additional append parameters for baremetal PXE boot.
kernel_append_params = nofb vga=normal console=tty0 console=ttyS0,115200n8
For detailed information on how to add consoles see the reference documents
`kernel params`_ and `serial console`_.
In case of local boot the Bare Metal service is not able to control kernel boot
parameters. To configure console locally, follow 'Local boot' section above.
.. _`kernel params`: https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
.. _`serial console`: https://www.kernel.org/doc/html/latest/admin-guide/serial-console.html