トレーニング > 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カーネルコードを開発してデバッグする能力について詳細に理解することで、このコースを終了します。
少なく読む 続きを読む
おもなテーマ
すべて展開
すべて折りたたむ
前書き
-目的
-あなたは誰ですか
-Linux Foundation
-LinuxFoundationトレーニング
-認証プログラムとデジタルバッジ
-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キラー
-ラボ
デバイスドライバ**
-デバイスの種類
-デバイスノード
-キャラクタードライバー
- 例
-ラボ
信号
-シグナルとは何ですか?
-利用可能な信号
-信号のシステムコール
-シグアクション
-シグナルとスレッド
-カーネルがシグナルハンドラをインストールする方法
-カーネルがシグナルを送信する方法
-カーネルがシグナルハンドラーを呼び出す方法
-リアルタイム信号
-ラボ
Closing and Evaluation Survey
-評価調査

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

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

レビュー
2021年8月
クラスで共有される明確さと技術的知識の深さ。
2021年8月
ラボは素晴らしく、Behanは非常に理解しやすいものにしました。
2021年8月
教材が好きです。
2021年8月
このコースでは、Linuxカーネルの「内部を見る」ことができ、オペレーティングシステムが抱える問題や解決策の多くを説明できたと思います。追加学習のための多くの有用なウェブサイトと資料が与えられました。私はまだ自分自身を専門家とは考えていませんが、カーネルコードを開発できることを十分に理解していると感じています。
2021年8月
私はインストラクターを楽しんだ。彼はトピックの説明に長けていると感じ、コースに役立つ資料を追加しましたが、それは学生の資料にはありませんでした。
2021年8月
フランクインストラクターは本当に経験豊富です。
2021年8月
フランクの熱意と(特に!)彼のライブデモンストレーション/主題の精緻化が議論されました。
2021年8月
資料は非常に関連性があり、実際に私が期待していたものを正確に提供しました。その本もとても良いです。
2021年8月
講師は非常にインタラクティブで、主題に精通していました。彼はすべての概念を恐ろしい完璧さで説明しました。
2021年8月
インストラクターは彼が何について話しているかを本当に知っています。アイデアは非常に明確に、そして非常に組織化された方法で提示されました。また、インストラクターは、素材の中の物と、彼らが経験した外の世界の実物とを常に結びつけるようにしました。
2021年6月
最近のカーネルを使用すると、この本はよくできていて包括的であるように見えます。プレゼンテーションは、一般的によく構成された、書かれた資料に対する素晴らしい賛辞でした。どうもありがとう、そしてよくできた!
2021年6月
知識を増やし、より効果的にカーネル ドライバーを教えられるようになり、カーネル インターナルをより快適に教えられるようになりました。
2021年6月
インストラクターは、詳細な説明とともに、ラボ演習の解決を支援しました。
2021年5月
インストラクターのフランク・エドワーズは、非常に知識が豊富で、人柄が良かったです。
2021年5月
フランクは本当に素晴らしいインストラクターです!
2021年4月
それは私にそのトピックについての非常に良い知識を与えてくれました。このコースがなかったら、私はこのテーマの研究にもっと多くの時間を費やしていたでしょう。
2021年4月
この本は素晴らしい参考書です。
2021年4月
材料と実験室は本当に良かった。フランクは私たちにLinuxFoundationクラスを教えてくれる素晴らしい仕事をしました。
2021年4月
実際のVMでのインストラクターの例が気に入りました。
2021年4月
トレーニング資料は非常によく準備されていました。提供されたVMノート、ラボ、およびソリューションは、セットアップが簡単であり、環境問題のトラブルシューティングよりもコースの資料に多くの時間が費やされたことを意味します。砕氷船のジョークは、毎日始めるのに良い方法です。
2021年4月
私はこのコースから多くを得ました。インストラクターのジョンは自分のことをはっきりと知っていて、すべてをとてもよく説明しました。
2021年4月
インストラクターは非常に知識が豊富で、コース全体で尋ねられた質問に対して明確で簡潔な回答がありました。コースノートは包括的でよく整理されていました。
2021年4月
Windowsカーネル開発のバックグラウンドを持っている人として、私が最も気に入ったのは、Linuxカーネルアーキテクチャ/コンポーネントの概要と、そのコードの記述と環境に慣れることでした。
2021年4月
インストラクターは落とし穴をナビゲートし、行き詰まった生徒の数を減らします。
2021年4月
素材は素晴らしかった。いくつかの例を見ずに少し迷っていたので、ソリューションを利用できるようにすることは、実際に学習に非常に役立ちました。
2021年4月
後者のラボのいくつかで、自分の情報を探すように強制されるのは本当に楽しかったです。これは、私が覚えていないまま通過した以前のコンテンツのいくつかを固めるのに役立ちました。また、グーグル/ソースコードからこれらの答えを自分で探す練習をするのに役立ちました。
2021年4月
インストラクターはとてもフレンドリーで知識が豊富でした。私は彼のジョークを楽しんだ、そして彼は研究室のためにたくさんの時間を与えた、それは良かった、彼らは有用で有意義だった。
2021年4月
私は最初から技術的な詳細が好きでした。私が感謝したいくつかのことが明らかになりました。
2021年4月
インストラクターは非常に知識が豊富で、尋ねられたすべての質問を明確にするために本当に良い仕事をしました。
2021年4月
インストラクターの知識の深さ、および質問の追加の説明。
2021年3月
フランクは非常に知識が豊富で、このテーマに非常に熱心でした。彼がプレゼンテーションをしている間、エンゲージメントを維持するのは非常に簡単です。
2021年3月
これはLinuxFoundationでの初めてのトレーニング経験であり、私の期待を上回りました。資料は最新のものであり、十分に提示されていました。ブラボー!
2021年3月
たくさんの技術情報、そして参考のための素晴らしい本。
2021年3月
インストラクターも内容も素晴らしかったです。
2021年3月
フランクは優秀なインストラクターです。彼のLinuxカーネルの理解の深さ、およびトピックの説明と質問への回答の明確さは並外れています。また、すべての映画の参照を愛していました!
2021年3月
フランクは非常に知識が豊富で、質問に徹底的に答えています。彼のこっけいなユーモアのセンスは、かなり技術的なことについての長い議論に最適でした。個人的なハイライトは、監視とデバッグ、メモリ管理のスケジューリング、デバイスドライバー、および信号でした。
2021年3月
フランクは非常に明確で、資料をしっかりとカバーし、ペースも良かった。
2021年3月
Linux内部の最も重要な側面を幅広くカバーしています。
2021年3月
インストラクターのフランクはとてもフレンドリーな人で、教えるのが好きなようです。彼はおしゃべりなので、私はたくさん吸収することができました。
2021年3月
私はインストラクターが本当に好きでした、彼は主題についての膨大な知識を持っていました。
2021年3月
インストラクターは非常に有能であり、すべてを詳細に知っています。この資料は非常に便利で、ラボの例とソリューションにより、これからのライブが容易になります。
2021年3月
資料とインストラクターの洞察が気に入りました。
2021年3月
インストラクターは質問に対して非常にオープンで、接線のことについて話しました。つまり、私はその主題について多くを学んだだけでなく、他の主題についても多くの参考資料を得ました。
2021年2月
トレーニング資料、およびラボ演習。
2021年2月
カーネルの基本的な部分、テキストでの適切な説明、およびインストラクターからの適切な説明を学びます。ラボ、特に私が助けを借りずに完成させたラボは、非常に満足のいくものでした。
2021年2月
カーネルの内部に入るのは素晴らしいジャンプポイントのようです。多くの場合、新しいことを学ぶ上で最も難しい部分は、どこから始めればよいか、語彙は何かなどです。このコースではそれを提供します。
2021年2月
メモリ管理とスケジューリングについての理解が深まりました。また、カーネルモジュールを作成するためのすべての練習も気に入りました。
2021年2月
内容、そしてそれのプレゼンテーションは素晴らしかった。
2021年2月
内容は、カーネルの多くの部分の優れた表面レベルの概要でした。カーネル内コンテンツとユーザースペース(サポート)コンテンツが適切に混在していました。
2021年2月
ハンズオンラボは私が学ぶための最良の方法でした。
2021年2月
私は、私がまったく知らなかったカーネルに関することについて多くを学びました。私はやや精通したLinuxユーザーだったので、これは非常に役に立ちました。学習教材と、実際に作業するための演習に感謝します。
2021年2月
短時間で包括的。
2021年1月
私はたくさんの新しいことを学び、今まで表面を引っかいただけだったものについての洞察を得ました。