1、开发工具和源码
上次实验用的内核
2、配置内核
make menuconfig
分别设置以下选项
编译和运行测试
make -j$(nproc)
qemu-system-x86_64 -kernel arch/x86/boot/bzImage
制作根文件系统
axel -n 20 https://busybox.net/downloads/busybox-1.31.1.tar.bz2
tar -jxvf busybox-1.31.1.tar.bz2
cd busybox-1.31.1
make menuconfig //编译成静态链接库
编译安装
make -j$(nproc)
make install
制作根文件系统镜像
mkdir rootfs
cd rootfs
cp ../busybox-1.31.1/_install/* ./ -rf
mkdir dev proc sys home
sudo cp -a /dev/{null,console,tty,tty1,tty2,tty3,tty4} dev/
接下来准备init脚本文件放在根文件系统跟目录下
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
echo "Wellcome TogOS!"
echo "--------------------"
cd home
/bin/sh
对脚本添加可执行权限
chmod +x init
打包成内存根文件系统镜像
find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../rootfs.cpio.gz
测试挂载根文件系统
qemu-system-x86_64 -kernel linux-5.4.34/arch/x86/boot/bzImage -initrd rootfs.cpio.gz
配置vscode
安装插件
借助一个 Python 脚本来生成 compile_commands.json 文件帮助 Intellisense 正常提示(包括头文件和宏定义等)。在Linux源代码目录下直接运行如下命令就可以生成 compile_commands.json 了
python ./scripts/gen_compile_commands.py
配置文件放入.vscode(自己新建一个)