1 下载编译内核
mdkir LinuxKernel#创建工作目录
cd LinuxKernel#进入工作目录
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz
xd -d linux-5.0.1.tar.xz
tar -xvf linux-5.0.1.tar # 解压内核文件
cd linux-5.0.1 #进入·内核·文件夹·
sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev#安装内核编译工具
make i386_defconfig
make menuconfig
make#编译内核
2 在menuOS目录中下载并安装QEMU虚拟机,并用它来加载内核
sudo apt install qemu #下载QEMU
qemu-system-x86_64 -kernel linux-5.0.1/arch/x86_64/boot/bzImage
sudo apt install git #下载git
mkdir roofs
sudo git clone https://github.com/mengning/menu.git
cd menu
sudo apt-get install libc6-dev-i386 #安装编译环境
vim makefile#修改makefile,见下图
make rootfs
cd .. #返回LinuxKernel
qemu-system-i386 -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img
3 使用GDB跟踪调试内核
emu-system-x86_64 -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img -s -S
# 关于-s和-S选项的说明
# -S freeze CPU at startup (use ’c’ to start execution)
# -s shorthand for -gdb tcp::1234 若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项
重新开启一个终端进入gdb调试
(gdb)file linux-5.0.1/vmlinux # 在gdb界面中targe remote之前加载符号表
(gdb)target remote:1234 # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行
(gdb)break start_kernel #