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

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

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

身につく知識
Linuxカーネルについて十分に理解した上で、このコースを終了します。デバッグ手法とツール。
少なく読む
続きを読む

- あなたについて
- The Linux Foundation
-著作権および機密情報なし
- Linux Foundationトレーニング
- 認証プログラムとデジタル バッジ
- Linuxディストリビューション
- プラットフォーム
- システムの準備
-仮想マシンの使用とダウンロード
- Linux とオープン ソース プロジェクトの変化
- ドキュメントとリンク

-カーネルバージョン
-カーネルソースとgitの使用
- 演習

-コードがどこから来ているかを知る:DCOとCLA
- メインラインの近くでセキュリティと品質を保つ
- プロジェクトのDNAを研究して理解する
- スクラッチするべき部分を見つけ出す
- メンテナーおよび彼らのワークフローやメソッドを特定する
- 早い段階で意見を訊き、オープンに作業する
- 大きなコード ダンプではなく、差分のコードをコントリビュートする
- エゴを捨てよう。敏感にならないように。
- 忍耐強く、長期的な関係を築き、助けの手を差し伸べよう

-ユーザースペースとカーネルスペース
-システムコールとは何ですか?
-利用可能なシステムコール
-スケジューリングアルゴリズムとタスク構造
-プロセスコンテキスト
- 演習

- セキュリティの種類
- 脆弱性
- 保護層
- ソフトウェアの悪用
- 演習

-非推奨
-BUG()およびBUG ON()
-kmalloc()の計算されたサイズ
-単純なstrtol()ファミリのルーチン
--strcpy()、strncpy()、strlcpy()
--printk()%pフォーマット指定子
-可変長配列
-スイッチケースのフォールスルー
-構造体のゼロ長および1要素配列

- 構造ランダム化の仕組み
- 構造の初期化
- オプトイン vs オプトアウト
- 部分ランダム化
- 構造ランダム化の有効化
- 構造のランダム化によるツリー外モジュールの構築

-随意アクセス制御(DAC)
-POSIX ACL
-POSIX機能
-名前空間
-Linuxセキュリティモジュール(LSM)
-Netfilter
-暗号化手法
-カーネル自己保護プロジェクト


- セキュア ブート x86
- エンベデッド システム セキュア ブート
- 演習

- 署名の基本
- モジュール署名キー
- モジュール署名検証の有効化
- 使い方
- 署名モジュール
- 演習

- 概念操作
- 操作モード
・コレクトモード(コレクト&ストア)
- ロギングモード (評価と監査)
・強化モード(鑑定&プロテクト)
- 拡張検証モジュール (EVM)
- 演習

-LSMの基本
-LSMの選択
-LSMのしくみ
- LSM の例: yama

--SELinuxの概要
-SELinuxモード
-SELinuxポリシー
-コンテキストユーティリティ
-SELinuxおよび標準コマンドラインツール
-SELinuxコンテキストの継承と保存**
--restorecon **
--semanage fcontext **
-SELinuxブール値の使用**
--getseboolとsetsebool **
-トラブルシューティングツール
- 演習

-ステータスの確認
-モードとプロファイル
-プロファイル
-ユーティリティ

- ロックダウンモード
- ロックダウンされているものは何ですか?
- 使い方
- いくつかのメモ
- 演習

-Netfilterフック
-Netfilterの実装
-Netfilterに接続する
--Iptables
-nftables
- 演習

-ネットリンクソケットを開く
--netlinkメッセージ
- 演習

-トレースとプロファイリング
-sysctl
-SysRqキー
--oopsメッセージ
-カーネルデバッガー
--debugfs
- 演習

-printkのフォーマット指定子
-ハッシュポインタなしコマンドラインオプション
-初期のprintkを使用する
- 演習

-エントリの作成と削除
-エントリの読み取りと書き込み
-seqファイルインターフェイス**
- 演習

-kretprobes
--SystemTap **
- 演習

--ftrace、trace-cmd、kernelshark
-利用可能なトレーサー
-ftraceの使用
-トレースディレクトリ内のファイル
-トレースオプション
-trace printk()を使用した印刷
-トレースマーカー
-バッファのダンプ
--trace-cmd
- 演習

-パフォーマンス統計
-パフォーマンスリスト
-パフォーマンスレコード
-パフォーマンスレポート
-パフォーマンスアノテーション
-パフォーマンストップ
- 演習

-eBPF
-インストール
--bccツール
--bpftrace
- 演習

-メインコマンド
- 演習

-カーネル構成
--kexec-tools
-kexecを使用する
- 演習

- 演習

-エミュレートされたアーキテクチャ
-画像フォーマット
-サードパーティのハイパーバイザー統合
- 演習

-kdb
--qemu + gdb
-kgdb:ハードウェア+シリアル+ gdb
- 演習


-モノリシックカーネルとマイクロカーネル
-オブジェクト指向メソッド
-メインカーネルコンポーネント
-ユーザースペースとカーネルスペース

-タスク構造
-メモリ割り当て
-ユーザースペースとカーネルスペース間でのデータの転送
-オブジェクト指向の継承-一種の
-リンクリスト
-ジフィー
- 演習

-ささいな例
-モジュールのコンパイル
-モジュールと組み込み
-モジュールユーティリティ
-自動モジュールロード
-モジュール使用回数
-モジュールライセンス
-シンボルのエクスポート
-シンボルの解決**
- 演習

-カーネルプリエンプション
-リアルタイムプリエンプションパッチ
- 演習

-カーネルブラウザ
-カーネル構成ファイル
-カーネル構築と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を取得した経験と同等の経験がある。
クラスを開始する前に、受講前の準備資料が提供されます。
2022年11月
ジョンは非常によく準備されていて、とてもフレンドリーで、どんな質問にも簡単に答えることができました.全体的に、素晴らしいコースです!
2022年11月
初期のデバッグ ラボには、どのように構成されているかを確認するために変更できる良い例がありました。事前に構築された VM は命の恩人でした。
2022年11月
このクラスでは、カーネルの開発と調整に関連するさまざまなツールとテクニックに気づきました。
2022年11月
多くのデバッグとセキュリティの話題を比較的簡単に概観できた素晴らしい内容でした。それぞれの味を十分に提供してくれたので、私たちがやっていることにどれが役立つかを判断でき、少なくとも役立つものを使い始めることができるはずの十分な紹介でした.
2022年11月
ジョンが最初にどのトピックが最も興味を持っているかを判断し、次にそれらのトピックに焦点を当てたことを楽しんでいました.これにより、私たちのほとんどが本当に関心を持っていたデバッグのための時間が増えました。
2022年11月
トレーニングは PDF 形式になっているため、不明な点があれば後で説明できます。
2022年11月
原則として、カバーされるトピックは非常に徹底しており、インストラクターは明らかに非常に知識が豊富です。
2022年11月
コースの教材は良いです。
2022年11月
インストラクターのモーニング ジョークと気質を楽しみ、クラスに参加することを楽しみました。素晴らしいインストラクター!
2022年11月
ラボのセットアップ/インストールに問題があった場合は、講師が構成済みのマシンでクラスにデモを提供してくれたのが気に入りました。
2022年11月
便利なラボ。私は常に実践的な部分からよりよく学びます。
2022年11月
非常に興味深いトレーニングです。ジョンは自分のトピックを確実に知っており、非常によく明確に説明しています。
2022年11月
多くの有用なことを学びました、ジョンに感謝します。
2022年11月
内容は現実的で、夢中にさせ、深く、ジョンは物事を説明する優れた方法を持っていました.
2022年11月
準備が整っていたので、カーネルのコードを書く必要があるラボや、デバッグ演習を行うラボが気に入りました。