centos使用qemu搭建ARM64运行环境

本文详细介绍如何从零开始搭建ARM64虚拟机环境,包括获取Linux内核源码、交叉编译工具、QEMU安装,以及内核编译、文件系统制作全过程。

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

准备工作

(1) linux 内核源码, 从github上获取

git clone https://github.com/torvalds/linux
make kernelversion

(2) 交叉编译工具,从linaro官网(www.linaro.org)上获取
在这里插入图片描述
在这里插入图片描述
解压后设置环境变量即可

xz -d gcc-linaro-xxx.tar.xz
tar -xvf gcc-linaro-xxx.tar
export PATH=$PATH:/yourpath

(3) 安装QEMU ,支持arm64需要源码安装https://www.qemu.org/

yum install gtk2-devel
./configure –target-list=aarch64-softmmu 
make && make install

安装完成后,有qemu-system-aarch64命令即可

内核代码编译

进入下载好的内核源码目录

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make defconfig
make menuconfig
make -j4

制作文件系统

(1)下载安装busybox : https://busybox.net/

make menuconfig

settings->build options->build static library(enable)

make
make install

(2) 制作根文件系统

mkdir rootfs 
cp busybox/_install/* rootfs/ -rf 
cd rootfs/_install
mkdir dev etc mnt 
mkdir -p etc/init.d

在_install/etc/init.d/目录下新建一个文件rcS:

mkdir -p /proc
mkdir -p /tmp
mkdir -p /sys
mkdir -p /mnt
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

在_inistall/etc/ 目录下新建一个fstab文件:

proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0

在_inistall/etc/ 目录下新建一个inittab文件:

::sysinit:/etc/init.d/rcS 
::respawn:-/bin/sh 
::askfirst:-/bin/sh 
::ctrlaltdel:/bin/umount -a -r 
cd init.d 

在_install/dev目录下新建节点:

mknod console c 5 1 
mknod null c 1 3 

返回上层目录,压缩

cd ../.. 
find . | cpio -o -H newc > rootfs.cpio 
gzip -c rootfs.cpio > rootfs.cpio.gz

QEMU启动ARM64虚拟机

qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -m 2048 -smp 2 -kernel linux/arch/arm64/boot/Image -initrd rootfs.cpio.gz -append "rdinit=/linuxrc console=ttyAMA0"

启动成功后,查看内核版本

/ # uname -r
4.20.0-rc4-00007-gef78e5e

关闭虚拟机

另起一个超级终端,输入

killall -9 qemu-system-aarch64

参考文章

《奔跑吧linux内核》第六章

### 使用 QEMU 搭建虚拟机或仿真环境 QEMU 是一种强大的开源模拟器,支持多种硬件架构的虚拟化和仿真。它可以运行在 User Mode 和 System Mode 下,分别用于应用程序级模拟和完整的系统级模拟。 #### 1. 安装 QEMU 在 Windows 或其他操作系统上安装 QEMU 的第一步是从官方或其他可信资源下载并安装软件包[^1]。对于 Ubuntu 平台,可以通过以下命令快速安装 QEMU: ```bash sudo apt update && sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst ``` 这一步会安装必要的工具链来支持 KVM 加速以及网络桥接功能。 --- #### 2. 配置 ARM 架构 CentOS 9 虚拟机 (System Mode) 以下是基于 QEMU 创建 ARM 架构虚拟机的具体方法,适用于 CentOS 9 或类似的 Linux 发行版。 ##### 准备镜像文件 需要准备两个核心文件: - **Kernel Image**: 这是一个针对目标架构编译好的内核映像。 - **Root Filesystem**: 提供初始根文件系统的磁盘镜像。 可以手动构建这些文件或者从社区获取预编译版本。 ##### 启动脚本示例 下面提供了一个 `start_vm.sh` 脚本来启动 ARM 架构虚拟机[^2]: ```sh #!/bin/sh qemu-system-aarch64 \ -M virt \ -cpu cortex-a53 \ -smp 2 \ -m 2G \ -kernel /path/to/kernel.img \ -append "root=/dev/vda rw console=ttyAMA0" \ -drive file=/path/to/rootfs.qcow2,format=qcow2 \ -net nic,model=virtio-net-pci \ -net user,hostfwd=tcp::2222-:22 \ -nographic ``` 解释如下: - `-M virt`: 设置机器模型为通用虚拟平台。 - `-cpu cortex-a53`: 指定 CPU 类型为 Cortex-A53。 - `-smp 2`: 开启双线程支持。 - `-m 2G`: 分配 2GB 内存给虚拟机。 - `-kernel ...`: 指向内核映像路径。 - `-append "..."`: 添加引导参数。 - `-drive ...`: 挂载 QCOW2 格式的磁盘镜像作为根文件系统。 - `-net nic,...`: 配置 VirtIO 网络适配器。 - `-net user,...`: 用户模式网络堆栈,并设置端口转发以便访问 SSH (`localhost:2222`)。 - `-nographic`: 关闭图形界面,仅保留串口输出。 执行此脚本即可启动虚拟机。 --- #### 3. 配置用户模式应用模拟 (User Mode) 如果只需要运行特定于某架构的应用程序而不是完整系统,则可以选择 User Mode 模拟方式。例如,在 x86_64 主机上运行 ARM 应用程序: ```bash qemu-arm-static your_arm_binary --args ``` 这里的关键在于使用静态链接版本的二进制文件(如 `qemu-arm-static`),从而实现跨平台兼容性。 --- #### 4. 常见问题排查 - 如果遇到性能瓶颈,建议启用硬件加速选项(KVM)。通过添加 `-enable-kvm` 参数可显著提升速度。 - 对于网络连接失败的情况,请确认 TAP 设备已正确创建并与宿主机网卡绑定。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值