news 2026/4/23 11:11:19

保姆级教程:在Ubuntu 22.04上用QEMU/KVM跑起ARM64 Debian(解决BIOS慢、无GUI问题)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:在Ubuntu 22.04上用QEMU/KVM跑起ARM64 Debian(解决BIOS慢、无GUI问题)

在Ubuntu 22.04上高效运行ARM64虚拟机的完整指南

最近两年ARM架构的崛起让不少开发者开始关注这个平台——从树莓派到苹果M系列芯片,再到云服务商的ARM实例,跨平台开发的需求越来越普遍。但手头没有ARM设备怎么办?本指南将带你用QEMU/KVM在x86_64主机上构建流畅的ARM64虚拟机环境,特别针对Ubuntu 22.04用户优化了每个步骤。

1. 环境准备与基础概念

在开始之前,我们需要明确几个关键点:为什么选择QEMU+KVM组合?简单来说,QEMU提供完整的系统模拟能力,而KVM则通过硬件虚拟化加速大幅提升性能。对于ARM64模拟,这个组合能提供接近原生80%的性能表现。

必备组件安装

sudo apt update sudo apt install -y qemu qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

验证KVM是否可用:

lsmod | grep kvm

正常应该看到kvm_intelkvm_amd以及kvm模块已加载。

提示:如果使用的是云主机,可能需要先启用嵌套虚拟化。对于AWS EC2实例,可以参考官方文档配置。

ARM64模拟需要专门的EFI固件文件,从Linaro获取最新版本:

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

2. 系统镜像选择与优化配置

选择适合的镜像直接影响后续使用体验。对于测试和学习目的,推荐从Debian官方获取最小化安装镜像:

wget https://d-i.debian.org/daily-images/arm64/daily/netboot/mini.iso

对于需要图形界面的用户,可以考虑Ubuntu Server ARM64版:

wget https://cdimage.ubuntu.com/ubuntu-server/daily-live/current/jammy-live-server-arm64.iso

关键QEMU参数解析

参数说明推荐值
-M virt指定机器类型virt(默认)
-cpuCPU型号cortex-a72(平衡)/max(最佳)
-smpCPU核心数4(四核)
-m内存大小4096(4GB)
-accel加速方式tcg,thread=multi/kvm

一个优化后的启动命令示例:

qemu-system-aarch64 \ -M virt -cpu cortex-a72 \ -accel tcg,thread=multi -smp 4 \ -m 4096M -bios QEMU_EFI.fd \ -cdrom mini.iso \ -device virtio-net-device,netdev=net0 \ -netdev user,id=net0,hostfwd=tcp::2222-:22 \ -drive file=arm64vm.qcow2,if=none,format=qcow2,id=hd0 \ -device virtio-blk-device,drive=hd0

3. 性能调优与常见问题解决

虚拟机运行缓慢是最常见的痛点,以下是几个关键优化点:

  1. CPU与内存分配

    • 至少分配2个CPU核心和2GB内存
    • 使用-cpu max参数获取最佳兼容性
    • 启用多线程TCG加速:-accel tcg,thread=multi
  2. 磁盘I/O优化

    • 使用qcow2格式而非raw
    • 启用virtio-blk驱动
    • 考虑添加缓存参数:cache=writeback
  3. 网络加速

    • 使用virtio-net设备
    • 考虑tap网络替代user模式网络

BIOS加载慢的解决方案

qemu-system-aarch64 \ -kernel vmlinuz \ -initrd initrd.img \ -append "root=/dev/vda2 console=ttyAMA0" \ -drive file=arm64vm.qcow2,format=qcow2 \ -nographic

注意:直接加载内核需要提前从镜像中提取vmlinuz和initrd文件,可以通过挂载ISO镜像获取。

4. 系统管理与高级用法

安装完成后,推荐通过SSH管理虚拟机。在启动参数中添加端口转发:

-netdev user,id=net0,hostfwd=tcp::2222-:22

然后通过ssh连接:

ssh -p 2222 localhost

修改虚拟机磁盘内容的技巧

  1. 加载nbd内核模块:
sudo modprobe nbd max_part=8
  1. 连接qcow2镜像:
sudo qemu-nbd -c /dev/nbd0 arm64vm.qcow2
  1. 挂载分区并修改:
sudo mount /dev/nbd0p2 /mnt # 进行修改... sudo umount /mnt sudo qemu-nbd -d /dev/nbd0

图形界面支持

如果需要GUI,可以添加这些参数:

-display gtk \ -device virtio-gpu-pci \ -device usb-ehci \ -device usb-kbd \ -device usb-mouse

5. 自动化脚本与日常使用

创建一个启动脚本start_arm64vm.sh

#!/bin/bash VM_IMAGE="arm64vm.qcow2" ISO_IMAGE="mini.iso" if [ ! -f "$VM_IMAGE" ]; then qemu-img create -f qcow2 $VM_IMAGE 20G fi qemu-system-aarch64 \ -M virt -cpu max \ -accel tcg,thread=multi -smp 4 \ -m 4096M -bios QEMU_EFI.fd \ -device virtio-net-device,netdev=net0 \ -netdev user,id=net0,hostfwd=tcp::2222-:22 \ -drive file=$VM_IMAGE,if=none,format=qcow2,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -cdrom $ISO_IMAGE

给脚本执行权限:

chmod +x start_arm64vm.sh

日常维护命令

  • 查看虚拟机状态:virsh list --all
  • 启动虚拟机:virsh start arm64vm
  • 关闭虚拟机:virsh shutdown arm64vm
  • 连接控制台:virsh console arm64vm

在实际项目中,我发现将内存设置为物理机内存的1/4,CPU核心设置为物理核心的1/2通常能获得最佳性能平衡。对于持续集成环境,可以进一步优化参数并考虑使用无头模式运行。

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

强力窗口管理:Topit如何让Mac多任务效率提升300%

强力窗口管理:Topit如何让Mac多任务效率提升300% 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否经常在代码编辑器、文档浏览器和终端窗口之间…

作者头像 李华
网站建设 2026/4/23 11:08:12

MZmine 4.5.0:从质谱数据到科学发现的智能分析平台

MZmine 4.5.0:从质谱数据到科学发现的智能分析平台 【免费下载链接】mzmine3 mzmine source code repository 项目地址: https://gitcode.com/gh_mirrors/mz/mzmine3 MZmine 4.5.0是一款开源的质谱数据处理软件,专为代谢组学、脂质组学和蛋白质组…

作者头像 李华
网站建设 2026/4/23 11:04:42

ColorControl终极指南:3步解决NVIDIA预设切换快捷键失效问题

ColorControl终极指南:3步解决NVIDIA预设切换快捷键失效问题 【免费下载链接】ColorControl Easily change NVIDIA display settings and/or control LG TVs 项目地址: https://gitcode.com/gh_mirrors/co/ColorControl 你是否在使用ColorControl管理NVIDIA显…

作者头像 李华
网站建设 2026/4/23 11:01:18

深度解析wxlivespy:构建企业级微信视频号直播数据采集架构

深度解析wxlivespy:构建企业级微信视频号直播数据采集架构 【免费下载链接】wxlivespy 微信视频号直播间弹幕信息抓取工具 项目地址: https://gitcode.com/gh_mirrors/wx/wxlivespy 在直播电商与内容营销迅猛发展的今天,实时获取直播互动数据已成…

作者头像 李华