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

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

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

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

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

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

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

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

-トレースとプロファイリング
-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
- 演習

-なぜLinuxを使うのですか?
-小さなLinux環境を作る
-リアルタイムLinux

-データ構造
-コールバックと通知
-通知チェーンの作成
- 演習

-通知機能
- 運転手
-知事
- 演習

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

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

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

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

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

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

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

-利用可能なファイルシステム
-特別なファイルシステム
-tmpfsファイルシステム
-ext2 / ext3ファイルシステム
-ext4ファイルシステム
-btrfsファイルシステム
-一般的なファイルモデル
-VFSシステムコール
-ファイルとプロセス
-ファイルシステムのマウント

-ファイルシステムの作成
- 演習

-利用可能なジャーナリングファイルシステム
-対照的な機能
- 演習


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

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

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

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

-カーネルブラウザ
-カーネル構成ファイル
-カーネル構築と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年2月
非常に知識豊富なインストラクター。
2022年2月
インストラクターは素晴らしく、この分野の多くのストーリーと背景知識を持っていました。彼はテクノロジーにコンテキストを取り入れ、歴史的な理由と意思決定を理解するのに役立ちました。
2022年2月
カーネルの設計の背後にある考え方を見るのは本当に興味深いです。
2022年2月
Behanが資料を提示するのに素晴らしい仕事をしたと感じました。
2021年12月
デバッグの章、特にftraceとperf。
2021年12月
モジュールをロードして実行することによる関連する演習。
2021年12月
このコースは非常に興味深く、いくつかのコアカーネル内部およびデバイスドライバークラスとは異なり、簡単に達成できる、はるかに小規模でわかりやすいラボがあるように見えました。また、各ラボでは、これまで使用したことのないカーネルデバッグまたはセキュリティの領域を強調しました。これはすばらしいことでした。
2021年11月
コースが気に入り、同僚にも強くお勧めします。
2021年11月
カバーされているトピックの幅が本当に気に入りました。私は、デバッグ機能とイントロスペクション機能がそれほど魅力的であるとは思っていませんでした。
2021年11月
kprobes + debugfsがどのように組み合わされるかを理解することで、デバッグの可能性の世界が開かれます。私は今、実験に行き、サイドプロジェクトについてブログを書く準備ができているように感じます!
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月
コンテンツ、ラボ、トレーナーの専門知識。