简单实验了下在Oracle ARM实例上QEMU运行X86 Linux的可能性

简单实验了下在Oracle ARM实例上QEMU运行X86 Linux的可能性

· json · rss
Subscribe:

About

先说结论:可行,但是会非常缓慢,因为Oracle并没有开启虚拟化嵌套,也就是说qemu不能使用KVM加速。

接下来说明实验流程:

一、确保你的系统是Ubuntu22.04(因为我只实验了这个系统嘿嘿)

安装软件包:qemu-system-x86,libguestfs-tools

apt install libguestfs-tools qemu-system-x86


二、下载cloudinit镜像

wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img


三、配置root用户密码(因为从头安装效率太低,而且使用cloud-init貌似有bug,我们使用virt-customize配置镜像,这里123456就是密码,等待几分钟)

sudo virt-customize -a -v -x jammy-server-cloudimg-amd64.img --root-password password:123456


四、挂载镜像启动虚拟机

sudo qemu-system-x86_64 -smp 4 -m 8G -netdev user,id=net0,hostfwd=tcp::2222-:22 -device virtio-net-pci,netdev=net0 -vnc :1 -cpu EPYC-v3 -drive file=jammy-server-cloudimg-amd64.img,if=virtio,cache=none -cdrom seed.iso -boot a

参数解释

-smp4 为虚拟机启用4个核心(但实际上qemu使用软模拟只是用宿主机单个核心)

-vnc :1 在127.0.0.1:5901 上启用vnc

剩下的参数一看就懂了,我这里尝试了cloud-init配置,不过没用,如果你看着不顺眼看一删掉-cdrom


五、不过因为服务器没有GUI,可以借用CloudFlare的ZeroTrust隧道来显示VNC界面。

最后在Access->应用程序->自托管,创建一个应用


六、调试

可以看到效率确实很低,宿主机的三个核心只有单颗吃满,一核有难多核围观,因为没有kvm只有这个效率了。

如果顺利启动打开vnc界面就可以看到tty界面了。

测试了下,网络用NAT只有100M都不到的带宽,而且非常卡,基本不可用,每对硬盘读写一次就卡一下,单核直接吃满,目前也就图一乐(摊手