トレーニング > Linuxカーネル開発 > Linux Kernel Debugging (LFD445)
インストラクター主導のコース

Linux Kernel Debugging (LFD445)

Linux カーネルのデバッグをマスターして、テクノロジー業界で欠かせない人材になりましょう。このコースでは、複雑な問題を解決するスキルを身につけ、新しいキャリアのチャンスを獲得し、チームと会社の両方であなたの価値を高めます。

対象者

このコースは、現在または将来カーネル開発者を目指す人、デバイス ドライバー開発者、および既存のツールや機能を活用して開発サイクルを短縮することに関心のあるすべての人を対象に設計されています。
折りたたむ 続きを読む
学習内容

2 番目のシステムからのリモート デバッグ用にシステム (物理または仮想) を構成し、組み込みのデバッグ フレームワークの基礎となる Linux カーネルの基本コンポーネントを操作することで、ローカル デバッグのテクニックを学習します。
折りたたむ 続きを読む
身につく知識

カーネルの問題をより効率的に診断および修正することで、Linux カーネル開発環境の生産性を向上させます。
折りたたむ 続きを読む
おもなテーマ
すべて展開
すべて折りたたむ
はじめに
- 目的
- 対象受講者
- The Linux Foundation
-著作権および機密情報なし
- Linux Foundationトレーニング
- 認定プログラムおよびデジタルバッジ
- Linux Foundation THRIVE-ONE サブスクリプション
- Linuxディストリビューション
- プラットフォーム
- システムの準備
-仮想マシンの使用とダウンロード
- Linux とオープン ソース プロジェクトの進化の影響
- ドキュメントとリンク
準備
- プロシージャ
-カーネルバージョン
-カーネルソースとgitの使用
-ハードウェア
-ステージングツリー
- 演習
OSSプロジェクトでの作業方法**
- 適切に貢献するには
-コードがどこから来ているかを知る:DCOとCLA
- メインラインの近くでセキュリティと品質を保つ
- プロジェクトのDNAを研究して理解する
- スクラッチするべき部分を見つけ出す
- メンテナーおよび彼らのワークフローやメソッドを特定する
- 早い段階で意見を訊き、オープンに作業する
- 大きなコード ダンプではなく、差分のコードをコントリビュートする
- エゴはドアに置いておいてください。
- 忍耐強く、長期的な関係を築き、助けの手を差し伸べよう
デバッグの概要
デバッグとは何ですか?
- OOPSとパニックメッセージ
- dmesgの出力
- 隠れたエラー
- コースの流れ
OOPSメッセージ
- エラーメッセージとは何ですか?
- エラーを引き起こしたコードを見つける
すべてをまとめる
- 背景 - モジュール **
- 背景 - モジュールコンパイル **
- 背景 - マクロとインライン関数 **
- 実験演習
ソースコード付きのエラーメッセージ
ソースコードなし
- ソースコード付き - コンパイル
- ソースコード付き - 逆アセンブリ
- まとめ
カーネル機能
-カーネルのコンポーネント
-ユーザースペースとカーネルスペース
-システムコールとは何ですか?
-利用可能なシステムコール
-スケジューリングアルゴリズムとタスク構造
-プロセスコンテキスト
- 演習
カーネルプログラミングプレビュー
-タスク構造
-メモリ割り当て
-ユーザースペースとカーネルスペース間でのデータの転送
-オブジェクト指向の継承-一種の
-リンクリスト
-ジフィー
- 演習
カーネルで非推奨のインターフェース
-廃止された理由
- __非推奨
- BUG() と BUG_ON()
-kmalloc()の計算されたサイズ
- simple_strtol() ルーチンのファミリー
--strcpy()、strncpy()、strlcpy()
--printk()%pフォーマット指定子
-可変長配列
-スイッチケースのフォールスルー
-構造体のゼロ長および1要素配列
競合状態と同期方法
-並行性と同期の方法
-不可分操作
-ビット演算
-スピンロック
-Seqlocks
-プリエンプションの無効化
-ミューテックス
- セマフォ
-完了関数
-リードコピーアップデート(RCU)
-参照カウント
- 演習
プロセスのアドレス空間
-ユーザーメモリとアドレススペースの割り当て
-ページのロック
-メモリ記述子とリージョン
- アクセス権
-メモリ領域の割り当てと解放
-ページフォールト
- 演習
Printk
-printkを使用したデバッグ
-printkのフォーマット指定子
- no_hash_pointers コマンドラインオプション
- early_printk を使用する
- 演習
カーネルの初期化
-システム初期化の概要
-システムブート
-組み込みシステム用のDasU-Boot **
-カーネルの起動
監視とデバッグ
-Debuginfoパッケージ
-トレースとプロファイリング
-sysctl
-SysRqキー
--oopsメッセージ
-カーネルデバッガー
--debugfs
- 演習
Ftrace
-ftraceとは何ですか?
--ftrace、trace-cmd、kernelshark
-利用可能なトレーサー
-ftraceの使用
-トレースディレクトリ内のファイル
-トレースオプション
- trace_printk() を使用した印刷
-トレースマーカー
-バッファのダンプ
--trace-cmd
- 演習
カーネルとgitの二分法
カーネル二分法とは何ですか?
二等分法の基礎
- カーネルの二分法をスクリプト化する
- 演習
カーネル開発ツール
- カサン
- KCSAN
- KFENCE
- Kmemleak
- KMSAN
- UBSAN
- まとめ
性能
-パフォーマンスとは何ですか?
-パフォーマンスリスト
-パフォーマンス統計
-パフォーマンスレコード
-パフォーマンスレポート
-パフォーマンスアノテーション
-パフォーマンストップ
- 演習
kprobes
-kprobes
-kretprobes
--SystemTap **
- 演習
eBPF
-BPF
-eBPF
-インストール
--bccツール
--bpftrace
- 演習
QEMU
-QEMUとは何ですか?
-エミュレートされたアーキテクチャ
-画像フォーマット
-サードパーティのハイパーバイザー統合
- 演習
Linuxカーネルデバッグツール
-Linuxカーネル(組み込み)ツールとヘルパー
-kdb
--qemu + gdb
-kgdb:ハードウェア+シリアル+ gdb
- 演習
クラッシュ
-クラッシュ
-メインコマンド
- 演習
カーネルgdbスクリプト
- カーネルgdbスクリプト
- 設定
- コマンド
- 機能
- 演習
kexec
-kexec
-カーネル構成
--kexec-tools
-kexecを使用する
- 演習
カーネルコアダンプ
-カーネルコアダンプの生成と分析
- 演習
最後に
- 評価サーベイ
カーネルアーキテクチャI
-UNIXおよびLinux **
-モノリシックカーネルとマイクロカーネル
-オブジェクト指向メソッド
-メインカーネルコンポーネント
-ユーザースペースとカーネルスペース
システムコール
-システムコールとは何ですか?
-利用可能なシステムコール
-システムコールの実装方法
-新しいシステムコールの追加
- 演習
カーネルスタイルと一般的な考慮事項
-コーディングスタイル
-一般的なカーネルルーチンとメソッドの使用
-カーネルパッチの作成
-まばら
-possible()とlikely()の使用
-ポータブルコードの記述、CPU、32/64ビット、エンディアン
-SMPの作成
-ハイメモリシステム向けの書き込み
- パワー管理
-セキュリティを念頭に置いて
- 演習
procファイルシステム**
-procファイルシステムとは何ですか?
-エントリの作成と削除
-エントリの読み取りと書き込み
- seq_fileインターフェース**
- 演習
統合デバイスモデルとsysfs
-統合デバイスモデル
-基本構造
-実際のデバイス
-sysfs
-ksetとkobjectの例
- 演習

**
これらのセクションは、部分的にまたは全体を
オプションとして考えることができます。これらのセクションには、
背景となる参考資料、専門的なトピック、または高度なテーマが含まれています。
講師は、教室での経験や時間の制約に応じて、
これらをカバーするかしないかを選択することができます。
前提条件
このコースを最大限に活用するために必要な条件:

  • Cプログラミング言語に精通している。
  • ls、grep、tarなどの基本的なLinux(UNIX)ユーティリティに精通している。
  • 利用可能なテキストエディタ(emacs、viなど)を快適に使用できます。
  • 主要なLinuxディストリビューションの経験は役立ちますが、必ずしも必要ではありません。
  • 「Linux カーネルの内部と開発 (LFD420)」を受講したのと同等の経験があること。
実習について
システムには2つ以上のCPUと4GB以上のRAMが必要です。 準備完了.sh スクリプト。利用できるリソースが多いほど、ラボはより高速かつスムーズになります。
レビュー
2025年6月
最近のカーネルに関する最新情報と、すべてが小冊子にコンパクトにまとめられている点が気に入っています。
2025年3月
カーネルの概念とデバッグ ツールのほとんどに精通し、それぞれの概念を深く学びました。
2025年2月
カーネルでのテストに使用されるツールと方法の素晴らしい概要。