Linuxカーネルの開発方法を学びます。このインストラクター主導のコースでは、Linuxの設計方法、カーネルを開発するための基本的な方法、およびLinux開発者コミュニティと効率的に連携する方法について学びます。 Linuxカーネルについて学ぶことに興味がある場合は、これがこのテーマの最も確実なコースです。
Linux Kernel Internals and Development (LFD420)
- 対象受講者
- Linux Foundation
-著作権および機密情報なし
- Linux Foundationが提供するトレーニング
- 認定プログラムおよびデジタルバッジ
- Linuxディストリビューション
- プラットフォーム
- システムの準備
-仮想マシンの使用とダウンロード
- Linux とオープン ソース プロジェクトの進化の影響
- ドキュメントとリンク
-カーネルバージョン
-カーネルソースとgitの使用
- 演習
-コードがどこから来ているかを知る:DCOとCLA
- メインラインの近くでセキュリティと品質を保つ
- プロジェクトのDNAを研究して理解する
- スクラッチするべき部分を見つけ出す
- メンテナーおよび彼らのワークフローやメソッドを特定する
- 早い段階で意見を訊き、オープンに作業する
- 大きなコード ダンプではなく、差分のコードをコントリビュートする
- エゴはドアに置いておいてください。
- 忍耐強く、長期的な関係を築き、助けの手を差し伸べよう
-モノリシックカーネルとマイクロカーネル
-オブジェクト指向メソッド
-メインカーネルコンポーネント
-ユーザースペースとカーネルスペース
-タスク構造
-メモリ割り当て
-ユーザースペースとカーネルスペース間でのデータの転送
-オブジェクト指向の継承-一種の
-リンクリスト
-文字列から数値への変換
-ジフィー
- 演習
-ささいな例
-モジュールのコンパイル
-モジュールと組み込み
-モジュール ユーティリティ
-自動モジュールロード
-モジュール使用回数
-モジュール構造
-モジュールライセンス
-シンボルのエクスポート
-シンボルの解決**
- 演習
-プロセスコンテキスト
-カーネルプリエンプション
-リアルタイムプリエンプションパッチ
-動的カーネルパッチ
-実行時の代替案**
-新しいプラットフォームへの移植**
- 演習
-システムブート
-組み込みシステム用のDasU-Boot **
-カーネルの起動
-カーネルブラウザ
-カーネル構成ファイル
-カーネル構築とMakefiles
--initrdおよびinitramfs
- 演習
-利用可能なシステムコール
-システムコールの実装方法
-新しいシステムコールの追加
- 演習
--kernel-doc **
-一般的なカーネルルーチンとメソッドの使用
-カーネルパッチの作成
-まばら
-possible()とlikely()の使用
-ポータブルコードの記述、CPU、32/64ビット、エンディアン
-SMPの作成
-ハイメモリシステム向けの書き込み
- パワー管理
-セキュリティを念頭に置いて
-ユーザースペースヘッダーとカーネルスペースヘッダーの混合**
- 演習
-不可分操作
-ビット演算
-スピンロック
-Seqlocks
-プリエンプションの無効化
-ミューテックス
-セマフォ
-完了関数
-リードコピーアップデート(RCU)
-参照カウント
- 演習
-プロセッサ親和性
-CPUSETS
- SMP アルゴリズム - スケジューリング、ロックなど
-CPUごとの変数**
- 演習
- task_struct
-ユーザープロセスとスレッドの作成
-カーネルスレッドの作成
-プロセスとスレッドの破棄
-カーネル内からユーザースペースプロセスを実行する
- 演習
-機能
- 演習
-トレースとプロファイリング
-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ディストリビューションの経験は役に立ちますが、厳密には必要ありません。