使用qemu构建一个loongarch64虚拟机
使用qemu构建一个loongarch64虚拟机
zphj1987背景
国产化的平台目前主要用到的有飞腾和龙芯,飞腾的是arm64架构,这个使用的比较多,龙芯的架构之前是mips架构,最新的硬件的架构已经发生了改变,现在是loongarch64架构,这个算比较新的架构,所以硬件就比较难获得,如果又有适配的需求,这个时候通过虚拟机启动环境是一个比较好的方式
虚拟机有两种方式:
- 一种是在相同架构下开虚拟机,这个比较简单,一般的操作系统内都带了kvm的相关的软件,直接使用qemu-kvm启动虚拟机就可以了,这个方式的前提是你得有一台这个架构的物理机器,才能在上面启动kvm虚拟机,还存在资源共用的问题了
- 另外一种方式就是通过qemu完全软件来进行启动这个虚拟机,qemu是在软件内实现了硬件的模拟,一般硬件厂商会给这个做一些适配工作,然后就支持虚拟厂商的硬件了,这个对宿主机环境没有要求
上面的方式二在之前尝试过,可能当时厂商对qemu还没开发完整,所以整个软件链路我自己当时是没有跑起来的,最近因为软件适配的问题,再次尝试,能够启动成功了,本篇就是把这个过程记录下来
准备的资源
- 准备一个x86的主机,性能尽量好点,这样虚拟机也能快一点
- 准备一个操作系统,这个操作系统最好系统版本高一点,centos8或者8以上的stream都可以,因为新版本的qemu里面用到的库的版本比较高,所以操作系统尽量高一点,这个依赖就比较好找了
- qemu的软件,这个用最新版本的即可
- loongarch64的qemu的一些运行的二进制文件
- 一个支持loongarch64的操作系统,这个国产操作系统基本都做了适配,这个我直接下载的操作系统,没有走iso安装的步骤,这个后面再研究,如果不好安装,也可以在kvm下把系统安装好了以后,把系统文件弄出来给qemu使用即可,这里直接下载官方提供的,本次使用的是opencloudos的龙芯操作系统
操作系统
这里为了方便,主机的操作系统我选择的是opencloudos的x86系统
下载的是minimal的,后面根据需要安装包即可
配置方法
编译qemu
安装后面会用到的依赖包
1 | [root@lab101 ~]# dnf install wget gcc python3-sphinx python3-sphinx_rtd_theme ninja-build glib2-devel usbredir-devel libusbx-devel git bridge-utils net-tools |
有个libusbredirparser-0.5包冲突处理下
1 | [root@lab101 ~]# rpm -e libusbx --nodeps |
下载qemu源码包
1 | [root@lab101 ~]# wget https://download.qemu.org/qemu-9.0.2.tar.xz |
解压
1 | [root@lab101 ~]# tar -xvf qemu-9.0.2.tar.xz |
编译
1 | [root@lab101 ~]# cd qemu-9.0.2 |
完成后检查输出
1 | [root@lab101 qemu-9.0.2]# /root/qemu-9.0.2/build/qemu-system-loongarch64 -M ? |
可以看到支持模拟的是 Loongson-3A5000
配置网桥
宿主机配置一个网桥
1 | [root@lab101 ~]# cat br0.sh |
下载固件和镜像
1 | [root@lab101 ~]# mkdir /vm |
1 | [root@lab101 vm]# mkdir -p /root/qemu-9.0.2/build/qemu-bundle/etc/qemu/ |
添加
1 | allow br0 |
启动虚拟机
1 | /root/qemu-9.0.2/build/qemu-system-loongarch64 -M virt -m 12G -cpu la464 -smp 12 -bios /vm/QEMU_EFI.fd -drive file=/vm/OpenCloudOS-Stream-23-20240808-loongarch64-preview.qcow2 -net nic -net bridge,br=br0 --nographic |
修改root密码
通过用 rw init=/sysroot/bin/sh 参数替换内核中的 ro 语句以单用户模式启动
1 | linux ($root)/boot/vmlinuz-6.6.34-9.ocs23.loongarch64 root=UUID=69ed94f1-41\| |
改成
1 | linux ($root)/boot/vmlinuz-6.6.34-9.ocs23.loongarch64 root=UUID=69ed94f1-41\| |
改好了后按F10启动,这个如果知道root密码就不用改
1 | Generating "/run/initramfs/rdsosreport.txt" |
1 | :/root# /sysroot/sbin/chroot /sysroot/ |
改好后,重启退出,再启动
输入用户名密码登录即可
1 | [root@192 ~]# cat /proc/cpuinfo |grep "Model\|CPU Revision"|sort -u |
启动成功界面
可以看到,通过qemu,我们完成了虚拟机的模拟启动了
总结
本篇介绍了使用qemu来模拟一个龙芯的环境,并且安装了opencloudos的镜像,其它镜像也是类似的操作
评论
匿名评论隐私政策