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

Linux Kernel Internals and Development (LFD420)

Linuxカーネルの開発方法を学びます。このインストラクター主導のコースでは、Linuxの設計方法、カーネルを開発するための基本的な方法、およびLinux開発者コミュニティと効率的に連携する方法について学びます。 Linuxカーネルについて学ぶことに興味がある場合は、これがこのテーマの最も確実なコースです。

対象者

このコースは、経験豊富なプログラマーがLinuxカーネルをしっかりと理解できるように作られています。学生は、Cプログラミング言語、ls、grep、tarなどの基本的なLinux(UNIX)ユーティリティに習熟し、利用可能なテキストエディタ(emacs、viなど)に慣れている必要があります。
少なく読む 続きを読む
学習内容

このコースでは、Linuxの構築方法、カーネルアルゴリズムの仕組み、ハードウェアとメモリの管理、モジュール化手法とデバッグ、カーネル開発者コミュニティの操作方法、およびLinuxを効率的に使用する方法などについて学びます。
少なく読む 続きを読む
身につく知識

Linuxカーネルの背後にある理論と哲学、およびLinuxカーネルコードを開発してデバッグする能力について詳細に理解することで、このコースを終了します。
少なく読む 続きを読む
おもなテーマ
すべて展開
すべて折りたたむ
はじめに
- 目的
- あなたについて
- The Linux Foundation
-著作権および機密情報なし
- Linux Foundationトレーニング
- 認証プログラムとデジタル バッジ
- Linuxディストリビューション
- プラットフォーム
- システムの準備
-仮想マシンの使用とダウンロード
- Linuxにおける変化
- ドキュメントとリンク
準備
- プロシージャ
-カーネルバージョン
-カーネルソースとgitの使用
- 演習
OSSプロジェクトでの作業方法**
- 適切に貢献するには
- メインラインの近くでセキュリティと品質を保つ
- プロジェクトのDNAを研究して理解する
- スクラッチするべき部分を見つけ出す
- メンテナーおよび彼らのワークフローやメソッドを特定する
- 早い段階で意見を訊き、オープンに作業する
- 大きなコード ダンプではなく、差分のコードをコントリビュートする
- エゴを捨てよう。敏感にならないように。
- 忍耐強く、長期的な関係を築き、助けの手を差し伸べよう
カーネルアーキテクチャI
-UNIXおよびLinux **
-モノリシックカーネルとマイクロカーネル
-オブジェクト指向メソッド
-メインカーネルコンポーネント
-ユーザースペースとカーネルスペース
カーネルプログラミングプレビュー
-エラー番号とカーネル出力の取得
-タスク構造
-メモリ割り当て
-ユーザースペースとカーネルスペース間でのデータの転送
-オブジェクト指向の継承-一種の
-リンクリスト
-文字列から数値への変換
-ジフィー
- 演習
モジュール
-モジュールとは何ですか?
-ささいな例
-モジュールのコンパイル
-モジュールと組み込み
-モジュールユーティリティ
-自動モジュールロード
-モジュール使用回数
-モジュール構造
-モジュールライセンス
-シンボルのエクスポート
-シンボルの解決**
- 演習
カーネルアーキテクチャII
-プロセス、スレッド、およびタスク
-プロセスコンテキスト
-カーネルプリエンプション
-リアルタイムプリエンプションパッチ
-動的カーネルパッチ
-実行時の代替案**
-新しいプラットフォームへの移植**
- 演習
カーネルの初期化
-システム初期化の概要
-システムブート
-組み込みシステム用のDasU-Boot **
-カーネルの起動
カーネルの構成とコンパイル
-カーネルソースのインストールとレイアウト
-カーネルブラウザ
-カーネル構成ファイル
-カーネル構築とMakefiles
--initrdおよびinitramfs
- 演習
システムコール
-システムコールとは何ですか?
-利用可能なシステムコール
-システムコールの実装方法
-新しいシステムコールの追加
- 演習
カーネルスタイルと一般的な考慮事項
-コーディングスタイル
--kernel-doc **
-一般的なカーネルルーチンとメソッドの使用
-カーネルパッチの作成
-まばら
-possible()とlikely()の使用
-ポータブルコードの記述、CPU、32/64ビット、エンディアン
-SMPの作成
-ハイメモリシステム向けの書き込み
- パワー管理
-セキュリティを念頭に置いて
-ユーザースペースヘッダーとカーネルスペースヘッダーの混合**
- 演習
競合状態と同期方法
-並行性と同期の方法
-不可分操作
-ビット演算
-スピンロック
-Seqlocks
-プリエンプションの無効化
-ミューテックス
-セマフォ
-完了関数
-リードコピーアップデート(RCU)
-参照カウント
- 演習
SMPとスレッド
-SMPカーネルとモジュール
-プロセッサ親和性
-CPUSETS
-SMPアルゴリズム-スケジューリング、ロックなど
-CPUごとの変数**
- 演習
プロセス
-プロセスとは何ですか?
-タスク構造体
-ユーザープロセスとスレッドの作成
-カーネルスレッドの作成
-プロセスとスレッドの破棄
-カーネル内からユーザースペースプロセスを実行する
- 演習
プロセスの制限と機能**
-プロセス制限
-機能
- 演習
監視とデバッグ
-Debuginfoパッケージ
-トレースとプロファイリング
-sysctl
-SysRqキー
--oopsメッセージ
-カーネルデバッガー
--debugfs
- 演習
スケジューリング
-主なスケジューリングタスク
-SMP
-スケジューリングの優先順位
-システムコールのスケジューリング
-2.4のschedule()関数**
-O(1)スケジューラ**
-タイムスライスと優先順位
-負荷分散
-優先順位の逆転と優先度継承**
-CFSスケジューラ
-優先順位とフェアタイムの計算
-クラスのスケジューリング
-スケジューラの詳細
- 演習
メモリアドレッシング
-仮想メモリ管理
-MMUとTLBがあるシステムとないシステム
-メモリアドレス
-高メモリと低メモリ
-メモリゾーン
-特別なデバイスノード
-NUMA
-ページング
-ページテーブル
-ページ構造
-カーネル同じページのマージ(KSM)**
- 演習
巨大なページ
-巨大なページのサポート
--libhugetlbfs
-透明な巨大なページ
- 演習
メモリ割り当て
-ページのリクエストとリリース
- バディシステム
-スラブとキャッシュの割り当て
-メモリプール
--kmalloc()
--vmalloc()
-早期割り当てとbootmem()
-メモリの最適化
- 演習
プロセスのアドレス空間
-ユーザーメモリとアドレススペースの割り当て
-ページのロック
-メモリ記述子とリージョン
- アクセス権
-メモリ領域の割り当てと解放
-ページフォールト
- 演習
ディスクキャッシュとスワッピング
-キャッシュ
-ページキャッシュの基本
-スワッピングとは何ですか?
-スワップエリア
-ページのインとスワッピング
-Swappinessの制御
-スワップキャッシュ
-リバースマッピング**
-OOMキラー
- 演習
デバイスドライバ**
-デバイスの種類
-デバイスノード
-キャラクタードライバー
- 例
- 演習
シグナル
-シグナルとは何ですか?
-利用可能な信号
-信号のシステムコール
-シグアクション
-シグナルとスレッド
-カーネルがシグナルハンドラをインストールする方法
-カーネルがシグナルを送信する方法
-カーネルがシグナルハンドラーを呼び出す方法
-リアルタイム信号
- 演習
まとめと評価サーベイ
- 評価サーベイ

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

Cプログラミング言語、ls、grep、tarなどの基本的なLinux(UNIX)ユーティリティに習熟し、利用可能なテキストエディタ(emacs、viなど)に慣れていること。主要なLinuxディストリビューションの経験は役に立ちますが、厳密には必要ありません。

レビュー
2022年2月
またこのインストラクターと一緒に授業を受けたいと思います。
2022年2月
インストラクターが持っていたトピックに対する知識と情熱のレベルが大好きでした!
2022年2月
インストラクターのLinuxに関する幅広い知識と、このクラスを教えることへの情熱。
2022年2月
フランクはコースの教材に精通していて経験豊富に聞こえますが、これは大きなプラスでした。コース資料は、ソース内のファイルが配置されている場所への「リンク」を提供します。これは、カーネルツリーをナビゲートする方法を学ぶのに非常に役立ちます。
2022年3月
インストラクターが質問に答え、CLIから物事を示し、彼の専門知識と歴史は非常に貴重でした。
2022年3月
インストラクターはコースの教材に非常に精通していました。
2022年3月
インストラクターの幅広い知識が気に入りました。
2022年3月
インストラクターはすべてのトピックをカバーし、カバレッジはまともです。
2022年3月
Linuxについての深い知識を楽しんだ。徹底的に話し合った内部で多くのことが起こっていることに気づきませんでした。
2022年4月
フランク・エドワーズの専門知識は素晴らしく、本当に良いコミュニケーションです。コースの内容も広範で、非常に充実しています。
2022年4月
インストラクターは素晴らしかった。特にすべての参加者がミュートされていて、カメラがオフになっている場合は、ズームで指示するのは簡単ではありません。彼はとても上手だった。
2022年1月
フランクは非常に知識が豊富で親しみやすく、私は彼の教えを本当に楽しんだ。
2022年1月
インストラクターの忍耐力、そして質問に答える意欲。
2022年1月
非常に有益な、ありがとう!
2022年1月
ジョンは、質問に答えるのに馬鹿げたことを感じさせない方法で質問に答えるという素晴らしい仕事をしました。彼は物事を明確に説明しているので、明らかにLinuxについて深い知識を持っています。また、一日の始まりのジョークは楽しかったです。このクラス全体は、全体的に素晴らしい経験でした。将来はもっとコースを受講したいです。
2022年1月
ジョンは優秀なインストラクターでした。彼は素晴らしいユーモアのセンスを持っており、この仮想体験をより活気のあるものにしました。このコースを直接受講できたらいいのにと思います。
2022年1月
インストラクターが使用したホワイトボードは、私が資料をよりよく理解するのに役立ちました。それを続けてください。
2022年1月
実践的な演習、および理解しようとするのではなく、カーネルについて誰かに質問する機能。検索エンジンでの質問の適切な表現。
2022年1月
カーネルは私にとってブラックボックスでしたが、このコースは私がそれについて多くを理解するのに役立ちました。今、私はそれを自分の利益のためにどのように修正できるかを知っています。それは私のキャリアにおいて私を大いに助けてくれました。 LinuxFoundationの他のコースにサインアップするのを楽しみにしています。
2022年1月
全体的に良い構造で、両方の世界の長所のように感じられ、仮想化からリラックスしましたが、それにもかかわらず、コースに非常に関与していると感じました。
2022年1月
インストラクターはカーネルについて非常に深い知識を持っており、彼の経験を利用して、カーネル内で不明瞭で把握しにくいことを指摘することができました。
2022年1月
コースの内容、ラボ、そして少なくともインストラクター。彼は非常に知識が豊富で、時間の制約のバランスを取りながら、セッション全体を存続させることに成功したという点で優れた教師です。時折のジョークはさわやかでした。
2022年1月
生徒の資料は素晴らしく、先生も素晴らしかったです。
2022年1月
メモリ管理に関するセクション、およびcpusetなどとのアフィニティを設定する方法。
2022年1月
以前に学んだことに加えて、たくさんの新しい情報。教材は参考書として使用できるように構成されています。
2022年1月
インストラクターの概念を説明する方法、およびトレーニング中にカバーされた資料は素晴らしいです。
2022年1月
全体的に素晴らしいコースです!
2022年1月
ジョンは素晴らしいインストラクターです。ありがとう!
2022年1月
インストラクターのソフトスキル-コース/インストラクターが威圧的な科目をより親しみやすくしたと感じています-正解のあるよく考えられたラボも利用できました。
2022年1月
インストラクターは資料を非常によく読みました。コースの資料自体は多くのトピックをカバーしていますが、十分な深さもあります。
2022年1月
ラボは素晴らしく、学生の質問に答える際のインストラクターからのフィードバックは素晴らしかった。
2022年1月
非常に魅力的です。プレゼンテーションと図は、資料をより理解しやすくするために多くのことを行いました。
2021年4月
Windowsカーネル開発のバックグラウンドを持っている人として、私が最も気に入ったのは、Linuxカーネルアーキテクチャ/コンポーネントの概要と、そのコードの記述と環境に慣れることでした。
2021年3月
これはLinuxFoundationでの初めてのトレーニング経験であり、私の期待を上回りました。資料は最新のものであり、十分に提示されていました。ブラボー!