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

nixos/qemu-vm: use persistent block device names #236656

Merged

Commits on Jun 16, 2023

  1. nixos/qemu-vm: use persistent block device names

    This change removes the bespoke logic around identifying block devices.
    Instead of trying to find the right device by iterating over
    `qemu.drives` and guessing the right partition number (e.g.
    /dev/vda{1,2}), devices are now identified by persistent names provided
    by udev in /dev/disk/by-*.
    
    Before this change, the root device was formatted on demand in the
    initrd. However, this makes it impossible to use filesystem identifiers
    to identify devices. Now, the formatting step is performed before the VM
    is started. Because some tests, however, rely on this behaviour, a
    utility function to replace this behaviour in added in
    /nixos/tests/common/auto-format-root-device.nix.
    
    Devices that contain neither a partition table nor a filesystem are
    identified by their hardware serial number which is injecetd via QEMU
    (and is thus persistent and predictable). PCI paths are not a reliably
    way to identify devices because their availability and numbering depends
    on the QEMU machine type.
    
    This change makes the module more robust against changes in QEMU and the
    kernel (non-persistent device naming) and by decoupling abstractions
    (i.e. rootDevice, bootPartition, and bootLoaderDevice) enables further
    improvement down the line.
    nikstur committed Jun 16, 2023
    Configuration menu
    Copy the full SHA
    0bdba6c View commit details
    Browse the repository at this point in the history