はじめに
本書はLinuxカーネル開発を実践的にハンズオン形式で学ぶための本です。広範囲にわたるLinuxカーネルを理解するために必要な理論的背景も説明します。本書は、強力なカーネルモジュールサブシステムを通じたカーネル開発に焦点を当てています。なぜなら、カーネル関連プロジェクトや製品開発、特にデバイスドライバ開発の大部分はこのサブシステムを使うからです。
本書は3部に分かれています。第Ⅰ部は開発環境構築、最新カーネルのソースコードからのビルド、そして最初のカーネルモジュールの作成という基本的なことを扱います。
第Ⅱ部は本書の主要な部分であり、カーネル内部の詳細を理解するためにあります。Linuxカーネルのアーキテクチャ、タスクの構造、ユーザとカーネルモードのスタック、メモリ管理を扱います。特に重要なメモリ管理は「5章 メモリ管理」で説明します。ここでは内部構造だけではなく、カーネルメモリを効率的に獲得、解放する方法についても述べます。Linux OS上のCPUスケジューリング(あるいはタスクスケジューリング)の内部動作についても述べます。
最後の第Ⅱ部では、高度なカーネル同期メカニズムについて述べます。これはプロダクション向けのLinuxカーネル開発に必須です。
本書で使うカーネルのバージョンはLTSであるv6.1です。このカーネルは2022年12月から2026年12月までバグ修正やセキュリティがされる予定です。さらにCivil Infrastructure Project(CIP)はこのバージョンをSuper LTS(SLTS)リリースとして採用し、2033年8月までの10年間のメンテナンスを予定しています。このため、本書の内容は今後数年間有効な見込みです。
本書はハンズオンを重視しています。本書のGitHubリポジトリは約40個のカーネルモジュール、および、多くのユーザアプリケーションやシェルスクリプトを収録しています。これによって学びが実感できるだけでなく、楽しく、実践的になります。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access