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

Linux Kernel Modules (LFWS308)

Linuxカーネルを自信を持って操作するために必要な専門知識を習得します。カーネルモジュールを安全にビルド、ロード、管理する方法を学びます。このコースでは、ドライバー、低レベルサービス、そして安定した高性能なLinuxシステムの保守を担当するエンジニアに不可欠なスキルを習得します。

対象者

ユーザー空間を超えて Linux カーネルを直接操作し、ドライバー、低レベル サービス、およびその他のシステム レベル ソフトウェア用のロード可能なモジュールを構築したいシステム開発者およびソフトウェア開発者向けです。
折りたたむ 続きを読む
学習内容

Linuxカーネルモジュールの仕組みと、実稼働システムにおいて適切なソリューションとなるケースを理解します。カーネル空間とユーザー空間の違い、必要なモジュールエントリポイントを確認し、カスタムカーネルモジュールの構築、署名、読み込み、デバッグ、操作といった実践的な経験を積むことができます。
折りたたむ 続きを読む
身につく知識

カーネルレベルの作業が業務の一部となる、高度なLinuxシステムロールへの準備を整えましょう。安定性と稼働時間が重要となる本番環境で、ドライバーや低レベルサービスをサポートしながら、カーネルモジュールを安全に構築・管理するためのスキルを身につけましょう。
折りたたむ 続きを読む
おもなテーマ
すべて展開
すべて折りたたむ
はじめに
- 目的
- 対象受講者
- The Linux Foundation
-著作権および機密情報なし
- Linux Foundationトレーニング
- 認定プログラムおよびデジタルバッジ
- Linux Foundation THRIVE-ONE サブスクリプション
- Linuxディストリビューション
- プラットフォーム
- システムの準備
-仮想マシンの使用とダウンロード
- Linux とオープン ソース プロジェクトの進化の影響
- ドキュメントとリンク
カーネルモジュールの概要
オペレーティングシステムは何をするものですか?
- 補足:追加の保護リング
- 仮想メモリ
- ページテーブルの概念図
- プロセスコンテキスト切り替え
- 仮想メモリのパフォーマンスコスト
- 仮想メモリレイアウト
- Linuxメモリマップ:32ビット
- Linuxメモリマップ:64ビット
- プロセス間コンテキストスイッチ
- ユーザーモード/スペース制限
- ユーザーモードはカーネルモードとどのように相互作用しますか?
- まとめ
- 演習
OSSプロジェクトでの作業方法**
- 適切に貢献するには
-コードがどこから来ているかを知る:DCOとCLA
- メインラインの近くでセキュリティと品質を保つ
- プロジェクトのDNAを研究して理解する
- スクラッチするべき部分を見つけ出す
- メンテナーおよび彼らのワークフローやメソッドを特定する
- 早い段階で意見を訊き、オープンに作業する
- 大きなコード ダンプではなく、差分のコードをコントリビュートする
- エゴはドアに置いておいてください。
- 忍耐強く、長期的な関係を築き、助けの手を差し伸べよう
カーネルモジュールの概要
カーネルモジュールとは何ですか?
カーネルモジュールは何のために使用されるのですか?
- カーネルモジュールの代替案
- セキュリティ上の懸念
- カーネルモジュール署名
- カーネルモジュール署名
署名付きカーネルモジュールは必須ですか?
汚染された種子
- まとめ
- 演習
カーネルモジュールの構築
- カーネルモジュールの構築方法
- カーネルヘッダーファイルのインストール
- インストールを確認する
- カーネルモジュールの構造
- サンプルコード
- カーネルモジュールのコンパイル
- カーネルモジュールのインストール方法
- モジュールの動作確認
汚染された種子
- カーネルモジュールパラメータ
- サンプルパラメータコード
- パラメータの操作
- まとめ
- 演習
ユーザー空間とのインタラクション
- ユーザーとカーネル間の相互作用
- カーネルとユーザー間のインタラクションにおける課題
- インターフェースの比較
- procfs
-sysfs
- モジュールパラメータ
- ioctl
- struct file_operations
- 典型的なカーネルモジュール間の相互作用
- まとめ
- 演習
最後に
- 評価サーベイ

前提条件
知識/スキルの前提条件:
学生は Linux と C プログラミングに精通している必要があります。

ラボ環境の前提条件:
ラボはクラウド仮想マシン(AWS EC2など)またはスタンドアロンマシンで実行できます。ラボの実行にはUbuntu 24.04の使用が推奨されます。