OneShell

I fight for a brighter tomorrow

0%

如何搭建一个可正常使用的mipsel虚拟机

如何手动搭建 qemu mipsel 环境

之前搭建 qemu 系统级别的虚拟机的时候,一般都是下载已经编译好的特定架构的系统镜像,这些镜像有个缺点就是没有办法使用类似于 apt 的方式安装软件,每次要安装一些额外的软件都比较复杂,于是就想能不能手动安装一个具有正常功能的虚拟机。
此处安装的是 mipsel 环境的 Debian 虚拟机,其他架构也是类似的安装方法。

必要软件

在 Host 机上安装 qemu-system-mipsel

1
sudo apt-get install qemu-system-mipsel qemu-utils

下载相关文件

从稳定版本下载安装程序和引导文件。
下载安装程序 initrd.gz,23MB

1
wget https://ftp.debian.org/debian/dists/stable/main/installer-mipsel/current/images/malta/netboot/initrd.gz

下载内核引导 vmlinuz-5.10.0-18-4kc-malta,4.2MB,如果wget的时候报错404,可以尝试通过浏览器看看链接目录是否更新了

1
wget http://ftp.debian.org/debian/dists/stable/main/installer-mipsel/current/images/malta/netboot/vmlinuz-5.10.0-18-4kc-malta

创建 QEMU 镜像文件

创建一个 QEMU 镜像文件,可以指定镜像存储大小以及文件类型。Debian 官方文档中有最低硬件要求,对于不带桌面的系统,2G 存储空间就足够了,也可以创建更大存储空间的镜像。
如下就是创建一个具有 8G 存储空间的 qcow2 格式镜像

1
qemu-img create -f qcow2 hda.img 8g

安装 Debian MIPSEL

安装前确保在当前工作目录中,3 个文件(had.img、vmlinuz-5.10.0-9-4kc-malta、initrd.gz)都存在。安装的过程,也是命令行形式的安装界面,基本上和在普通 PC 机上安装 Linux 的过程一致。

1
2
3
4
5
6
qemu-system-mipsel -M malta \
-m 256 -hda hda.img \
-kernel vmlinuz-5.10.0-18-4kc-malta \
-initrd initrd.gz \
-append "console=ttyS0 nokaslr" \
-nographic

在默认情况下,QEMU 会启动 NAT 网络接口通过 Host 网络进行网络连接,这样虚拟机就可以安装和更新软件包。但是使用NAT存在一个问题就是,宿主机无法连接到QEMU虚拟机内部,可以理解为此时的QEMU和宿主机是一个整体。如果要连接到QEMU虚拟机中可以使用桥接或者NAT下端口映射的方式来解决。
进入系统安装
undifined
到选择镜像源的时候,可以选择China的镜像源,这样下载依赖会快一点。
undifined
后面还需要安装bootloader
undifined
到了下面的这个步骤,点击 Go Back -> Go Down -> Execute Shell,然后输入 poweroff 命令关闭虚拟机。如果点击 Continue,系统会重启,然后重新开始安装流程,类似于设置了 U 盘启动安装 Linux 系统,安装完毕后没有拔掉 U 盘,那么就会继续从 U 盘中的安装系统程序重新开始运行。
undifined

安装 bootloader

在安装过程中也会有提示说,no bootloader has been installed. 那么需要从 initrd.img 文件中获取 boot 分区,然后手动挂载出来。

  1. 挂载 boot 分区
    1
    2
    3
    sudo modprobe nbd mac_part=63
    sudo qemu-nbd -c /dev/nbd0 hda.img
    sudo mount /dev/nbd0p1 /mnt
  2. 复制挂载的文件到当前文件夹
    1
    2
    cp -r /mnt/boot/initrd.img-5.10.0-18-4kc-malta .
    cp -r /mnt/boot .
  3. 取消镜像挂载
    1
    2
    sudo umount /mnt
    sudo qemu-nbd -d /dev/nbd0
    通过上面的操作之后,当前文件夹目录及文件如下:
    undifined

启动 QEMU 虚拟机

当上面的步骤完成后,一个可以正常启动的 QEMU Linux 系统就完成了,而且网络默认是使用的NAT,可以连通外网,但是宿主机没有办法连接到QEMU虚拟机中,用来配置安装QEMU虚拟机的软件是足够了,启动命令如下:

1
2
3
4
5
6
sudo qemu-system-mipsel -M malta \
-m 1024 -hda hda.img \
-kernel vmlinuz-5.10.0-18-4kc-malta \
-initrd initrd.img-5.10.0-18-4kc-malta \
-append "root=/dev/sda1 console=ttyS0 nokaslr" \
-nographic

这样就可以在该架构上的虚拟机上做一些事了。
undifined

参考链接