使用QEMU配置一台虚拟MIPS系统 - sbw Blog

使用QEMU配置一台虚拟MIPS系统

来源: sbw Blog | 浏览: 7174 | 评论: 4 发表时间: 2020-02-27

最近在MIPS上搞点事情,为了方便测试,就想着配一台MIPS虚拟机来用。由于QEMU对各种架构的虚拟化都支持的很好,所以当然选择用QEMU来运行虚拟机。另外,还需要一个具有官方MIPS支持的Linux发行版,我选择的是Debian的最新版ISO。安装过程倒也顺利,只是由于没有BIOS固件,在安装完成后需要一些特殊操作来辅助启动。



准备工具

首先准备工具,安装应该大部分Linux发行版都把QEMU进行了拆包,默认的x86系统安装的QEMU只能用来运行x86虚拟机,需要安装额外的架构支持包,在Archlinux下需要安装qemu-arch-extra包来解锁更多架构。


由于Debianmips架构有着官方支持,也算是流行度很高的发行版,所以就选择了Debian。下载Debian的最新ISO,由于安装的时候可以直接配置源进行软件下载,所以建议下载最小ISO即可,带基础软件的ISO即使下回来了,配置本地源也很麻烦。


创建虚拟机

先创建虚拟磁盘,这里使用qemu最新科技qcow2格式。

然后将下载好的iso挂载起来,随便挂载到哪个目录都可以。


然后使用qemu-system-mips启动虚拟机。


-m: 分配给虚拟机的内存大小

-M: 虚拟的系统类型,可以执行 -M '?' 来查看

-kernel: 指定启动内核

-initrd: 指定initramfs映像

-append: 启动参数,这里是指定一个虚拟串口

-nographic: 无图形输出

-drive: 指定磁盘映像文件

安装虚拟系统

如果启动正常,就会看到内核的boot输出,最终进入到一个TUI的安装界面。


qemu-boot-debian-mips-tui-install

跟着安装流程一步步走就可以,需要注意的是一定要提前测试一下哪个源速度比较好,或者配置一下代理(在安装步骤中有个询问是否设置代理的,不过只支持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卸载磁盘映像。


正式启动

到些为止就完成了新虚拟机的所有配置工作。接下来就可以启动了。


qemu-virtual-machine-debian-mips-login

也可以去掉-nographic参数,启动GUI界面:


qemu-virtual-machine-debian-mips-gui

一切正常,剩下的配置和操作都和正常的linuxqemu用法一致了。另外,我这里备份了安装完毕后的虚拟磁盘文件,以及内核和内存映像,需要免去安装直接运行的可以联系我获取




相关文章
  • 声明: 评论属于其发表者所有,不代表本站的观点和立场.
  • 求知者-01 回复该留言 时间: 2021-05-30

    qemu-system-mips -m 设置内存最大只能2G,这个在哪里可以修改吗? -m 设定了2G之后,到虚机内部看到只有256m,这是大概什么原因呢? -smp 4,sockets=1,cores=2设定了CPU之后,到虚机内部只能看到有一个核心,这是大概什么原因呢?

  • 路人甲 回复该留言 时间: 2022-04-14

    你好,我使用ubuntu 21.04 server版本的操作系统,安装MIPSEL时,不能弹出窗口怎么解决

已有 2 位网友发表了一针见血的评论,你还等什么?
  • 昵称: *
  • 邮箱:
  • 网址:
  • 记住我的信息
  • Color
  • Red
  • Blue
  • Code
  • bash
  • cpp
  • css
  • java
  • js
  • perl
  • php
  • python
  • ruby
  • sql
  • xml