This adds an AlmaLinux microvm image, in order to be able to run tests
on a RHEL-family distro. There are a couple of notable points of
divergence from the Alpine image:
- The microvm spec enables PCI, because RHEL/AlmaLinux only ships with
CONFIG_VIRTIO_MMIO on arm64, and thus the virtio devices won't show up
unless they go on PCI instead.
- There isn't an easily attainable standalone initramfs suited for
microvms; the only standalone one in general is for network booting
and is absolutely massive. Thus, the kernel + initramfs are instead
pulled from a microvm-focused UKI, which is much more minimalistic and
*mostly* covers what we need (except for a few extra virtio drivers
that get added a bit later on, pulled from the relevant RPMs).
- Since the initramfs already uses systemd, and the rootfs ships it,
it's used to boot the remainder of the image, for consistency with the
expectations of a typical AL10 setup.
- doas is installed w/ the sudo shim. Alpine doesn't really *need* this
because apk is marked as setuid, but AL10's default rootfs still ships
Python-powered dnf4, and you can't setuid scripts with a hashbang.
(This is a bit more useful than just having the package manager be
setuid, anyway.)
Additionally, I went and added comments for some bits of the setup (in
particular the kernel parameters) that weren't immediately clear to me
when I was reading through the alpine image definition.
For the tests, most of them were copied from Alpine, but the nix test is
instead reworked to be generic (since nothing other than naming actually
depends on the distro), to avoid too much duplication. The crash log
tail size also needs to be bumped to fit in the larger surrounding logs.