龙芯3A处理器是MIPS64EL架构的,在实验课外做系统实验,虚拟机是不可缺少的。在网上找到了一些相关资料,在这里记录下来。
准备阶段
安装 QEMU
对于Windows系统,到 https://qemu.weilnetz.de/
下载适合你的电脑的安装包;在Ubuntu/Debian中,运行 sudo apt install qemu-system-mips64el -y
命令安装需要的程式。
下载 ISO 镜像
到 http://cdimage.debian.org/cdimage/release/current/mips64el/iso-cd
下载最新的镜像,如 curl -OL 'http://cdimage.debian.org/cdimage/release/current/mips64el/iso-cd/debian-10.1.0-mips64el-netinst.iso'
下载 initrd & vmlinux
下载 http://ftp.debian.org/debian/dists/stretch/main/installer-mips64el/current/images/malta/netboot
里的两个文件。
如 curl -OL 'http://ftp.debian.org/debian/dists/stretch/main/installer-mips64el/current/images/malta/netboot/initrd.gz'
curl -OL 'http://ftp.debian.org/debian/dists/stretch/main/installer-mips64el/current/images/malta/netboot/vmlinux-4.9.0-11-5kc-malta'
新建虚拟磁盘
qemu-img create -f qcow2 hda.qcow 10G
运行 Debian 安装程序
运行如下命令: (按照实际情况更改文件名及相关路径)
Linux:
qemu-system-mips64el -cdrom debian-10.1.0-mips64el-netinst.iso \
-hda hda.qcow \
-M malta \
-kernel vmlinux-4.9.0-11-5kc-malta \
-boot d \
-initrd initrd.gz \
-m 512 \
-cpu 5KEc \
-nographic \
-append "root=/dev/sda1 nokaslr"
Windows:
“C:\Program Files\qemu\qemu-system-mips64el.exe” -cdrom D:\debian-10.1.0-mips64el-xfce-CD-1.iso -hda hda.qcow -M malta -kernel D:\vmlinux-4.9.0-11-5kc-malta -boot d -initrd D:\initrd.gz -m 512 -cpu 5KEc -append “root=/dev/sda1 nokaslr”
注意:输入命令后立即在在弹出的QEMU窗口中选择 View -> serial0 。 按照程序的提示进行系统的安装,依机器性能,安装大概需要一个多小时。
提取 initrd(Linux下)
sudo modprobe nbd max_part=8
sudo qemu-nbd --connect=/dev/nbd0 hda.qcow
mkdir hda
sudo mount /dev/nbd0p1 hda
cp hda/boot/initrd.img-4.9.0-11-5kc-malta .
sudo umount hda
sudo qemu-nbd -d /dev/nbd0
找不到在Windows下直接挂载镜像读取ext4分区内文件的方法,还是在Linux下弄吧。
从 sda 启动虚拟机
qemu-system-mips64el -hda hda.qcow \
-M malta \
-kernel vmlinux-4.9.0-11-5kc-malta \
-initrd initrd.img-4.9.0-11-5kc-malta \
-m 512 \
-cpu 5KEc \
-nographic \
-append "root=/dev/sda1 nokaslr"
Windows: (not tested)
“C:\Program Files\qemu\qemu-system-mips64el.exe” -hda hda.qcow -M malta -kernel D:\vmlinux-4.9.0-11-5kc-malta -initrd D:\initrd.gz -m 512 -cpu 5KEc –serialstdio -append “root=/dev/sda1 nokaslr console=ttyAMA0,115200 console=tty highres=off console=ttyS0 ”