前置准备
- Oracle VM VirtualBox
- XShell
- Ubuntu 较高版本发行版
步骤
- 先使用VM VirtualBox制作一个虚拟机
安装好之后,为了方便我们操作虚拟机,最好使用Shell工具ssh到虚拟机里面,Shell工具按照个人喜好即可。
对于VM VirtualBox,我们需要设置一下端口转发,才能连到虚拟机里面:
-
安装一些必须的工具
设置好端口转发之后,就可以用Shell工具连接虚拟机,需要安装下面的一些东西:- qemu
sudo apt-get update && sudo apt-get install qemu
- 手动编译gdb
这个需要下载gdb的源码,然后手动编译
- 下载内核源码
下载地址:Linux源码
- 下载指定版本的GCC[这一步不是必须的,我编译的2.6.39版本,需要gcc4.8.5]:
sudo apt-get install gcc-4.8
- 设置gcc版本优先级
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
-
编译内核
运行configure的时候,需要一些库包,要apt-get安装。
跟内核版本相关的问题:可能会出现一些perl相关的错误,需要稍微修改一下源码。 -
制作Initrd 文件系统
https://blog.0x972.info/?d=2014/11/27/18/45/48-linux-kernel-system-debugging-part-1-system-setup
-
启动编译好的内核
qemu-install/bin/qemu-system-x86_64 -nographic -hda disk.img -kernel linux-$KVERSION/arch/x86_64/boot/bzImage -initrd my-initramfs.cpio -append "console=ttyS0" -s -S
- 使用gdb连接内核:
现在就可以使用gdb调试内核了,可以自由地加断点调试,其实还应该再开一个终端去连接新建的这个内核虚拟机,模拟用户行为。这一步暂时没有弄,后面再补充。