一.Linux内核源码下载
https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz xz -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 defconfig #按照默认值生成.config make i386_defconfig #生成32位x86的配置文件 make menuconfig #开启文本菜单选项,对窗口有限制,尽量调大窗口
进入菜单后用键盘↑↓键依次选择Kernel hacking,Compile-time checks and compiler options,[*]Compile the kernel with debug info再选定Save。然后逐步选定Exit,直到退出该界面。
如下图所示:
make #编译内核
四.通过QEWU虚拟机加载内核
1.下载安装qemu
2.构造MenuOS
mkdir rootfs #构建MenuOS的根文件目录
git clone https://github.com/mengning/menu.git cd menu sudo apt-get install libc6-dev-i386 # 在64位环境下编译32位需安装
用vim Makefile后修改内核版本为linux-5.0.1
make rootfs
然后会出现
cd .. qemu-system-i386 -kernel linux-5.0.1/arch/x86/boot/bzImage -initrd rootfs.img # make i386_defconfig qemu-system-x86_64 -kernel linux-5.0.1/arch/x86_64/boot/bzImage -initrd rootfs.img
五.构建Linux内核的gdb调试环境
1.在qemu中启动gdb server
qemu -kernel ../linux-5.0.1/arch/x86/boot/bzImage -initrd ../rootfs.img -append nokaslr -s -S
2.建立gdb与gdbserver之间的连接,具体代码如下:
gdb file ~/linux-5.0.1/vmlinux target remote:1234 break start_kernel c list