Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure the machine-id operation is the last one #6

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

cjeanner
Copy link

We must ensure the modified image doesn't have any content in
/etc/machine-id file. This will then trigger the usual
systemd-machine-id-setup during the first boot of the image, ensuring
we'll get an as unique as possible ID.

This is mandatory, since the tools are generating a machine-id at
different stages, for instance in order to ensure packages are
installing without any issue[1]

Of course, if the operator wants to get an actual machine-id, they can
just disable the "machine-id" operation. Note that it's enabled by
default, so the issue is more about ordering than anything.

[1] For instance here: https://github.com/rwmjones/guestfs-tools/blob/3a498512f58bc431db490e96cdb712b19389bda4/customize/customize_run.ml#L170-L188

We must ensure the modified image doesn't have any content in
/etc/machine-id file. This will then trigger the usual
systemd-machine-id-setup during the first boot of the image, ensuring
we'll get an as unique as possible ID.

This is mandatory, since the tools are generating a machine-id at
different stages, for instance in order to ensure packages are
installing without any issue[1]

Of course, if the operator wants to get an actual machine-id, they can
just disable the "machine-id" operation. Note that it's enabled by
default, so the issue is more about ordering than anything.

[1] For instance here: https://github.com/rwmjones/guestfs-tools/blob/3a498512f58bc431db490e96cdb712b19389bda4/customize/customize_run.ml#L170-L188
@rwmjones
Copy link
Member

rwmjones commented Mar 25, 2022

Patch sort of looks reasonable, although running it after the --customize operations [edit: which have order 99] might be wrong since those operations might be needed to fix any earlier built-in operation. However I asked on the bug for a reproducer so I can understand the exact sequence of steps that is being done and what goes wrong, because without that I cannot really tell if the bug has been fixed or not.

rwmjones added a commit that referenced this pull request Feb 13, 2025
The same change as in this libguestfs commit:
libguestfs/libguestfs@b5fbc7e

Also update the common submodule to get:

  commit 8137d47d0e654065391151eb275e3b64f230f6f5
  Author: Richard W.M. Jones <[email protected]>
  Date:   Thu Feb 13 11:13:55 2025 +0000

    mlcustomize, mltools: Replace $TEST_FUNCTIONS

    TEST_FUNCTIONS is being removed from libguestfs and guestfs-tools (it
    was removed from virt-v2v a while back).  Make the same adjustment in
    the common submodule.

  commit a4d620ddef0feee290e72924c245d98952ad3b0c
  Merge: 2bb8c83 91d89a5
  Author: rwmjones <[email protected]>
  Date:   Wed Feb 12 21:59:29 2025 +0000

    Merge pull request #7 from crobinso/remove-remove

    mldrivers/linux.ml: delete `Remove`

  commit 91d89a574ee6aeeb7f61c58c9e223fdb29de8459
  Author: Cole Robinson <[email protected]>
  Date:   Wed Feb 12 16:44:09 2025 -0500

    mldrivers/linux.ml: delete `Remove`

    Last usages were removed in
    libguestfs/virt-v2v@b3268a1

    Signed-off-by: Cole Robinson <[email protected]>

  commit 2bb8c83c1ce5d10d35e5470464e4b9de5034673b
  Merge: 40bfeed 3831560
  Author: rwmjones <[email protected]>
  Date:   Sun Feb 9 17:33:27 2025 +0000

    Merge pull request #6 from rwmjones/RHEL-77989

    mldrivers/linux_bootloaders.ml: Don't overwrite EFI grub2 wrapper

  commit 38315604596ac747e44e38db79496610efee49f8
  Author: Richard W.M. Jones <[email protected]>
  Date:   Thu Feb 6 08:04:38 2025 +0000

    mldrivers/linux_bootloaders.ml: Don't overwrite EFI grub2 wrapper

    Fedora 34+ and RHEL 9.0+ unified BIOS and UEFI grub configuration into
    a single file.  This leaves /boot/efi/EFI/<OS>/grub.cfg as a so-called
    "wrapper" which just loads the real grub2 configuration at
    /boot/grub2/grub.cfg.

    Running '/sbin/grub2-mkconfig -o /boot/efi/EFI/<OS>/grub.cfg'
    overwrites the wrapper instead of the real configuration file.

    RHEL 9.5 added a hard error if you try to do this, which broke
    virt-v2v.  The error message was:

      commandrvf: /sbin/grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
      Running `grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg' will
      overwrite the GRUB wrapper.  Please run `grub2-mkconfig -o
      /boot/grub2/grub.cfg' instead to update grub.cfg.

    Try to detect this situation and substitute the real grub
    configuration file instead.

    Reported-by: Robert Knipp, Fabian Deutsch
    Thanks: Nijin Ashok, Marta Lewandowska
    Fixes: https://issues.redhat.com/browse/RHEL-77989
    Related: https://issues.redhat.com/browse/RHEL-32099
    Related: https://fedoraproject.org/wiki/Changes/UnifyGrubConfig

  commit 40bfeed7339b830ce5bd9526599acad36e73f74d
  Author: Richard W.M. Jones <[email protected]>
  Date:   Thu Feb 6 08:04:18 2025 +0000

    mldrivers/linux_bootloaders.ml: Fix comment style
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants