Linux

關閉 kASLR 以使用 qemu 和 gdb 調試 linux 核心

  • December 17, 2021

我正在嘗試使用 qemu 和 gdb 調試 Linux 核心。問題是 gdb 不會在斷點處停止。我搜尋了一下,發現關閉 kASLR 可能會有所幫助,因為 kASLR 會混淆 gdb。

– 在客戶機上安裝該核心。

> > +- 在客戶機上安裝該核心,通過在核心命令行中添加“nokaslr”來關閉 KASLR。 > > >

不幸的是,我不知道將 nokaslr 添加到命令行意味著什麼以及如何做到這一點。任何想法,將不勝感激。

核心啟動參數可以在每次啟動時臨時設置,也可以始終通過一些配置文件進行設置;這是如何完成的取決於引導載入程序,對於目前版本的 Ubuntu,它是 grub2;

$ grep GRUB_CMDLINE_LINUX_DEFAULT /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
$ sudo perl -i -pe 'm/quiet/ and s//quiet nokaslr/' /etc/default/grub
$ grep quiet /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet nokaslr"
$ sudo update-grub

然後重啟;在 grub 菜單中確認參數按預期顯示。

qemu-system-x86_64 -append nokaslr

如果您使用 QEMU 本身來載入核心,這就是要走的路,而不是像使用 Ubuntu ISO 安裝程序那樣-kernel在磁碟映像中使用引導載入程序。

Linux 命令行nokasrl參數禁用 KASRL。

從 v4.12 開始就需要這樣做,當時 KASLR 預設是打開的。

這是一個使用它的高度自動化的 Buildroot 範例。

引用自:https://unix.stackexchange.com/questions/397939