我正在尝试使用 qemu 和 gdb 调试 Linux 内核。问题是 gdb 不会在断点处停止。我搜索了一下,发现关闭 kASLR 可能会有所帮助,因为 kASLR 会混淆 gdb。
-- Install that kernel on the guest.
block 引用>+- Install that kernel on the guest, turn off KASLR by adding "nokaslr" to the kernel command line .
现在我不知道将 nokaslr 添加到命令行意味着什么以及执行此操作的方法。有什么想法吗?
最佳答案
如何将命令行传递给内核取决于您如何启动它。如果您指示 QEMU 使用 -kernel
和 -initrd
选项直接启动特定内核,则需要使用 -append
选项来指定命令行(如果已存在,请用空格分隔 nokaslr
,并确保根据 shell 的要求,在需要时用引号将整个内核命令行括起来)。
如果您的情况并非如此,那么您的 VM 中的模拟 BIOS 很可能会启动加载实际内核的引导加载程序(可能是 GRUB)。根据this ,可能需要在 VM 启动时按住 Shift 才能进入启动菜单。如果是这样,GRUB 允许用户(据我所知,暂时)编辑启动参数。在带有 GRUB 2.02 的 Ubuntu 17.04 上,我需要在要编辑的菜单项上按“e”。然后我找到一个 linux
命令,后面跟着 /boot/vmlinuz...
和内核命令行 - 只需将 nokaslr
放在该行的末尾,然后按 Ctrl-x 即可启动。
关于linux - 将 nokaslr 添加到内核命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728240/