Files
warewulf/userdocs/contents/known-issues.rst
Jonathon Anderson 65078525eb Move information about image size limitations to known issues
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
2025-01-21 09:42:27 -07:00

99 lines
4.1 KiB
ReStructuredText

============
Known issues
============
SELinux and IPMI write not working when using two-stage boot
============================================================
The dracut implementation of two-stage boot in versions of Warewulf prior to v4.6.0 bypasses the
``wwinit`` process by default, invoking the image's init system directly. While cluster nodes will
often still boot mostly successfully this way, features implemented by wwinit will not complete. In
particular, SELinux relabeling and IPMI write are not executed.
To ensure that dracut runs the full ``wwinit`` process, pass ``init=/init`` or
``init=/warewulf/wwinit`` on the kernel command line.
.. code-block:: bash
# wwctl profile set default --kernelargs="init=/init"
Images are read-only
====================
Warewulf v4.5 uses the permissions on an image's ``rootfs/`` to determine a "read-only" state of
the image: if the root directory of the image is ``u-w``, it will be mounted read-only
during ``wwctl image <exec|shell``, preventing interactive changes to the image.
In the past, the root directory was ``u+w``, but Enterprise Linux 9.5 (including Red Hat, Rocky, _et
al._) includes an update to the ``filesystem`` package that marks the root directory ``u-w``. This
causes Warewulf images to be "read only" by default.
To mark a Warewulf image as writeable, use `chmod u+w`.
.. code-block:: bash
# chmod u+w $(wwctl image show rockylinux-9.5)
This behavior is changed in v4.6 to use an explicit ``readonly`` file stored outside of ``rootfs/``.
Image sockets cause build failures
==================================
If an image source directory includes persistent sockets, these sockets may cause the import operation to fail.
.. code-block:: console
Copying sources...
ERROR : could not import image: lchown ./rockylinux-8/run/user/0/gnupg/d.kg8ijih5tq41ixoeag4p1qup/S.gpg-agent: no such file or directory
To resolve this, remove the sockets from the source directory.
.. code-block:: bash
find ./rockylinux-8/ -type s -delete
This issue was fixed in an upstream library and `should be resolved in Warewulf
v4.6.0. <https://github.com/warewulf/warewulf/issues/892>`_
Image Size Considerations
=========================
Node images can grow quickly as packages and other files are added
to them. Even these larger images are often not an issue in modern
environments; but some architectural limits exist that can impede the
use of images larger than a few gigabytes. Workarounds exist for these
issues in most circumstances:
* Warewulf's :ref:`two-stage boot support <booting with dracut>` effectively
eliminates this problem by handling the bulk of the image management within
Linux. This feature is currently in preview, and is subject to change; but it
is likely to become the default boot method in a future release.
* Systems booting in legacy / BIOS mode, being a 32-bit environment,
cannot boot an image that requires more than 4GB to decompress. This
means that the compressed image and the decompressed image together
must be < 4GB. This is typically reported by the system as "No space
left on device (https://ipxe.org/34182006)."
The best work-around for this limitation is to switch to UEFI. UEFI
is 64-bit and should support booting significantly larger images,
though sometimes system-specific implementation details have led to
artificial limitations on image size.
* The Linux kernel itself can only decompress an image up to 4GB due
to the use of 32-bit integers in critical sections of the kernel
initrd decompression code.
The best work-around for this limitation is to use an iPXE with
support for `imgextract <https://ipxe.org/cmd/imgextract>`_. This
allows iPXE to decompress the image rather than the kernel.
* Some BIOS / firmware retain a "memory hole" feature for legacy
devices, e.g., reserving a 1MB block of memory at the 15MB-16MB
address range. this feature can interfere with booting stateless
node images.
If you are still getting "Not enough memory" or "No space left on
device" errors, try disabling any "memory hole" features or updating
your system BIOS or firmware.