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