[Libguestfs] [PATCH virt-v2v 2/3] test-data/phony-guests: Allow virt-v2v to work against phony Fedora

Richard W.M. Jones rjones at redhat.com
Thu Jun 9 08:08:57 UTC 2022


On Wed, Jun 08, 2022 at 05:49:01PM +0100, Richard W.M. Jones wrote:
> +# Virt-v2v also needs a kernel, initrd and modules path.
> +$g->touch ("/boot/vmlinuz-$kver");
> +$g->touch ("/boot/initramfs-$kver.img");
> +$g->mkdir_p ("/lib/modules/$kver/kernel/drivers/block");
> +$g->upload ($ENV{SRCDIR}.'/../binaries/bin-x86_64-dynamic',
> +            "/lib/modules/$kver/kernel/drivers/block/virtio_blk.ko");

Surprisingly this works even on !x86-64.  I just tested it on aarch64.

Here:

https://github.com/libguestfs/virt-v2v/blob/0d1b2ec1b733db1ca0bebf2e4a9e8d5fd7db7f93/convert/linux_kernels.ml#L192

we use guestfs_file_architecture on a kernel module to determine the
architecture of the kernel.  Because we uploaded an x86-64 binary this
means we detect the kernel as being x86_64:

installed kernel packages in this guest:
* kernel 5.19.0-0.rc1.14.fc37.x86_64 (x86_64) <------- ki_arch
        /boot/vmlinuz-5.19.0-0.rc1.14.fc37.x86_64
        /boot/initramfs-5.19.0-0.rc1.14.fc37.x86_64.img
        no config
        /lib/modules/5.19.0-0.rc1.14.fc37.x86_64
        1 modules found
        virtio: blk=true net=false rng=false balloon=false
        pvpanic=false vsock=false xen=false debug=false

Then we run dracut, which would fail on a real guest if the host is
aarch64, but succeeds here because the phony dracut binary is aarch64:

libguestfs: trace: v2v: command "/sbin/dracut --verbose --add-drivers virtio_blk /boot/initramfs-5.19.0-0.rc1.14.fc37.x86_64.img 5.19.0-0.rc1.14.fc37.x86_64"

Later:

gcaps_block_bus = virtio-blk
gcaps_net_bus = e1000
gcaps_virtio_rng = false
gcaps_virtio_balloon = false
gcaps_isa_pvpanic = false
gcaps_virtio_socket = false
gcaps_machine = i440fx
gcaps_arch = x86_64  <---------
gcaps_acpi = true
gcaps_virtio_1_0 = false
gcaps_default_cpu = true

Anyway this is kind of a bug in virt-v2v (because it should reject
conversion of a !hostarch guest), and also in this test, but this is a
fairly obscure corner case so I guess I'll leave it for now.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org


More information about the Libguestfs mailing list