最近在MIPS上搞点事情,为了方便测试,就想着配一台MIPS虚拟机来用。由于QEMU对各种架构的虚拟化都支持的很好,所以当然选择用QEMU来运行虚拟机。另外,还需要一个具有官方MIPS支持的Linux发行版,我选择的是Debian的最新版ISO。安装过程倒也顺利,只是由于没有BIOS固件,在安装完成后需要一些特殊操作来辅助启动。
准备工具
首先准备工具,安装应该大部分Linux发行版都把QEMU进行了拆包,默认的x86系统安装的QEMU只能用来运行x86虚拟机,需要安装额外的架构支持包,在Archlinux下需要安装qemu-arch-extra包来解锁更多架构。
由于Debian对mips架构有着官方支持,也算是流行度很高的发行版,所以就选择了Debian。下载Debian的最新ISO,由于安装的时候可以直接配置源进行软件下载,所以建议下载最小ISO即可,带基础软件的ISO即使下回来了,配置本地源也很麻烦。
创建虚拟机
先创建虚拟磁盘,这里使用qemu最新科技qcow2格式。
然后将下载好的iso挂载起来,随便挂载到哪个目录都可以。
然后使用qemu-system-mips启动虚拟机。
-m: 分配给虚拟机的内存大小
-M: 虚拟的系统类型,可以执行 -M '?' 来查看
-kernel: 指定启动内核
-initrd: 指定initramfs映像
-append: 启动参数,这里是指定一个虚拟串口
-nographic: 无图形输出
-drive: 指定磁盘映像文件
安装虚拟系统
如果启动正常,就会看到内核的boot输出,最终进入到一个TUI的安装界面。
跟着安装流程一步步走就可以,需要注意的是一定要提前测试一下哪个源速度比较好,或者配置一下代理(在安装步骤中有个询问是否设置代理的,不过只支持HTTP代理)。因为之后我们也可以再安装软件,所以这里建议就不要选择任何的额外安装,尽快走完流程即可。
最后安装完成时会自动关机,不过在启动新系统之前还有些额外工作要做。在安装完成时会有个警告告诉你,启动的时候需要手动指定vmlinux内核文件和参数。因为我们没有BIOS固件,所以新系统启动依然需要手动指定一下,所以我们要把新生成的内核映像从新虚拟机系统里拷出来。
拷贝内核
可以使用qemu-nbd来挂载qcow2格式的虚拟磁盘映像,不过要先确认nbd驱动有没有加载到内核中。使用lsmod | grep nbd检查,如果没有输出,则使用modprobe nbd max_part=16来加载驱动。
使用qemu-nbd -c /dev/nbd0 debian-mips.img来挂载磁盘映像,然后就可以通过lsblk来显示出虚拟磁盘的分区了。
将根分区挂载起来,把内核映像文件(我这里是vmlinux-4.19.0-8-4kc-malta)拷贝出来即可。
然后使用umount卸载根分区,再使用qemu-nbd -d /dev/nbd0卸载磁盘映像。
正式启动
到些为止就完成了新虚拟机的所有配置工作。接下来就可以启动了。
也可以去掉-nographic参数,启动GUI界面:
一切正常,剩下的配置和操作都和正常的linux或qemu用法一致了。另外,我这里备份了安装完毕后的虚拟磁盘文件,以及内核和内存映像,需要免去安装直接运行的可以联系我获取。