我正在尝试使用qemu和gdb调试linux内核。问题是gdb不会在断点停止。我搜索了一下,发现关闭kASLR可能有帮助,因为kASLR混淆了gdb。
-把内核安装在客人身上 +-在客户端安装内核,在内核命令行中添加"nokaslr“,从而关闭KASLR。
现在,我不知道在命令行中添加nokaslr意味着什么,以及如何做到这一点。有什么想法吗?
发布于 2017-10-22 10:06:44
如何将命令行传递给内核取决于如何启动它。如果您指示QEMU使用-kernel
和-initrd
选项直接引导特定内核,那么您需要-append
选项来指定命令行(如果它已经存在,那么将nokaslr
与空格分开,并确保根据您的shell的要求,在需要时用引号括住整个内核命令行)。
如果这不是您的情况,那么在您的VM中,模拟的BIOS很可能启动加载实际内核的引导加载器(可能是GRUB)。根据this,可能需要在VM启动时保持Shift才能到达启动菜单。如果是这样,GRUB允许用户(AFAIK,临时)编辑引导参数。在我使用GRUB 2.02的Ubuntu17.04上,我需要在我想编辑的菜单项上按"e“。然后,我找到一个linux
命令,后面跟着类似于/boot/vmlinuz...
和内核命令行的内容--只需将nokaslr
放在该行的末尾,然后按Ctrl启动即可。
https://stackoverflow.com/questions/46728240
复制相似问题