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
。