qemu搭建ARM64环境
前言
懒得自己配的话可以直接下载, 配一下也需要好几个小时,怪麻烦的
通过网盘分享的文件:qemu_ARM64.rar
链接: https://pan.baidu.com/s/1ypZnTVZUwUZQQK0Tnc9bew?pwd=xidp 提取码: xidp
所需前置准备
创建磁盘文件并下载内核镜像、内存盘镜像文件
1 | qemu-img create -f qcow2 debian-3607-aarch64.qcow2 32G |
上述命令执行完毕之后可以得到下面这几个文件
1 | debian-3607-aarch64.qcow2 initrd.gz linux mini.iso |
执行 qemu
启动脚本前,先确创建出 tap0
接口并将其添加至网桥(名称可能会根据具体情况进行修改),因为接下来我们需要 qemu虚拟机
通过网络来下载和安装完整的系统,必须实现 qemu
的网络通信。
依次执行下面的命令来配置 Linux主机
网络以此来实现 qemu虚拟机的
网络
1 |
|
使用命令 ifconfig
来确保 tap0
已经添加
准备完毕后执行下面qemu命令来启动虚拟机
1 | #!/bin/bash |
下载和安装
出现下面界面就是正常进入安装了
开头选择语言默认English, 回车即可
这里选择地点选择 香港
回车即可
选择键盘布局为中国
然后就会自动配置网络
如果忘记创建 tap0
接口或者没有成功将 tap0
接口添加到网桥,那么会出现自动配置网络失败的情况。
设置主机名
设置域名,默认为空即可
选择一个镜像地址, 选香港就好
这个选 deb.debian.org
(默认就是这个)
这里设置代理, 默认为空即可
然后就会开始下载, 这里大概需要30分钟左右下载
这里下载好了之后就是设置 root密码
和 用户名
还有 用户密码
(等太久了在刷抖音, 忘记截图了, 顺手就给回车敲了o(╥﹏╥)o
)
设置好用户名和密码之后(下面忘记截图了, 这里用zikh26师傅的截图来展示)
注意这里要选择 yes
, 不要无脑回车, 因为他默认是 no
上面设置好了之后就会进入下载
在下载过程中也会出现选择
下图选择 yes
下图先按下 tab
会切换到 continue
然后再回车
默认回车
直到回到这里, 重新看到这个界面算是已经全部下载结束了, 这个窗口已经没有用了, 可以直接关掉(好像用 ctrl+c 和 ctrl+d 都退出不了,直接关掉就好了)
从镜像中提取文件
现在要从 qcow2
镜像中提取出来 Linux
内核和 initrd
,将磁盘文件挂载出来,然后把 vmlinuz-5.10.0-29-arm64
以及 initrd.img-5.10.0-29-arm64
拷贝出来
1 | sudo modprobe nbd |
可能会遇到下面问题
1 | qemu-system-aarch64: -drive if=virtio,file=debian-3607-aarch64.qcow2,format=qcow2,id=hd: Failed to get "write" lock Is another process using the image [debian-3607-aarch64.qcow2]? |
我的解决方案是确保东西保存了之后(可以打一下快照)重启一下虚拟机
我重启一下就好了,指令都可以正常执行
最终得到如下
1 | debian-3607-aarch64.qcow2 initrd.gz initrd.img-5.10.0-35-arm64 linux mini.iso net.sh start.sh vmlinuz-5.10.0-35-arm64 |
现在所有的文件都有了,接下来就是启动 qemu
,在此之前先创建出 tap0
接口并将其添加到 virbr0
网桥。
1 | # net.sh |
运行下面的启动脚本
1 |
|
同样启动qemu虚拟机也会有上面那个问题, 我的解决方法也是重启
然后就可以启动, 启动之后第一件事情就是配置IP, qemu虚拟机
和 Linux主机
互相ping一下看看能不能通
1 | ip add add 192.168.122.130/24 dev enp0s1 |
设置好之后可以互相ping通
参考:
QEMU搭建ARM64环境 | ZIKH26’s Blog
Building a Debian Bullseye QEMU image for AARCH64 | diozero
QEMU 模拟的 ARM-64 上的 Debianaarch64 - 生命、宇宙和钓鱼