背景
用C++写了一个串口通讯库,方便第三方调用。但是只有Windows,Linux(x86) 32bit, 64bit环境的,客户突然需要
aarch64 / ARM64 Linux环境下的库,没办法,网上找了一圈,然后实践,这里记录下。
环境
Windows10
qemu-w64-setup-20251224.exe
CentOS-7-aarch64-Minimal-2009.iso
xshell(可选)
安装QEMU
下载
安装
双击一路下一步,修改安装位置(这里不要选中文路径),然后安装即可。
下载虚拟机启动固件
下载 QEMU_EFI.fd
下载ARM64架构的centos7.9
下载 CentOS-7-aarch64-Minimal-2009.iso

安装centos系统
新建一个文件,将centos镜像,QEMU_EFI.fd文件放到这个目录,方便后续配置使用。
创建虚拟机磁盘空间
"D:\qemu\qemu-img.exe" create -f qcow2 "F:\qemuVM\Anolis.qcow2" 20G
- D:\qemu\qemu-img.exe:QEMU 安装路径,需要替换为自己的路径
- F:\qemuVM\Anolis.qcow2:虚拟机磁盘文件路径,可自定义文件名,必须为 .qcow2 后缀
- 20G:虚拟机磁盘空间大小,不建议太小

执行安装命令
QEMU安装目录输入cmd进入命令行,执行安装命令

xml
D:\qemu\qemu-system-aarch64.exe -m 2048 -cpu cortex-a72 -smp 2,sockets=1,cores=2 -M virt -bios F:\qemuVM\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=F:\qemuVM\Anolis.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=F:\qemuVM\CentOS-7-aarch64-Minimal-2009.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net user,hostfwd=tcp:127.0.0.1:2222-:22
这里注意:各个文件路径要对应。下面是参数说明,我改了下参数。

安装过程:
-
运行命令后打开虚拟机窗口
-
选择第一个选项等待安装,安装过程可能较长
(第三个选择是先检测安装光盘/ISO 是否有损坏,然后进入正常安装 )
-
安装完成后,选择英文,点击继续
下面是别人安装的截图,我的安装时没有截图,都差不多。





这里实际界面可能不一样,你需要设置安装目的地,下一步才是设置root密码。
如果都没警告了,就开始安装。


安装结束之后重启系统即可。
用ssh连接centos,做一些配置
我这里用的xshell工具。
使用 IP: 127.0.0.1 port: 2222 直接连接即可。账号密码为: root/你刚才设置的root密码

配置网络
首先,我在安装之后,虚拟机直接是有网络的。所以没有配置网络。直接配置DNS了。如果你安装后,没有网络,可以按照如下步骤操作。
1. 分配静态 IP (可选)
输入命令查看自己实际网卡名称,我这里的是 enp0s1
ip link

继续执行如下命令:
xml
ip addr add 10.0.2.15/24 dev enp0s1
ip link set enp0s1 up
ip route add default via 10.0.2.2
你也可以根据自己需求修改参数。
2.配置DNS
sudo vim /etc/resolv.conf
xml
nameserver 8.8.8.8
nameserver 8.8.4.4
按照上面配置完毕之后,ping www.baidu.com 有响应就是ok了
配置yum源
备份原文件
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
配置阿里云的源
xml
cat>/etc/yum.repos.d/CentOS-Aliyun.repo<<'EOF'
[base]
name=CentOS-7.9.2009-Base-Aliyun
baseurl=https://mirrors.aliyun.com/centos-vault/altarch/7.9.2009/os/aarch64/
enabled=1
gpgcheck=0
[updates]
name=CentOS-7.9.2009-Updates-Aliyun
baseurl=https://mirrors.aliyun.com/centos-vault/altarch/7.9.2009/updates/aarch64/
enabled=1
gpgcheck=0
[extras]
name=CentOS-7.9.2009-Extras-Aliyun
baseurl=https://mirrors.aliyun.com/centos-vault/altarch/7.9.2009/extras/aarch64/
enabled=1
gpgcheck=0
EOF
上面这个是一条命令。
生成新缓存
yum clean all && yum makecache
安装开发环境(可选)
yum groupinstall -y "Development Tools"
xml
# 单独验证GCC、G++是否安装成功
gcc --version
g++ --version
映射Windows串口到虚拟机
QEMU 没有类似 VMware 的 GUI 管理器,关闭窗口即虚拟机关机。
可用启动脚本快速启动虚拟机。
无串口映射启动
xml
@echo off
D:\qemu\qemu-system-aarch64.exe ^
-m 2048 ^
-cpu cortex-a72 ^
-smp 2,sockets=1,cores=2 ^
-M virt ^
-bios F:\qemuVM\QEMU_EFI.fd ^
-device VGA ^
-device nec-usb-xhci ^
-device usb-mouse ^
-device usb-kbd ^
-drive if=none,file=F:\qemuVM\Anolis.qcow2,id=hd0 ^
-device virtio-blk-device,drive=hd0 ^
-net nic ^
-net user,hostfwd=tcp:127.0.0.1:2222-:22
pause
有串口映射启动脚本
xml
@echo off
D:\qemu\qemu-system-aarch64.exe ^
-m 2048 ^
-cpu cortex-a72 ^
-smp 2,sockets=1,cores=2 ^
-M virt ^
-bios F:\qemuVM\QEMU_EFI.fd ^
-device VGA ^
-device nec-usb-xhci ^
-device usb-mouse ^
-device usb-kbd ^
-drive if=none,file=F:\qemuVM\Anolis.qcow2,id=hd0 ^
-device virtio-blk-device,drive=hd0 ^
-net nic ^
-net user,hostfwd=tcp:127.0.0.1:2222-:22 ^
-chardev serial,id=hostcom5,path=COM5 -serial chardev:hostcom5
pause
说明:这里记得修改串口,而且,在启动前,要确保串口可用,否则系统报错。

启动系统后,编译动态库,运行测试程序,可以和插入windows的物理设备串口通讯。
最后,必须感谢下下面这个作者,网上找了一堆,写的都什么玩意儿,最后找到这篇文章,写的简练,让我有了个开头。后面就是GPT了。
