2017-10-13 838 views
-1

我想使用qemu和gdb调试Linux内核。问题在于gdb不会停在断点处。我搜索了它,发现关闭kASLR可能会有帮助,因为kASLR会混淆gdb。将nokaslr添加到内核命令行

- 在guest虚拟机上安装该内核。

+ - 在guest虚拟机上安装该内核,通过在内核命令行中添加“nokaslr”到 来关闭KASLR。

现在我不知道这意味着什么增加nokaslr到命令行,并做到这一点的方式。任何想法?

+0

你应该检查你的内核是否有'kaslr'。 –

回答

2

如何将命令行传递给内核取决于您如何启动它。如果您指示QEMU使用-kernel-initrd选项直接引导特定内核,那么您需要使用-append选项来指定命令行(如果它已经存在,请将空格分开nokaslr,并确保在需要时将整个内核命令行用引号括起来,如你的shell所要求的那样)。

如果这不是你的情况,那么很可能你的虚拟机中会有一个模拟BIOS启动加载实际内核的启动加载程序(可能是GRUB)。根据this,可能需要在启动VM时按住Shift键才能进入启动菜单。如果是这样,GRUB允许用户(AFAIK,临时)编辑引导参数。在我使用GRUB 2.02的Ubuntu 17.04上,我需要在要编辑的菜单条目上按“e”。然后我找到一个linux命令,然后是/boot/vmlinuz...和内核命令行 - 只需在该行末尾输入nokaslr,然后按Ctrl-x启动。