准备linux kernel和环境
获取linux kernel code
git clone https://github.com/torvalds/linux.git
安装依赖项
这里以ubuntu平台为例
sudo apt-get install libncurses5-dev flex bison libssl-dev libelf-dev
设置编译ARCH环境为x86
export ARCH=x86
制作busybox文件系统
运行简易linux环境前我们需要制作一个简易的文件系统供运行,这里我们使用busybox
安装编译busybox
#下载busybox,建议先检查版本并下载最新版,这里使用1.33.1版本
wget https://busybox.net/downloads/busybox-1.33.1.tar.bz2
#解压
tar xvjf busybox-1.33.1.tar.bz2
#进入busybox目录编译
make menuconfig
----------------------------------menuconfig-----------------------------------------
Settings--->
--- Build Options
[*] Build static binary (no shared libs)
-------------------------------------------------------------------------------------
make && make install
编译成功后busybox目录下会出现名为_install的文件
我们将_install文件拷贝到对应的linux工程文件夹内,并创建一些必要的文件/文件夹
cp -r ./busybox-1.33.1/_install ./linux-6.10.6/_install
cd ./linux-6.10.6/_install/
mkdir etc
mkdir dev
mkdir mnt
mkdir -p etc/init.d
在_install/etc/init.d目录下新建rcS文件,并写入以下内容:
#vim 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
最好给rcS文件设置权限
chmod 755 rcS
在_install/etc目录创建fstab文件,并写入以下内容:
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tempfs /dev tmpfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0
在_install/etc目录创建inittab文件,并写入以下内容:
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
在_install/dev文件夹下新建设备节点(可能需要用sudo权限)
mknod console c 5 1
mknod null c 1 3
至此busybox的环境已经准备完成了,准备编译linux源码
编译Linux
进入linux kernel目录下,配置config文件,使kernel支持ramdisk, 并且默认使用_install文件夹内的环境
make menuconfig
----------------------------------menuconfig-----------------------------------------
General setup--->
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
(_install) Initramfs source file(s)
Device Drivers --->
[*] Block devices --->
<*> RAM block device support
(65536) Default RAM disk size (kbytes)
-------------------------------------------------------------------------------------
make #开始编译
初次编译需要等待较长时间,若编译成功,在编译log最后会看到编译kernel Image的路径,需要记下这个路径之后会使用到
运行QEMU
安装QEMU
#下载qemu,建议下载最新版
wget https://download.qemu.org/qemu-6.0.0.tar.bz2
tar xvjf qemu-6.0.0.tar.bz2
#编译需要的一些工具
sudo apt-get install ninja-build pkg-config libglib2.0-dev libpixman-1-dev
#进入qemu路径,注意不同版本文件名可能不同
cd qemu-6.0.0/
./configure
make && make install
运行Linux
若QEMU安装成功,那么我们所需要运行Linux的所有软件都已经安装完成了,
输入以下指令即可运行简易Linux环境
qemu-system-x86_64 -M pc -kernel ../linux-6.10.6/arch/x86/boot/bzImage -append "rdinit=/linuxrc console=ttyAMA0 console=ttyS0" -nographic
-kernel 编译的linux kernel image文件
-nographic 无图形界面模式,如果使用终端需要这个参数
运行成功后会看到这样的日志输出,可以运行基本Linux命令
退出QEMU Linux
先按ctrl+A,再按X,即可退出QEMU Linux