linux - 将 nokaslr 添加到内核命令行

标签 linux debugging linux-kernel gdb qemu

我正在尝试使用 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,并确保根据 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/

相关文章:

linux - 使用 RAW 套接字在 Linux 上捕获传出 icmpv6 数据包

R 基准代码不生成输出

linux - bash 脚本 - 执行 find 命令没有输出

linux - 在崩溃(调试器)中编写脚本以打印长列表结构

c - 为什么 thread_info 应该是 task_struct 中的第一个元素?

c - Linux 中使用 C 的接口(interface)绑定(bind)(聚合)

Linux 中颜色响应的正则表达式匹配

python - 如何在Python中记录缩进错误?

javascript - 隐藏 chrome 扩展 : in "Developer Tools" Scripts tab

在进程上下文中调用 kmap_atomic()