QEMU搭建ARM64环境
已经配置好的环境:下载链接 (使用方法:先执行 net.sh 再运行 start.sh 即可)
参考文章:Building a Debian Bullseye QEMU image for AARCH64 | diozero
大概思路:先下载安装程序的基本文件,联网安装完之后从磁盘文件中提取出需要的 initrd.img 和 vmlinuz 文件。 QEMU 依赖提取的文件构建出 aarch64 环境。
准备阶段
创建磁盘文件并下载内核镜像、内存盘镜像文件
qemu-img create -f qcow2 debian-3607-aarch64.qcow2 20G |
执行 qemu 启动脚本前,先确创建出 tap0 接口并将其添加至网桥(名称可能会根据具体情况进行修改),因为接下来会通过网络来下载和安装完整的系统,必须要实现 qemu 的网络通信。依次执行下面的命令。
补充:这个 virbr0 是执行 sudo apt install libvirt-daemon-system libvirt-clients virt-manager 命令安装 libvirt 相关软件包得到的。
sudo ip tuntap add dev tap0 mode tap |
下面是 qemu 的启动脚本
!/bin/bash |
下载&&安装阶段
当执行启动脚本后,会看到这个界面,这说明正常进入了安装界面。选择 English 并敲击回车继续往下进行

选香港

键盘布局随便,我选了 Chinese

这里会自动尝试配置网络

如果忘记创建 tap0 接口或者没有成功将 tap0 接口添加到网桥,那么会出现自动配置网络失败的情况。

这里可以选择自行手动配置,但我建议最后先将 qemu 的网络通信后,让它自动获取。

遇见上面的情况就需要重新检查网络接口以及网桥的状态,如果是下面的情况则说明一切正常。

默认为空继续

选香港

默认为空继续

设置代理,默认为空即可

设置 root 用户的密码

重复刚才的密码

创建新的用户

和上面的一样即可

输入新建用户的密码

重复密码

下面四个步骤全部默认即可




这里选择 Yes (默认是 No )

然后会安装大概一两个小时。弹出来这个,选择 Yes 。

什么都不用主动勾选(默认会有 SSH),按 Tab 切换到 Continue 就行

继续

这里安装已经完成了,点击 Continue

再次看到这个最初的界面,就是已经安装完了(不需要再继续安装了),直接给这个窗口关了就行

从镜像提取文件
现在要从 qcow2 镜像中提取出来 Linux 内核和 initrd ,将磁盘文件挂载出来,然后把 vmlinuz-5.10.0-29-arm64 以及 initrd.img-5.10.0-29-arm64 拷贝出来
sudo modprobe nbd |

运行并实现网络通信
现在所有的文件都有了,接下来就是启动 qemu ,在此之前先创建出 tap0 接口并将其添加到 virbr0 网桥。
!/bin/bash |
运行下面的启动脚本
!/bin/bash |
一切正常,此时让输入用户名和密码(安装时设置的)

进来应该是这样,此时的网卡还没有分出来 ip

给 enp0s1 网卡分一个 ip (取决于网桥 virbr0 在宿主机的哪个网段),再设置一下网关,最后启用该网卡。
ip add add 192.168.122.130/24 dev enp0s1 |

配置好 ip 和网关后,此时可以 ping 通宿主机且可以访问互联网。

至此 QEMU 模拟 ARM64 架构系统完成。

补充
配置好的环境中有两个用户,分别是 zikh 和 root (如果用 ssh 登录必须要使用 zikh 用户),密码均为 root。