Linux内核的核心目录
init : 其中的main.c中的start_kernel函数是内核的起点
kernel : 主内核代码 (内核的内核)
mm : memory management
fs : file system,实现了文件系统
ipc : inter-process communication,进程通信
net : 实现网络,如TCP/IP协议栈
drivers: 设备驱动程序
lib : 库文件,因为内核无法使用C标准库函数
include :建立内核代码时所需的公共的头文件,它们是各种体系结构(例如:ARM/x86)共用的
调试过程
下载linux内核源代码并解压:
sudo apt install axel
axel -n 20 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.34.tar.xz
xz -d linux-5.4.34.tar.xz
tar -xvf linux-5.4.34.tar
cd linux-5.4.34
下载编译工具:
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev # 编译器大礼包
make defconfig # 进行默认设置。每个新的内核版本都会带来一串新的选项,我们不需要在每次内核发布时升级我们的defconfig。[r1]
make -j$(nproc) # 编译内核,时间较久
sudo apt install qemu # install QEMU
qemu-system-x86_64 -kernel arch/x86/boot/bzImage # 使用qemu运行内核程序
sudo apt