环境准备

本文基于 Ubuntu 18.04 系统进行,其他类 Unix 操作系统平台应该也一样可以。由于需要基于QEMU运行并编译内核,因此我们需要事先下载软件包

sudo apt-get install qemu-system-x86 libssl-dev ncurses-dev genext2fs pigz lrzsz unzip

编译运行

rootfs 构建

$ cd /path/to/workspace
$ wget https://buildroot.org/downloads/buildroot-2021.08.tar.gz
$ tar -xvzf buildroot-2021.08.tar.gz
$ cd buildroot-2021.08
$ make menuconfig
# Target options -> Target Architecture 选择 i386
# Toolchain -> Enable C++ support 打开
$ make
$ export PATH=`pwd`/output/host/bin:$PATH
$ cd ..
$ mkdir rootfs
$ cd rootfs
$ tar vxf ../buildroot-2021.08/output/images/rootfs.tar
$ find . | cpio -o -H newc | pigz -5 > `pwd`/rootfs.img

Linux kernel 编译运行

$ cd /path/to/workspace
$ wget https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/snapshot/linux-5.14.tar.gz
$ tar -xzvf linux-5.14.tar.gz
$ cd linux-5.14
$ make ARCH=i386 defconfig
$ make ARCH=i386 bzImage
$ qemu-system-i386 -m 2048M -kernel arch/i386/boot/bzImage \
  --append "root=/dev/ram0 rdinit=/linuxrc console=ttyS0 " \
  smp 1 -nographic -serial mon:stdio -initrd ../rootfs.img
# 登录名直接输入 root 即可

参考