将 nokaslr 添加到内核命令行

Win*_*ton 0 linux debugging gdb qemu linux-kernel

我正在尝试使用 qemu 和 gdb 调试 Linux 内核。问题是 gdb 不会在断点处停止。我搜索了一下,发现关闭 kASLR 可能会有所帮助,因为 kASLR 会混淆 gdb。

-- 在客户机上安装该内核。

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

现在我不知道将 nokaslr 添加到命令行意味着什么以及执行此操作的方法。任何想法?

小智 5

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

如果您的情况并非如此,那么您的 VM 中的模拟 BIOS 很可能会启动加载实际内核的引导加载程序(可能是 GRUB)。据此可能需要在 VM 启动时按住 Shift 才能进入启动菜单。如果是这样,GRUB 允许用户(据我所知,暂时)编辑引导参数。在带有 GRUB 2.02 的 Ubuntu 17.04 上,我需要在要编辑的菜单项上按“e”。然后我找到一个linux命令,后面跟着类似/boot/vmlinuz...内核命令行的内容——只需将其放在nokaslr该行的末尾,然后按 Ctrl-x 即可启动。