Linux カーネルのデバッグ - 2023.2 日本語

Versal アダプティブ SoC システム統合および検証設計手法ガイド (UG1388)

Document ID
UG1388
Release Date
2023-11-15
Version
2023.2 日本語

カーネル ソフトウェアはアセンブリ コードと C コードが混在しており、U-Boot からロードされます。U-Boot は、アーキテクチャ、プロセッサ、およびマシン タイプをチェックするエントリ ポイント head.S に渡されます。head.S は、メモリ管理ユニット (MMU) の設定、ページ テーブルの作成、仮想メモリのセットアップを実行した後、start_kernel を呼び出します。start_kernel 関数は、最大約 86 のサブシステムで構成されます。

ブートで重要なのが setup_arch です。setup_archでは、デバイス ツリーから抽出される CPU やマシンの設定など、アーキテクチャに依存するすべての初期化が実行されます。次に、setup_arch は、rest_init に達するまで、メモリ割り当て、スケジューリング、ファイル キャッシュといったカーネル サービスなど、earlycon および複数のサブシステムを初期化します。kernel_initdo_basic_setup を実行し、ファイル システム内の init の呼び出しを試みます。これにより、現在のカーネル スレッドが init プロセスに変更されます。この時点で問題が発生した場合、ファイル システムを見つけることができない、またはマウントできない可能性があります。PetaLinux で Linux プロジェクトが作成された場合、PetaLinux のコンフィギュレーションでファイル システムを確認できます。

問題がカーネルの初期化で発生した場合、ブート ログで各サブシステムを追跡して、カーネルのブート問題をデバッグできます。詳細は、PetaLinux イメージ デバッグ シリーズ: Vitis で Linux カーネルをデバッグする方法を参照してください。