本文将介绍如何自己编译Linux内核、使用buildroot构建rootfs,自制Linux系统,并使用qemu运行我们自制的Linux系统。
宿主机
采用Ubuntu 26.04
QEMU及编译工具链安装
sudo apt updatesudo apt install -y qemu-system-arm gcc-aarch64-linux-gnu build-essential bc bison flex libssl-dev libelf-dev debootstrap busybox-staticsudo apt install -y libncurses-dev
验证编译工具链
aarch64-linux-gnu-gcc --version
设置环境变量
export ARCH=arm64export CROSS_COMPILE=aarch64-linux-gnu-
下载Linux 6.0内核
# 从 Kernel.org 下载 6.0 版本wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v6.x/linux-6.0.tar.xz# 解压tar -xvf linux-6.0.tar.xzcd linux-6.0
配置内核
配置串口驱动
- 在 make menuconfig 中,确保以下项被选中(通常 defconfig 已包含,但值得确认):
- Virtio drivers —> <*> PCI driver for virtio devices
- Virtio drivers —> <*> Virtio balloon driver
- Network device support —> <*> Virtio network driver
- Block devices —> <*> Virtio block driver
- Kernel Features —> [] Randomize the address of the kernel image (KASLR) (如果是老版本QEMU可能不支持,建议关闭)
编译内核
- 构建完成后,根文件系统镜像位于:
output/images/rootfs.ext4 (或者 rootfs.cpio.gz,具体取决于配置,qemu_aarch64_virt_defconfig 通常生成 ext4 或 cpio)。
QEMU启动脚本
保存下面脚本到~/run_qemu.sh:
#!/bin/bashKERNEL_PATH=~/linux-6.0/arch/arm64/boot/ImageROOTFS_PATH=~/buildroot-2026.02.2/output/images/rootfs.ext4qemu-system-aarch64 \ -M virt \ -cpu cortex-a57 \ -m 1G \ -kernel ROOTFS_PATH,if=virtio,format=raw" \ -append "root=/dev/vda console=ttyAMA0" \ -nographic \ -netdev user,id=net0,hostfwd=tcp::2222-:22 \ -device virtio-net-device,netdev=net0
用户名:root 默认没有密码。