使用QEMU创建arm64架构下linux的虚拟机(两种方法)

本文详细介绍了使用qemu创建arm64架构Linux虚拟机的两种方法:一是直接下载UbuntuISO镜像并安装,操作便捷但功能受限;二是通过BusyBox自定义根文件系统,虽然复杂但具有更多灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

        这篇文章提供了两种使用qemu创建arm64架构的linux虚拟机的方法。方法一比较简单,直接下载了一个ubuntu操作系统镜像而方法二是自己制作根文件系统。在使用方面,因为方法一是安装了ubuntu的操作系统,使用会更便捷一些而方法二无法使用apt也无法识别sudo。

二、方法一:使用iso镜像

1、安装qemu

sudo apt install qemu-system-arm

2、下载UEFI固件

bios镜像,用来引导启动系统

wget http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd

3、操作系统

源自清华的镜像站:Index of /ubuntu-cdimage/releases/22.04.4/release/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

可以在这个链接下载自己需要的ubuntu版本。

4、创建虚拟硬盘

使用qemu-img创建一个大小为10G的虚拟硬盘(这个大小可以根据实际情况自行调整)

qemu-img create ubuntuimg.img 10G

5、安装虚拟机

qemu-system-aarch64 -m 4096 -cpu cortex-a57 -smp 4 -M virt -bios QEMU_EFI.fd -nographic -drive if=none,file=ubuntu-18.04.4-live-server-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=ubuntuimg.img,id=hd0 -device virtio-blk-device,drive=hd0

这里的参数也可以根据自己的需要进行调整

然后就会开始安装了,具体过程就是一些语言、用户名密码等设置,可以自行调整。

5a800d4e53b12ced1124fabfb1b647f6.png

380607b4b4126281e621e85224994e24.png

6、启动虚拟机

安装好虚拟机后,我们可以写一个脚本来运行虚拟机

nano run.sh

qemu-system-aarch64 -m 2048 -cpu cortex-a57 -smp 2 -M virt -bios QEMU_EFI.fd -nographic  -device virtio-scsi-device -drive if=none,file=ubuntuimg.img,format=raw,index=0,id=hd0 -device virtio-blk-device,drive=hd0

运行:

./run.sh

1af8efb07f84617a05df4356d88847d2.png

 

三、方法二:使用busybox辅助搭建

1、工具安装

//下载qemu

sudo apt-get install qemu-system-arm

//安装交叉编译工具链

sudo apt-get install gcc-aarch64-linux-gnu

1、下载编译内核

linux内核下载地址

找到自己需要的版本进行下载好后解压。

先进入内核文件配置以下环境(我下载的是linux6.2)

cd linux6.2

make ARCH=arm64 CROSS_COMPILE = aarch64-linux-gnu- defconfig

这里的CROSS_COMPILE需要注意,后面跟的是你的arm64 gcc的前缀。

编译内核:

make ARCH=arm64 CROSS_COMPILE = aarch64-linux-gnu- Image -j8

运行这个指令后会生成一个Image,这个就是内核镜像。

2、busybox下载配置

先下载busybox ,然后解压

https://busybox.net/downloads/

同样的,进入busybox中,配置一下环境。(我下载的是busybox-1.36.1)

export ARCH=arm64

export CROSS_COMPILE = aarch64-linux-gnu-

make menuconfig

然后会出现一个菜单,更改设置:静态编译

Settings --->

[*] Build static binary(shared libs)

[*] Build with debug information

然后进行编译

make

make install

 

生成的_install文件夹就是根文件系统。

3、rootfs image制作

首先,构建ext4 image

qemu-img create rootfs.img 10G

mkfs.ext4 rootfs.img

然后将busybox合并到img中

mkdir rootfs //创建rootfs目录

sudo mount rootfs.img rootfs//挂载rootfs.img到rootfs目录

sudo cp -rf _install/* rootfs //拷贝_install到rootfs中

cd rootfs//进入rootfs

sudo mkdir proc sys dev etc etc/init.d //创建关键目录

sudo vim etc/init.d/rcS

rcS内容如下,主要是挂载常使用的虚拟文件系统

#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
mount -t debugfs none /sys/kernel/debug

然后给rcS增加执行权限

sudo chmod +x etc/init.d/rcS

最后要取消挂载

sudo umount rootfs

以后如果想要从ubuntu系统中传文件到这个虚拟机中也可以用这种方法,挂载rootfs.img到rootfs目录然后把要传的文件复制到rootfs中,再取消挂载,再次启动虚拟机就可以看到这些文件了。

4、qemu启动

同样的,创建一个脚本,内容如下:

qemu-system-aarch64 -machine virt -nographic -m size=1024M -cpu cortex-a72 -smp 2 -kernel /home/z/linux-system/linux-6.2/arch/arm64/boot/Image -drive format=raw,file=/home/z/busybox-1.36.1/rootfs.img -append "root=/dev/vda rw"

-kernel后面加的是Image的路径,file后面是rootfs.img的路径

增加可执行权限然后运行

5d0ab4016f0c68a8039bb51e21ea04c9.png

成功启动。

 

### QEMU ARM 模拟使用指南 #### 启动简单 QEMU Arm 实例 为了启动一个基本的 QEMU Arm 环境,命令行指令如下所示[^1]: ```bash ~/local/xPacks/qemu-arm/<version>/bin/qemu-system-arm \ -machine versatilepb \ -cpu cortex-a9 \ -nographic \ -kernel vmlinuz-<your-linux-kernel> ``` 此设置利用 `versatilepb` 平台模型来创建基于 Cortex-A9 CPU 的虚拟化环境。 `-nographic` 参数用于禁用图形输出以便于简化控制台交互。 #### 准备工作与安装过程 对于希望在 QEMU 中安装并运行 ARM 架构的操作系统而言,准备阶段至关重要。这通常涉及获取适合目标平台的 ISO 或者磁盘映像文件,并确保拥有正确的 QEMU 版本和支持库[^3]。 #### 推荐工具:xPack QEMU Arm 考虑到易用性和功能性,xPack QEMU Arm 是一种优秀的二进制分发版本,它能够提供稳定可靠的 ARM 仿真体验。该项目托管在一个公开仓库上,方便开发者下载和贡献改进[^2]. #### 教学应用案例 教育领域内的应用场景十分广泛;比如,在教授计算机组成原理课程时,教师可以通过 xPack QEMU Arm 来演示 ARM 处理器内部的工作流程及其同操作系统之间的互动方式。 #### Windows 下的具体实现例子 具体到 Windows 操作环境下,有专门针对该平台优化过的指导文档介绍了如何部署 Kylin OS 这样的 Linux 发行版至 QEMU 创建出来的 ARM 虚拟环境中去[^4]。 ```python # Python 示例代码仅作展示用途而非实际功能实现部分 print("This is an example code block.") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值