qemu-system-aarch64实战:从零构建ARM64虚拟机环境

1. 为什么你需要一个ARM64虚拟机环境?

如果你正在接触嵌入式开发、内核测试,或者想体验一下ARM架构的服务器环境,但手头又没有现成的ARM开发板或服务器,那么QEMU的 qemu-system-aarch64 就是你最好的朋友。它就像一个功能强大的“软件模拟器”,能在你的x86电脑上,凭空“造”出一台完整的ARM64架构的计算机。听起来很酷,对吧?我第一次接触它,是为了测试一个为树莓派4(ARM64架构)编译的Linux内核模块。当时手边没有硬件,全靠QEMU救场,让我在笔记本上就完成了所有调试工作。

简单来说,qemu-system-aarch64 是QEMU项目中专用于模拟ARMv8-A 64位架构(也就是我们常说的AArch64或ARM64)的系统模拟器。它不仅能模拟CPU指令集,还能模拟一整套计算机硬件,包括内存、磁盘、网卡、USB控制器等等。这意味着你可以在里面安装一个完整的ARM64操作系统,比如Ubuntu Server for ARM,然后像使用一台真实服务器一样去操作它。

那么,谁会用得上它呢?我总结了几类典型用户:

  • 嵌入式开发者:在将系统烧录到真实的开发板之前,先在虚拟环境中进行内核编译、驱动开发和系统集成测试,能节省大量时间和硬件成本。
  • 内核与系统软件测试者:需要验证软件在不同CPU架构(特别是ARM64)下的兼容性和稳定性。
  • 学习者与爱好者:想学习ARM64架构、操作系统原理,或者单纯想体验一下ARM生态下的软件,比如在Mac M系列芯片或x86电脑上运行ARM版的Linux发行版。
  • CI/CD流水线:在自动化构建和测试流程中,快速创建标准化的ARM64测试环境。

接下来的内容,我将带你从零开始,一步步构建一个功能齐全的ARM64虚拟机。我会把我在实际项目中踩过的坑、总结的最佳实践都分享给你,保证你跟着做就能成功。

2. 环境准备:安装QEMU与获取系统组件

万事开头难,但准备工作做好了,后面就一帆风顺。我们首先需要在你的宿主机(假设是Ubuntu 22.04 LTS)上安装QEMU,并准备好启动虚拟机所需的几个核心文件。

2.1 安装QEMU

在Ubuntu上安装QEMU非常简单,一条命令即可。但为了获得较新的功能和更好的稳定性,我建议直接从官方仓库安装。

sudo apt update
sudo apt install qemu-system-arm qemu-utils qemu-system-gui -y

这条命令安装了三个包:

  • qemu-system-arm: 包含了我们需要的 qemu-system-aarch64 以及其他ARM架构的模拟器。
  • qemu-utils: 提供了一些非常实用的工具,比如 qemu-img,我们后面创建虚拟磁盘镜像会用到它。
  • qemu-system-gui: 如果你想使用图形界面(比如VNC或GTK显示)来操作虚拟机,这个包是必需的。即使你现在打算用无图形模式(-nographic),先装上也无妨。

安装完成后,可以验证一下版本:

qemu-system-aarch64 --version

如果能看到类似 QEMU emulator version 6.2.0 的输出,说明安装成功。

2.2 获取ARM64系统组件:内核与根文件系统

一个可启动的虚拟机需要三样东西:机器类型(由QEMU提供)、内核根文件系统。机器类型我们后面用命令行指定,现在需要准备后两者。

1. 下载预编译的ARM64内核: 对于新手,我强烈建议先从下载现成的内核开始,避免自己编译内核的复杂过程。Ubuntu官方就提供了为QEMU预编译好的内核。我们下载一个通用的、支持virt机器类型的内核。

wget https://cloud-images.ubuntu.com/releases/22.04/release/unpacked/ubuntu-22.04-server-cloudimg-arm64-vmlinuz-generic -O vmlinuz

这个 vmlinuz 文件就是压缩后的Linux内核镜像。

2. 创建虚拟磁盘并安装根文件系统: 根文件系统是操作系统的“家”,所有系统文件和用户数据都在这里。我们将创建一个空的磁盘镜像,然后把一个现成的根文件系统放进去。

首先,用 qemu-img 创建一个4GB大小的qcow2格式的磁盘镜像。qcow2格式支持“稀疏文件”,也就是说,虽然看起来是4GB,但实际占用的磁盘空间会随着使用而增长,非常节省空间。

qemu-img create -f qcow2 ubuntu-22.04-arm64.qcow2 4G

接下来,我们需要一个根文件系统。同样,Ubuntu提供了云镜像,它包含了一个最小化的系统。我们下载它:

wget https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-arm64.img

现在,把这个云镜像作为“种子”,写入我们刚创建的空白磁盘中。这里需要一个技巧:使用 virt-resize

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值