在arm64设备上使用qemu(kvm)运行aarch64 ubuntu虚拟机
最近咱换了k40外观增强版,这一代联发科芯片漏洞不是一般的多,不仅有mtkclient中众所周知的bootrom漏洞,老版本系统lk中的cpu地址还是错的,真是“红米配天玑,越用越懵逼”。不过lk的漏洞导致这手机在miui12.5下是能开kvm的,嗯,不折腾会死星人狂喜。
所以就有了这篇通用的在支持kvm的arm64设备上运行ubuntu虚拟机的文章,好了咱们开始:
首先创建一个img镜像并格式化为ext4:
1 | dd if=/dev/zero of=ubuntu.img bs=1G count=16 status=progress |
然后把它挂载:
1 | LOOP_FILE=$(losetup -f) |
然后咱还需要一个rootfs,去
lxc mirror
可以找到你需要的版本的rootfs.tar.xz
下载后将rootfs解压:
1 | tar -xvf rootfs.tar.xz -C ubuntu |
然后你需要把这个系统作为容器chroot进去,可以使用咱写的ruri:
1 | LD_PRELOAD= ruri ./ubuntu |
进去后,安装必要软件 systemd net-tools linux-firmware networkmanager dhcpcd linux-image-virtual xterm ,大概就这几个。
然后记得passwd设置好root密码
这时候你应该能在/boot下找到vmlinuz和initrd.img
把它们分别复制为镜像同目录下的linux和initrd文件
然后我们正式启动qemu:
1 | taskset -c 0-3 qemu-system-aarch64 \ |
参数注释版本(不可执行):
1 | #使用cpu的0-3核心,不使用taskset强制绑核会导致只有单核 |
这时候不出意外就能启动了,kvm的速度还是非常可以的,舒服的很。
启动后,终端大小是错的,可以执行resize命令重新设置大小,记得将它加入自启脚本:
1 | echo "resize > /dev/null" >> ~/.profile |
另外,默认终端不会显示彩色,需要手动将$TERM设置为xterm-256color
1 | echo "export TERM=xterm-256color" >> ~/.profile |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 沨鸾的小窝!