如何在virtualbox中调试内核加载和内部加载

cod*_*ber 10 linux ubuntu virtualbox linux-kernel

我已经在我的arch托管机器上克隆了linux内核repo(主机是ubuntu 16.04).两个星期前我能够启动进入新内核(当时是4.11.rc06),然后我做了git pull并重新编译了所有内容,它只是在"加载初始ramdisk映像......"之后挂起.

于是,我就git clean -xfd那么make localmoduleconfig一切回答默认值,然后makemake modules_install然后mkinitcpio -p linux.4.11.custom,当然sudo cp -v arch/x86_64/boot/bzImage /boot/vmlinuz-linux.4.11.custom.

在我确认它确实挂起之后我尝试了更多的git pulls,更多的清理,但没有任何改变.

在真实机器上从同一源运行相同的内核启动.我在virtualbox中找不到记录的bug或找到ubuntu的更新.

接下来我尝试通过添加到grub的linux命令来自己调试它:debug earlyprintk=vga,keep甚至删除initrd行添加noinitrd到内核,但我没有得到任何错误.只是一个屏幕上有grub的"echo"消息,这些消息永远都是这样的.

  1. 我该怎么调试呢?
  2. 有谁知道可以做些什么?

小智 1

为了检查内核是否启动,我将使用 KDB(内核的内置调试器),并查看启动时是否收到提示。

为了更好的调试,我会尝试让 KGDB(内核的 GDB)工作。

您实际上可以激活两者以使所有选项可用。有关此内容的更多信息,请参阅以下链接:

https://www.kernel.org/doc/htmldocs/kgdb/index.html