Qemuとgdbを使用してLinuxカーネルをデバッグしようとしています。問題は、gdbがブレークポイントで停止しないことです。 kASLRがgdbを混乱させるので、私はそれについて検索し、kASLRをオフにすることが役立つかもしれないことを発見しました。
-そのカーネルをゲストにインストールします。
+-そのカーネルをゲストにインストールし、カーネルコマンドラインに「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
nokasrl
Linuxコマンドラインパラメーターは、KASRLを無効にします。
これは、KASLRがデフォルトでオンになっていたv4.12以降に必要でした。
これが 高度に自動化されたBuildrootの例 それを使用しています。