Linux
關閉 kASLR 以使用 qemu 和 gdb 調試 linux 核心
我正在嘗試使用 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 範例。