Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-147437

[bootc] Installation in UEFI mode without separate /boot partition fails

Linking RHIVOS CVEs to...Migration: Automation ...Sync from "Extern...XMLWordPrintable

    • None
    • Moderate
    • rhel-anaconda
    • None
    • False
    • False
    • Hide

      None

      Show
      None
    • Yes
    • None
    • None
    • Automated
    • Known Issue
    • Hide
      When installing a bootc container image on a UEFI-based system, the installation will fail unless you define a separate /boot partition in your partitioning scheme. To avoid this error, ensure your Kickstart file or manual configuration includes both an EFI System partition and a distinct /boot partition in addition to the root (/) partition.
      Show
      When installing a bootc container image on a UEFI-based system, the installation will fail unless you define a separate /boot partition in your partitioning scheme. To avoid this error, ensure your Kickstart file or manual configuration includes both an EFI System partition and a distinct /boot partition in addition to the root (/) partition.
    • Proposed
    • Unspecified
    • Unspecified
    • Unspecified
    • None

      What were you trying to do that didn't work?

      Installation of a bootc container image in UEFI mode fails without a separate /boot partition. There are actually two issues I've noticed:

      1. Anaconda performs a cleanup of the target root filesystem and removes the /boot directory first, before unmounting the /boot/efi directory:

      DEBUG:anaconda.modules.payloads.payload.rpm_ostree.installation:Bootc workaround: prepare clean root partition for bootc install
      NFO:program:[libmkod] custom logging function 0x7fd3bf073300 registered
      NFO:program:[libmkod] context 0x55f38664cab0 released
      INFO:program:Running... rm -rf /mnt/sysimage/boot
      INFO:program:rm: cannot remove '/mnt/sysimage/boot/efi': Device or resource busy
      DEBUG:program:Return code: 1
      INFO:anaconda.core.threads:Thread Failed: AnaTaskThread-DeployBootcTask-1 (140144907474624)
      ERROR:anaconda.modules.common.task.task:Thread AnaTaskThread-DeployBootcTask-1 has failed: Traceback (most recent call last):
        File "/usr/lib64/python3.12/site-packages/pyanaconda/core/threads.py", line 281, in run
          threading.Thread.run(self)
        File "/usr/lib64/python3.12/threading.py", line 1012, in run
        File "/usr/lib64/python3.12/threading.py", line 1012, in run
          self._target(*self._args, **self._kwargs)
        File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/common/task/task.py", line 97, in _thread_run_callback
          self._task_run_callback()
        File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/common/task/task.py", line 110, in _task_run_callback
          self._set_result(self.run())
                           ^^^^^^^^^^
        File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py", line 843, in run
          self._clean_physroot()
        File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py", line 793, in _clean_physroot
          safe_exec_program("rm", ["-rf", path])
        File "/usr/lib64/python3.12/site-packages/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py", line 59, in safe_exec_program
          raise PayloadInstallationError(
      pyanaconda.modules.common.errors.installation.PayloadInstallationError: The command 'rm -rf /mnt/sysimage/boot' exited with the code 1:
      rm: cannot remove '/mnt/sysimage/boot/efi': Device or resource busy
      

      2. Patching installation.py to explicitly handle /boot/efi mount point/directory, and handle it as the first item, overcomes the first issue, but installation fails for a different reason:

      DEBUG:anaconda.modules.payloads.payload.rpm_ostree.installation:Executing bootc install command
      INFO:program:Running... bootc install to-filesystem --bootloader=grub --stateroot=default --source-imgref=registry:images.paas.redhat.com/bootc/rhel-bootc:latest-10.2 --target-imgref=registry:images.paas.redhat.com/bootc/rhel-bootc:latest-10.2 /mnt/sysimage
      registry:images.paas.redhat.com/bootc/rhel-bootc:latest-10.2 to /mnt/sysimage
      _bootcinstall_testlabel_t:s0 is not valid (left unmapped).
      DEBUG:anaconda.modules.payloads.payload.rpm_ostree.installation:bootc output: Installing image: docker://registry:images.paas.redhat.com/bootc/rhel-bootc:latest-10.2
      DEBUG:anaconda.modules.payloads.payload.rpm_ostree.installation:bootc output: error: Installing to filesystem: No /boot directory found in root; this is is currently required

      and the target root fs in /mnt/sysimage is empty indeed. It seems that an analogous fix to RHEL-66155 is needed even for bootc kickstart command.

      What is the impact of this issue to you?

      It's not possible to install a bootc container on a UEFI system if a separate /boot partition is not present, which may negatively affect some special scenarios (e. g. with significant storage constraints where separate /boot partition is not desirable).

      Please provide the package NVR for which the bug is seen:

      anaconda-40.22.3.43-1.el10

      How reproducible is this bug?:

      Always.

      Steps to reproduce

      1.  Prepare a kickstart file that will installa a bootc container image via bootc command, together with a custom partitioning consisting only of a / partition and reqpart.
      2.  Start installation using the prepared kickstart on a UEFI system.

      Expected results

      Installation is successful, installed system boots without issues.

      Actual results

      Installation gets stopped due to an error (it's not possible to remove the /boot/efi mount directory from the target root filesystem + there is no bind mount for /boot).

              anaconda-maint-list anaconda-maint-list
              rhn-support-jikortus Jiri Kortus
              anaconda-maint-list anaconda-maint-list
              Release Test Team Release Test Team
              Sagar Dubewar Sagar Dubewar
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: