news 2026/5/31 16:12:58

在麒麟V10 X86系统里,手把手教你编译QEMU 8.0.4并跑起ARM64虚拟机

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在麒麟V10 X86系统里,手把手教你编译QEMU 8.0.4并跑起ARM64虚拟机

在麒麟V10 X86系统中编译QEMU 8.0.4并运行ARM64虚拟机的完整指南

对于信创领域的开发者和适配工程师来说,在X86架构的国产操作系统上模拟ARM64环境是一项常见需求。本文将详细介绍如何在麒麟V10 X86系统中从零开始编译安装QEMU 8.0.4,并成功启动ARM64架构的虚拟机。

1. 环境准备

在开始之前,请确保您的麒麟V10 X86系统已经安装完毕并可以正常使用。建议系统版本为Kylin V10 SP2或更高版本,以获得更好的兼容性支持。

首先需要检查系统的基本信息:

cat /etc/os-release uname -a

系统应显示类似以下信息:

NAME="Kylin Linux Advanced Server" VERSION="V10 (SP2)" ID="kylin" ID_LIKE="fedora" VERSION_ID="V10"

1.1 安装基础开发工具

编译QEMU需要一系列开发工具和库文件的支持。执行以下命令安装必要组件:

sudo yum groupinstall "Development Tools" -y sudo yum install -y git wget flex bison zlib-devel glib2-devel \ pixman-devel libfdt-devel ninja-build python3

注意:如果您的系统使用的是dnf而非yum,请相应地将命令中的yum替换为dnf。

1.2 升级GCC编译器

QEMU 8.0.4需要较新版本的GCC编译器支持。麒麟V10默认安装的GCC版本可能较低,建议升级到7.4.0或更高版本:

sudo yum install -y centos-release-scl sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ scl enable devtoolset-9 bash

验证GCC版本:

gcc --version

2. 编译安装QEMU 8.0.4

2.1 获取QEMU源代码

从官方镜像站下载QEMU 8.0.4的源代码包:

wget https://download.qemu.org/qemu-8.0.4.tar.xz tar xvJf qemu-8.0.4.tar.xz cd qemu-8.0.4

2.2 配置编译选项

创建一个独立的构建目录并配置编译选项:

mkdir build cd build ../configure --target-list=aarch64-softmmu \ --enable-kvm --enable-virtfs \ --prefix=/usr/local/qemu-8.0.4

关键配置参数说明:

  • --target-list=aarch64-softmmu:指定编译ARM64架构模拟器
  • --enable-kvm:启用KVM加速支持
  • --prefix:指定安装路径

2.3 编译与安装

使用多线程编译以加快速度:

make -j$(nproc) sudo make install

编译完成后,将QEMU添加到系统路径:

echo 'export PATH=/usr/local/qemu-8.0.4/bin:$PATH' >> ~/.bashrc source ~/.bashrc

验证安装:

qemu-system-aarch64 --version

3. 准备ARM64虚拟机环境

3.1 获取必要的固件文件

运行ARM64虚拟机需要一些额外的固件支持:

wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/vmlinuz-4.15.0-rc6

3.2 创建虚拟磁盘

使用qemu-img工具创建虚拟磁盘文件:

qemu-img create -f qcow2 kylin_arm64.qcow2 120G

提示:qcow2格式支持动态分配空间,实际占用的磁盘空间会随着使用量增加而增长。

3.3 配置网络

设置TAP网络接口以实现虚拟机网络连接:

sudo ip tuntap add tap0 mode tap sudo ip link set tap0 up sudo ip addr add 192.168.100.1/24 dev tap0 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo sysctl -w net.ipv4.ip_forward=1

4. 安装ARM64版麒麟系统

4.1 启动安装程序

假设您已经获取了Kylin-Server-V10-SP2-ARM64.iso安装镜像,使用以下命令启动安装:

qemu-system-aarch64 \ -m 4096 \ -cpu cortex-a72 \ -smp 4 \ -M virt \ -bios QEMU_EFI.fd \ -device virtio-gpu-pci \ -display gtk,gl=on \ -drive file=kylin_arm64.qcow2,if=virtio \ -cdrom Kylin-Server-V10-SP2-ARM64.iso \ -netdev tap,id=net0,ifname=tap0,script=no,downscript=no \ -device virtio-net-device,netdev=net0 \ -boot menu=on

关键参数说明:

  • -m 4096:分配4GB内存
  • -smp 4:使用4个CPU核心
  • -display gtk,gl=on:启用GTK显示界面和OpenGL加速

4.2 完成系统安装

安装程序启动后,按照图形界面提示完成系统安装。安装过程与物理机安装基本相同,主要包括:

  1. 选择安装语言和时区
  2. 磁盘分区(建议使用自动分区)
  3. 设置root密码和创建用户
  4. 选择需要安装的软件包

注意:安装过程中可能会提示没有网络连接,这是因为我们使用了TAP网络。安装完成后可以手动配置网络。

5. 运行ARM64虚拟机

安装完成后,可以使用以下命令启动虚拟机:

qemu-system-aarch64 \ -m 4096 \ -cpu cortex-a72 \ -smp 4 \ -M virt \ -bios QEMU_EFI.fd \ -device virtio-gpu-pci \ -display gtk,gl=on \ -drive file=kylin_arm64.qcow2,if=virtio \ -netdev tap,id=net0,ifname=tap0,script=no,downscript=no \ -device virtio-net-device,netdev=net0

5.1 性能优化建议

为了提高虚拟机运行效率,可以考虑以下优化措施:

  1. 启用KVM加速(如果宿主机支持):

    -enable-kvm
  2. 使用virtio设备

    -device virtio-blk-device,drive=hd0 \ -device virtio-net-device,netdev=net0
  3. 调整CPU模型

    -cpu host
  4. 增加缓存选项

    -drive file=kylin_arm64.qcow2,if=virtio,cache=writeback

5.2 常见问题解决

问题1:启动时卡在EFI Shell

解决方法:在EFI Shell中手动启动:

fs0: cd EFI/BOOT BOOTAA64.EFI

问题2:网络无法连接

检查步骤:

  1. 确认宿主机tap0接口已正确配置
  2. 检查虚拟机内网络配置
  3. 验证路由和防火墙规则

问题3:图形界面卡顿

尝试以下改进:

  1. 增加显存分配:
    -vga virtio -global virtio-gpu.blob=true -global virtio-gpu.max_hostmem=4096
  2. 使用SDL显示后端替代GTK:
    -display sdl

6. 高级配置与应用

6.1 使用SPICE协议远程连接

对于服务器环境,可以使用SPICE协议进行远程连接:

qemu-system-aarch64 \ -m 4096 \ -cpu cortex-a72 \ -smp 4 \ -M virt \ -bios QEMU_EFI.fd \ -device virtio-gpu-pci \ -vga none \ -spice port=5900,addr=127.0.0.1,disable-ticketing \ -drive file=kylin_arm64.qcow2,if=virtio \ -netdev tap,id=net0,ifname=tap0,script=no,downscript=no \ -device virtio-net-device,netdev=net0

然后使用virt-viewer或remote-viewer连接:

remote-viewer spice://127.0.0.1:5900

6.2 配置共享文件夹

实现宿主机与虚拟机之间的文件共享:

  1. 启动QEMU时添加virtio-fs设备:

    -object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on \ -device virtio-fs-pci,queue-size=1024,memdev=mem,tag=myfs
  2. 在虚拟机中挂载共享目录:

    mount -t virtiofs myfs /mnt

6.3 使用cloud-init自动化配置

对于批量部署,可以结合cloud-init实现自动化配置:

  1. 创建cloud-init配置ISO:

    cloud-localds --network-config=network-config-v2.yaml config.iso user-data.yaml meta-data.yaml
  2. 启动时附加配置ISO:

    -cdrom config.iso

在实际项目中,这套环境已经成功用于多个ARM64软件的移植测试工作。特别是在国产化替代过程中,能够有效解决开发初期硬件资源不足的问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 16:10:41

从自研框架到Spring Cloud Alibaba:一名架构师的十年演进思考

摘要:本文从一个完全自研的 Java Web 框架 CodeStats 出发,深入探讨了从 Spring、Spring Boot 到 Spring Cloud Alibaba 的技术演进逻辑,分析了阿里为何选择开源、Dubbo 与 Spring Cloud 的核心区别,以及如果脱离 Spring 生态&…

作者头像 李华
网站建设 2026/5/31 16:09:38

3分钟掌握图像隐写术:在线工具让你的图片变身数字保险箱

3分钟掌握图像隐写术:在线工具让你的图片变身数字保险箱 【免费下载链接】StegOnline A web-based, accessible and open-source port of StegSolve. 项目地址: https://gitcode.com/gh_mirrors/st/StegOnline StegOnline是一款基于Web的开源图像隐写工具&am…

作者头像 李华
网站建设 2026/5/31 16:08:55

微信聊天记录永久保存指南:三步导出你的数字记忆宝藏

微信聊天记录永久保存指南:三步导出你的数字记忆宝藏 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChat…

作者头像 李华
网站建设 2026/5/31 16:04:43

收藏 | AI大模型时代九大新兴岗位全景图及“钱景”分析,小白也能抓住时代红利!

AI大模型时代将催生众多新岗位,包括首席AI官、AI基础设施工程师等九大职位,薪资前景广阔。传统数据/IT人才可通过夯实基础、定位方向、积累实战、持续学习等路径转型。本文详细解读了新兴岗位职责、薪资水平及转型指南,强调复合型人才价值凸显…

作者头像 李华
网站建设 2026/5/31 16:04:09

基于 MediaPipe 的健身动作计数与姿态纠错系统:Python 姿态估计、深蹲/俯卧撑/弯举计数完整项目实战

摘要 本文围绕一个完整可运行的 MediaPipe 健身动作计数与姿态纠错系统 展开,从项目背景、技术选型、人体姿态关键点、动作角度计算、状态机计数、姿态纠错规则、运行效果到源码结构进行完整讲解。项目使用 Python、OpenCV 和 MediaPipe Pose 构建,支持深蹲、俯卧撑、哑铃弯…

作者头像 李华