最近编译个模块,加载的时候老是有问题,kgdb是个调试内核的工具,而用qemu就可以只需要一台机器实现调试的目的。
首先是qemu启动调试内核。
#qemu -s -hda ***.img -kernel linux-2.6.33.2/arch/x86/boot/bzImage -append "root=/dev/hda1 rw console=ttyS0 " -net nic,model=rtl8139 -net user
上述命令中的拿个***.img是自己装的系统镜像,由于我需要的是32位debian,所以它是一个已经装好的32位debian系统,-kernel参数指定你要调试的内核,模块就是在这个内核的基础上调试,由于是做移植,所以用新的2.6.33.2的内核来调试后面要加载的模块,-append指定文件系统,这里我就按照规定用/dev/hda1,由于我只需要从虚拟己拷贝host机器的东西,所以我没装tap。以下是编译内核是必须选的选项,否则上述命令起动不了。
Under device drivers--->block devices:
CONFIG_BLK_DEV_LOOP
CONFIG_BLK_DEV_RAM