跨平台模拟实战:在x86架构下通过Qemu-7.2运行LoongArch版ArchLinux

张开发
2026/4/19 4:52:16 15 分钟阅读

分享文章

跨平台模拟实战:在x86架构下通过Qemu-7.2运行LoongArch版ArchLinux
1. 为什么要在x86上模拟LoongArch你可能已经注意到最近几年国产CPU架构LoongArch龙架构越来越受关注。作为完全自主设计的指令集它正在从政府办公走向更广泛的应用场景。但作为开发者手头可能没有龙芯物理设备这时候Qemu模拟器就成了最佳选择。我在去年参与一个跨平台适配项目时就遇到过这样的需求需要在x86开发机上验证LoongArch架构的软件兼容性。当时尝试了多种方案最终发现Qemu 7.2ArchLinux的组合最稳定。这个方案有三大优势零成本体验无需购置龙芯物理设备普通PC即可运行完整系统环境ArchLinux提供了完善的包管理系统比单纯模拟器更实用开发调试友好可以快速验证二进制兼容性和性能表现2. 环境准备与Qemu编译2.1 基础环境配置我推荐使用Ubuntu 22.04作为宿主系统这是经过实测最稳定的组合。首先更新软件源sudo apt update sudo apt upgrade -y接下来安装编译工具链。这里有个小技巧如果只是运行LoongArch程序可以只安装clang但需要开发调试的话建议安装完整工具链sudo apt install clang git ninja-build pkg-config2.2 依赖库全家桶Qemu的依赖项确实不少我整理了一个完整的安装清单。这些库大致分为几类核心依赖glib2、pixman、zlib等基础库虚拟化支持libslirp网络、libaio异步IO可选功能SDL2图形界面、libcurl网络下载完整安装命令sudo apt install libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev \ libaio-dev libcapstone-dev libslirp-dev libcurl4-gnutls-dev \ libsdl2-dev libseccomp-dev libssh-dev libvte-2.91-dev2.3 编译Qemu 7.2下载源码后关键在configure参数。我建议添加--enable-slirp开启用户模式网络这对后续系统安装很重要wget https://download.qemu.org/qemu-7.2.0.tar.xz tar xf qemu-7.2.0.tar.xz cd qemu-7.2.0 mkdir build cd build ../configure --target-listloongarch64-linux-user,loongarch64-softmmu \ --enable-slirp \ --prefix/opt/qemu-7.2 make -j$(nproc) sudo make install编译完成后记得把Qemu加入PATHecho export PATH/opt/qemu-7.2/bin:$PATH ~/.bashrc source ~/.bashrc3. 获取LoongArch固件与系统镜像3.1 固件准备龙芯提供了专门的EFI固件这是启动虚拟机的关键。我测试过多个版本发现7.2版最稳定wget https://mirrors.wsyu.edu.cn/loongarch/archlinux/images/QEMU_EFI_7.2.fd3.2 系统镜像选择ArchLinux提供了两种镜像预装系统开箱即用的qcow2镜像安装镜像需要手动安装的ISO对于快速体验推荐使用预装镜像。注意要用zstd解压wget https://mirrors.wsyu.edu.cn/loongarch/archlinux/images/archlinux-xfce4-2022.12.03-loong64.qcow2.zst zstd -d archlinux-xfce4-2022.12.03-loong64.qcow2.zst4. 启动与配置虚拟机4.1 基础启动命令这个命令组合经过多次调试已经优化了显示、输入设备和网络qemu-system-loongarch64 \ -m 4G -smp 4 \ -cpu la464-loongarch-cpu \ -machine virt \ -bios QEMU_EFI_7.2.fd \ -device virtio-vga \ -device nec-usb-xhci,idxhci \ -device usb-tablet,busxhci.0,port1 \ -device usb-kbd,busxhci.0,port2 \ -net nic -net user \ -hda archlinux-xfce4-2022.12.03-loong64.qcow2几个关键参数说明-machine virt指定虚拟化类型-device virtio-vga使用性能更好的virtio显卡USB设备配置解决了鼠标漂移问题4.2 登录与初始配置系统默认凭证用户名loongarch密码loongarch首次登录后建议更新软件源sudo pacman -Syyu安装开发工具sudo pacman -S base-devel配置SSHsudo systemctl enable --now sshd5. 从ISO安装完整系统5.1 创建虚拟磁盘建议分配100GB空间qcow2格式支持动态分配qemu-img create -f qcow2 archlinux.img 100G5.2 启动安装程序关键是要指定从光盘启动-boot d和挂载ISOqemu-system-loongarch64 \ -m 4G -smp 4 \ -cpu la464-loongarch-cpu \ -machine virt \ -bios QEMU_EFI_7.2.fd \ -boot d -cdrom archlinux-2023.01.10.2-loong64.iso \ -hda archlinux.img安装过程中要注意分区时建议使用整个磁盘必须配置网络连接以下载软件包基础系统安装约需30分钟视网络情况6. 常见问题解决6.1 编译错误处理Ninja缺失sudo apt install ninja-buildGLib版本问题 需要至少glib-2.56Ubuntu 22.04默认满足要求网络后端报错 确保编译时启用slirp../configure --enable-slirp ...6.2 运行时问题图形界面卡顿 可以添加-display gtk参数使用GTK显示后端网络连接失败 检查宿主机防火墙设置或尝试-netdev user,idnet0 -device virtio-net-pci,netdevnet0USB设备不识别 确保已加载xhci控制器-device nec-usb-xhci,idxhci7. 进阶使用技巧7.1 性能优化通过KVM加速需CPU支持-enable-kvm -cpu host内存大页改善性能-object memory-backend-file,idmem,size4G,mem-path/dev/hugepages,shareon \ -numa node,memdevmem7.2 开发环境配置交叉编译工具链安装sudo pacman -S loongarch64-linux-gnu-gcc调试工具推荐gdb-multiarchstraceqemu-user-static7.3 镜像管理创建差分镜像节省空间qemu-img create -f qcow2 -b base.qcow2 diff.qcow2调整镜像大小qemu-img resize archlinux.img 20G我在实际使用中发现定期执行fstrim能有效减小镜像体积sudo fstrim -av

更多文章