一、安装Qemu
1、安装Qemu
sudo apt install qemu-system-arm
2、测试版本
qemu-system-arrch -version
二、编译内核
1、下载内核
https://mirrors.edge.kernel.org/pub/linux/kernel
2、编译内核
(1)配置架构和编译器
ARCH ?= $(SUBARCH)ARCH := arm64
CROSS_COMPILE := aarch64-linux-gnu-
(2)选择默认配置文件
cp arch/arm64/configs/defconfig ./.config
(3)配置内核
Kernel Features ---> [ ] Randomize the address of the kernel image //取消内核内存地址随机化,不同内核通过搜索RANDOMIZE_BASE查找
(4)编译内核(-j 参数表示使用6个线程编译)
make Image -j6
三、下载busybox
1、下载busybox
https://busybox.net/downloads/
2、配置架构和编译器
ARCH ?= $(SUBARCH)ARCH := arm64
CROSS_COMPILE := aarch64-linux-gnu-
4、配置busbox
Settings --->
[*] Build static binary (no shared libs) //静态编译
[*] Build with debug information //可选,带调试信息,方便后续调试
5、编译busybox
make install 将编译内容安装在当前目录_install下
make
make install
四、生成跟文件系统镜像
1、生成镜像
qemu-img create rootfs.img 512m
mkfs.ext4 rootfs.img
2、将busybox移植进入镜像
mkdir rootfs
sudo mount rootfs.img rootfssudo cp -rf _install/* rootfs
sudo mkdir proc sys dev etc etc/init.d
sudo vim etc/init.d/rcS<etc/init.d/rcS>
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
mount -t debugfs none /sys/kernel/debugsudo chmod +x etc/init.d/rcSsudo umount rootfs
五、编写启动脚本
#! /bin/shqemu-system-aarch64 \-machine virt,virtualization=true,gic-version=3 \-nographic \-m size=1024M \-cpu cortex-a72 \-smp 2 \-kernel Image \-drive format=raw,file=rootfs.img \-append "root=/dev/vda rw"
备注
参考:qemu搭建arm64 linux kernel环境
本人编译结果:qemu调试内核(aarch64)