最新のカーネルソースコードを入手する

最新のカーネルソースコードを入手する

デバッグモードでLinuxカーネルバージョン3.10.107と4.13.8を構築してみました。カーネルを構築するには、次の手順を使用しました。

ホストシステムにはUbuntu 16.04オペレーティングシステムがあり、デバッグ情報を使用してカーネルを最新バージョン(4.13.8)に更新しようとします。

最新のカーネルソースコードを入手する

wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.13.8.tar.xz
mkdir linux-4.13.8 && tar xvf linux-4.13.8.tar.xz -C $(pwd)/linux-4.13.8/
cd linux-4.13.8

ホストLinuxで.configをコピーする

cp /boot/config-`uname -r`* .config

デバッグモードでカーネルを構築するには、次のオプションを有効にします。

gedit .config
CONFIG_DEBUG_KERNEL=y
CONFIG_FRAME_POINTER=y
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
CONFIG_DEBUG_INFO=y

menuconfigのGUIメニューを確認しました。

make menuconfig

カーネルハッキングオプション(カーネルデバッグ、カーネルデバッグメッセージのコンパイル、Printkオプション)が有効になっており、デフォルトのデバッグメッセージとコンソールレベルは7です。

make コマンドが実行されました。カーネルの構築が成功しました。

-j4を作成

カーネルのインストール

sudo make modules_install install 

更新されたGrub2

sudo update-grub2

オペレーティングシステムを再起動します。

reboot

OSは最新のカーネル4.13.8にアップデートされ、正常に実行されますが、デバッグ情報とprintk出力はdmesgコンソール出力とログファイル(var/log/kern.log、dmesg、syslogなど)に表示されません。

また、gdbを使用してカーネルイメージをデバッグしようとしました(デバッグシンボルが見つかりません)。

カーネルのデバッグを手伝ってください。私の目的は、システムコール、トラップ、ユーザー空間からカーネル空間への移行、メモリ管理を詳細にデバッグして分析することです。 (strace出力よりも多くのデバッグ情報を期待しています)

関連情報