トレーニング > Linuxカーネル開発 > Linuxカーネルのデバッグとセキュリティ(LFD440)
インストラクター主導のコース

Linux Kernel Debugging and Security (LFD440)

このインストラクター主導のコースでは、カーネルのデバッグと監視に使用される重要なツール、およびセキュリティ機能の実装と制御の方法に焦点を当てています。

対象者

このコースは、Linuxカーネルのメソッドと内部インフラストラクチャを理解する必要がある経験豊富な開発者を対象としています。
少なく読む 続きを読む
学習内容

この4日間のコースには、Linuxカーネルコードの開発とデバッグに必要なツールを提供するために設計された広範な実践的な演習とデモンストレーションが含まれています。
少なく読む 続きを読む
身につく知識

Linuxカーネルについて十分に理解した上で、このコースを終了します。デバッグ手法とツール。
少なく読む 続きを読む
おもなテーマ
すべて展開
すべて折りたたむ
前書き
-目的
-あなたは誰ですか
-Linux Foundation
-LinuxFoundationトレーニング
-認証プログラムとデジタルバッジ
-Linuxディストリビューション
-プラットフォーム
-システムの準備
-仮想マシンの使用とダウンロード
-Linuxでは状況が変わります
-ドキュメントとリンク
予選
-手順
-カーネルバージョン
-カーネルソースとgitの使用
OSSプロジェクトでの作業方法**
-適切に貢献する方法の概要
-セキュリティと品質のためにメインラインの近くにとどまる
-プロジェクトのDNAを研究して理解する
-スクラッチしたいかゆみを把握する
-メンテナとそのワークフローおよび方法を特定する
-早期の入力を取得し、オープンで作業する
-大きなコードダンプではなく、インクリメンタルビットを提供する
-あなたの自我をドアに残してください:痩せてはいけません
-辛抱強く、長期的な関係を築き、助けになりましょう
カーネル機能
-カーネルのコンポーネント
-ユーザースペースとカーネルスペース
-システムコールとは何ですか?
-利用可能なシステムコール
-スケジューリングアルゴリズムとタスク構造
-プロセスコンテキスト
-ラボ
監視とデバッグ
-Debuginfoパッケージ
-トレースとプロファイリング
-sysctl
-SysRqキー
--oopsメッセージ
-カーネルデバッガー
--debugfs
-ラボ
procファイルシステム**
-procファイルシステムとは何ですか?
-エントリの作成と削除
-エントリの読み取りと書き込み
-seqファイルインターフェイス**
-ラボ
kprobes
-kprobes
-kretprobes
--SystemTap **
-ラボ
Ftrace
-ftraceとは何ですか?
--ftrace、trace-cmd、kernelshark
-利用可能なトレーサー
-ftraceの使用
-トレースディレクトリ内のファイル
-トレースオプション
-trace printk()を使用した印刷
-トレースマーカー
-バッファのダンプ
--trace-cmd
-ラボ
性能
-パフォーマンスとは何ですか?
-パフォーマンス統計
-パフォーマンスリスト
-パフォーマンスレコード
-パフォーマンスレポート
-パフォーマンスアノテーション
-パフォーマンストップ
-ラボ
eBPF
-BPF
-eBPF
-インストール
--bccツール
--bpftrace
-ラボ
クラッシュ
-クラッシュ
-メインコマンド
-ラボ
カーネルコアダンプ
-カーネルコアダンプの生成
-kexec
-カーネルコアダンプの設定
-ラボ
仮想化**
-仮想化とは何ですか?
-仮想化の輪
-ハイパーバイザー
QEMU
-QEMUとは何ですか?
-エミュレートされたアーキテクチャ
-画像フォーマット
-サードパーティのハイパーバイザー統合
-ラボ
Linuxカーネルデバッグツール
-Linuxカーネル(組み込み)ツールとヘルパー
-kdb
--qemu + gdb
-kgdb:ハードウェア+シリアル+ gdb
-ラボ
組み込みLinux **
-組み込みおよびリアルタイムオペレーティングシステム
-なぜLinuxを使うのですか?
-小さなLinux環境を作る
-リアルタイムLinux
通知者**
-通知機能とは何ですか?
-データ構造
-コールバックと通知
-通知チェーンの作成
-ラボ
CPU周波数スケーリング**
-周波数と電圧のスケーリングとは何ですか?
-通知機能
- 運転手
-知事
-ラボ
Netlinkソケット**
-netlinkソケットとは何ですか?
-ネットリンクソケットを開く
--netlinkメッセージ
-ラボ
Linuxカーネルセキュリティの概要
-Linuxカーネルセキュリティの基本
-随意アクセス制御(DAC)
-POSIX ACL
-POSIX機能
-名前空間
-Linuxセキュリティモジュール(LSM)
-Netfilter
-暗号化手法
-カーネル自己保護プロジェクト
Linuxセキュリティモジュール(LSM)
-Linuxセキュリティモジュールとは何ですか?
-LSMの基本
-LSMの選択
-LSMのしくみ
-LSMの例:Tomoyo
SELinux
-SELinux
--SELinuxの概要
-SELinuxモード
-SELinuxポリシー
-コンテキストユーティリティ
-SELinuxおよび標準コマンドラインツール
-SELinuxコンテキストの継承と保存**
--restorecon **
--semanage fcontext **
-SELinuxブール値の使用**
--getseboolとsetsebool **
-トラブルシューティングツール
-ラボ
AppArmor
-AppArmorとは何ですか?
-ステータスの確認
-モードとプロファイル
-プロファイル
-ユーティリティ
ネットフィルター
-netfilterとは何ですか?
-Netfilterフック
-Netfilterの実装
-Netfilterに接続する
--Iptables
-ラボ
仮想ファイルシステム
-仮想ファイルシステムとは何ですか?
-利用可能なファイルシステム
-特別なファイルシステム
-tmpfsファイルシステム
-ext2 / ext3ファイルシステム
-ext4ファイルシステム
-btrfsファイルシステム
-一般的なファイルモデル
-VFSシステムコール
-ファイルとプロセス
-ファイルシステムのマウント
ユーザースペースのファイルシステム(FUSE)**
-FUSEとは?
-ファイルシステムの作成
-ラボ
ジャーナリングファイルシステム**
-ジャーナリングファイルシステムとは何ですか?
-利用可能なジャーナリングファイルシステム
-対照的な機能
-ラボ
Closing and Evaluation Survey
-評価調査
カーネルアーキテクチャI
-UNIXおよびLinux **
-モノリシックカーネルとマイクロカーネル
-オブジェクト指向メソッド
-メインカーネルタスク
-ユーザースペースとカーネルスペース
カーネルプログラミングプレビュー
-エラー番号とカーネル出力の取得
-タスク構造
-メモリ割り当て
-ユーザースペースとカーネルスペース間でのデータの転送
-リンクリスト
-ジフィー
-ラボ
モジュール
-モジュールとは何ですか?
-ささいな例
-モジュールのコンパイル
-モジュールと組み込み
-モジュールユーティリティ
-自動モジュールロード
-モジュール使用回数
-モジュールライセンス
-シンボルのエクスポート
-シンボルの解決**
-ラボ
カーネルアーキテクチャII
-プロセス、スレッド、およびタスク
-カーネルプリエンプション
-リアルタイムプリエンプションパッチ
-ラボ
カーネルの構成とコンパイル
-カーネルソースのインストールとレイアウト
-カーネルブラウザ
-カーネル構成ファイル
-カーネル構築とMakefiles
--initrdおよびinitramfs
-ラボ
カーネルスタイルと一般的な考慮事項
-コーディングスタイル
-一般的なカーネルルーチンとメソッドの使用
-カーネルパッチの作成
-まばら
-possible()とlikely()の使用
-ポータブルコードの記述、CPU、32/64ビット、エンディアン
-SMPの作成
-ハイメモリシステム向けの書き込み
- パワー管理
-セキュリティを念頭に置いて
-ラボ
競合状態と同期方法
-並行性と同期の方法
-不可分操作
-ビット演算
-スピンロック
-Seqlocks
-プリエンプションの無効化
-ミューテックス
-セマフォ
-完了関数
-リードコピーアップデート(RCU)
-参照カウント
-ラボ
メモリアドレッシング
-仮想メモリ管理
-MMUとTLBがあるシステムとないシステム
-メモリアドレス
-高メモリと低メモリ
-メモリゾーン
-特別なデバイスノード
-NUMA
-ページング
-ページテーブル
-ページ構造
-ラボ
メモリ割り当て
-ページのリクエストとリリース
- バディシステム
-スラブとキャッシュの割り当て
-メモリプール
--kmalloc()
--vmalloc()
-早期割り当てとbootmem()
-メモリの最適化
-ラボ

**
これらのセクションは、一部または全体をオプションと見なすことができます。これらには、背景の参照資料、専門トピック、または高度な主題が含まれています。講師は、クラスルームの経験と時間の制約に応じて、それらをカバーするかしないかを選択できます。
前提条件
このコースを最大限に活用するには、次のことを行う必要があります。

  • Cプログラミング言語に精通している。
  • ls、grep、tarなどの基本的なLinux(UNIX)ユーティリティに精通している。
  • 利用可能なテキストエディタ(emacs、viなど)を快適に使用できます。
  • 主要なLinuxディストリビューションの経験は役立ちますが、必ずしも必要ではありません。
  • LFD420:Linux Kernel Internals and Developmentを取得した経験と同等の経験があります。

クラスの前に、クラス前の準備資料が提供されます。

レビュー
2021年11月
Loved the course, and will highly recommend it to my colleagues.
2021年11月
I really liked the breadth of topics covered. I wasn't expecting the debugging and introspection facilities to be so fascinating.
2021年11月
Understanding how kprobes+debugfs fit together opens up a world of possibilities for debugging. I feel like I am prepared now to go and experiment, and write up blogs on side projects!
2021年10月
Behanは素晴らしいです。彼に昇給してください。
2021年10月
Behanは単に素晴らしいです。
2021年10月
ベハン!彼は素晴らしかった。優れた背景コンテキスト、歴史、物事が進んでいる場所、および各トピックを他のトピックに結び付けることで、コースを本当にトップティアにしました。
2021年10月
インストラクターはコンテンツを非常にうまく配信しました。
2021年10月
ベハンは素晴らしいインストラクターでした、彼は本当にコースを素晴らしい経験にしました。
2021年9月
概念を説明する図がありました。
2021年9月
ラボでは、より複雑なトピックのいくつかに取り組みました。
2021年9月
資料は詳細であり、優れたスキルの構築を提供しました。
2021年9月
先生はとても自信があり、落ち着いてフレンドリーな声で話し、関連する質問を説明したり、ファイルをリアルタイムで編集したりすることを恐れていませんでした。
2021年7月
カールは本当に良いインストラクターです!
2021年7月
以前はユーザースペースアプリケーションでしか実行できなかった方法で、カーネルの低レベルの問題をデバッグおよび分析できるようになりました。
2021年7月
これは、以前はキャッチできなかった問題の分析とデバッグに役立ちました。
2021年7月
コースでカバーされているコンテンツは素晴らしいです。
2021年5月
素材は良いです。
2021年3月
私はラボが好きです。
2021年3月
私は今、LFD420とLFD440を受講しました。これらのコースがトピックの概要を提供し、ラボを使用してさらに調査する方法が本当に気に入っています。これは素晴らしいバランスを提供し、さらに自主的な探索への道を提供します。
2021年2月
私はLinuxについて非常に幅広い知識を得て、未知のテクノロジーを紹介されました。
2021年2月
資料のほかに、メンテナについて共有された洞察や、歴史的にどのように物事が起こったのかなどが大好きでした。インストラクターは、優れた、簡潔で、より実用的な説明を頻繁に思い付きました。
2021年2月
トレーニングエイド(仮想マシンなど)は通常どおりに使用されていました。トレーニングを最大限に活用するのに役立ちます。インストラクターは知識が豊富で、実際の経験でトピックを強化するのに役立ちました。 Behanにトレーニングを受けさせていただきありがとうございます。
2021年2月
インストラクターは素晴らしく、とても親切で思いやりがありました。
2021年2月
ラボを一緒に解決し、デモをライブで行います。
2021年2月
コンテンツ、ラボ、トレーナーの専門知識。