1、编译源码(Linux kernel 4.6.2)
make menuconfig
执行make menuconfig时报错缺少库文件
需要安装依赖库
sudo apt-get install aptitude
sudo aptitude install libncurses5-dev
sudo apt-get install libssl-dev
首先编译内核,编译内核时注意要选两个选项。(注意:除此之外kernel hacking选项下其他的选项都不要选,否则会出现断点无法拦截的情况。这个说法有待验证)
kernel hacking –> kernel debugging –> compile the kernel with debug info
kernel hacking –> compile the kernel with frame pointers
make bzImage -j4
在编译过程中会出现如下的warning,最好解决掉
解决方法:
进入make menuconfig的图形界面,选择kernel hacking,将frame size由1024改成2048即可。
这样就生成了bzImage和vmlinux
bzImage 位于Linux-4.6.2/arch/x86/boot/bzImage
vmlinux 位于linux-4.6.2/vmlinux
2、编译QEMU(使用最新版2.12)
2.1 下载源码
https://download.qemu.org/
下载2.12.0版本;
2.2 编译前的工作
编译之前需要安装一些库文件,否则会卡在下面的页面不动;

因此需要安装SDL图形库:(注意是2.0版本的SDL)
sudo apt-get install libsdl2-2.0
sudo apt-get install libsdl2-dev
运行下列代码:
./configure --enable-debug --target-list=x86_64-softmmu

本文详细介绍了如何使用QEMU和GDB进行Linux内核的调试,包括编译Linux 4.6.2内核,构建QEMU 2.12,更新gdb,使用busybox创建最小文件系统,以及QEMU+GDB的调试步骤。在调试过程中,特别强调了处理编译警告和错误的重要性,以及解决各种依赖问题的技巧。
最低0.47元/天 解锁文章
734





