2017-10-13 837 views
-1

我想使用qemu和gdb調試Linux內核。問題在於gdb不會停在斷點處。我搜索了它,發現關閉kASLR可能會有幫助,因爲kASLR會混淆gdb。將nokaslr添加到內核命令行

- 在guest虛擬機上安裝該內核。

+ - 在guest虛擬機上安裝該內核,通過在內核命令行中添加「nokaslr」到 來關閉KASLR。

現在我不知道這意味着什麼增加nokaslr到命令行,並做到這一點的方式。任何想法?

+0

你應該檢查你的內核是否有'kaslr'。 –

回答

2

如何將命令行傳遞給內核取決於您如何啓動它。如果您指示QEMU使用-kernel-initrd選項直接引導特定內核,那麼您需要使用-append選項來指定命令行(如果它已經存在,請將空格分開nokaslr,並確保在需要時將整個內核命令行用引號括起來,如你的shell所要求的那樣)。

如果這不是你的情況,那麼很可能你的虛擬機中會有一個模擬BIOS啓動加載實際內核的啓動加載程序(可能是GRUB)。根據this,可能需要在啓動VM時按住Shift鍵才能進入啓動菜單。如果是這樣,GRUB允許用戶(AFAIK,臨時)編輯引導參數。在我使用GRUB 2.02的Ubuntu 17.04上,我需要在要編輯的菜單條目上按「e」。然後我找到一個linux命令,然後是/boot/vmlinuz...和內核命令行 - 只需在該行末尾輸入nokaslr,然後按Ctrl-x啓動。