如何将 RISC-V QEMU 命令行调用转换为 virt-manager VM?

如何将 RISC-V QEMU 命令行调用转换为 virt-manager VM?

我已根据说明成功设置了 QEMU RISC-V VM这里

我最终的 CLI 调用是:

/usr/bin/qemu-system-riscv64 -machine virt -m 4G -smp cpus=2 -nographic \
    -bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.bin \
    -kernel /usr/lib/u-boot/qemu-riscv64_smode/u-boot.bin \
    -netdev user,id=net0 \
    -device virtio-net-device,netdev=net0 \
    -drive file=qemu_disk.bin,format=raw,if=virtio \
    -device virtio-rng-pci \
    -vga virtio \
    -no-reboot

现在我想获取现有的 qemu_disk.bin 映像,并通过 virt-manager 运行它。

为此,我尝试创建一个新的虚拟机,将架构指定为 riscv64

在此输入图像描述

(然后将 UI 更改为: 在此输入图像描述

然后我手动选择磁盘映像,如下所示: 在此输入图像描述

我表明它正在运行 Ubuntu 22.04 在此输入图像描述

最终,虚拟机创建完成后,无法启动。我怀疑这是因为缺少自定义 -bios 和 -kernel 参数。

我尝试使用 virsh 在 下添加一个<bios>/usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.bin</bios>标签<domain>,并<kernel>/usr/lib/u-boot/qemu-riscv64_smode/u-boot.bin</kernel>在 下添加一个标签<os>。然而它仍然没有启动。

将现有的工作 qemu 调用导入 virt-manager 的正确方法是什么?

答案1

我按照与您相同的步骤操作,然后在 virt-manager 中手动编辑引导选项的 XML。这是我的<domain><os>部分:

  <os>
    <type arch="riscv64" machine="virt">hvm</type>
    <loader type="rom">/var/lib/libvirt/images/qemu-riscv64_smode/opensbi.bin</loader>
    <kernel>/var/lib/libvirt/images/qemu-riscv64_smode/u-boot.bin</kernel>
    <boot dev="hd"/>
  </os>

您仍然需要调整 opensbi/u-boot 二进制文件的路径。

相关内容