mcpField
L
linux-kernel-architecture

linux-kernel-architecture

github.com/mohitmishra786開発269343 回インストール18 週間前に更新
リポジトリ

linux-kernel-architecture について

Linux カーネルのソースを調べる開発者向けのアーキテクチャガイドです。起動フロー、主要サブシステム、initcall の順序、ソースの場所を示し、ドライバーやシステムコール、割り込みの追跡に役立ちます。

主な機能

  1. 01カーネル起動フローの概要
  2. 02サブシステムのパスと主要構造体
  3. 03initcall 順序の参照
  4. 04ソースと設定の検索

活用シーン

  1. 01カーネル機能の実装箇所の特定
  2. 02起動から init やドライバープローブまでの追跡
  3. 03システムコールや割り込み経路の追跡

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill linux-kernel-architecture

インストール後、Claude Code で/linux-kernel-architectureを入力して読み込まれたか確認します。

詳細

Linux カーネルアーキテクチャ

目的

Linux カーネルの全体像を把握するための見取り図を提供します。起動シーケンス、主要なサブシステム、重要なデータ構造、ソースコード内で確認すべき場所を解説し、skills/kernel/kernel-internals を補完する、ドライバーやサブシステムの作業向けのアーキテクチャレベルのナビゲーションを提供します。

使用するタイミング

  • 機能やバグの調査で、初めて linux.git を確認するとき
  • 起動処理がどのように init やドライバーの probe に到達するかを理解するとき
  • サブシステムを経由するシステムコールや割り込みを追跡するとき
  • skills/kernel-dev/platform-device-model やドライバー関連スキルに取り組む前のオンボーディング

ワークフロー

1. 起動フロー(x86/ARM64 の簡略版)
firmware/UEFI
├── arch/*/boot — decompress kernel, early setup
├── start_kernel() — mm, scheduler, timers, IRQ subsys
├── rest_init() → kernel_init → run_init_process
└── userspace init (systemd)

ドライバーの module_init/device_initcall は、start_kernel の実行中に init より前に動作します。

2. 主要なサブシステム
サブシステムパス(代表例)主な構造体
スケジューラーkernel/sched/task_struct、sched_entity
メモリmm/struct page、mm_struct、vm_area_struct
VFSfs/inode、dentry、file、super_block
ブロックblock/request_queue、gendisk
ネットワークnet/sk_buff、net_device
ドライバーdrivers/device、device_driver
システムコールkernel/、fs/、mm/SYSCALL_DEFINE*
3. Initcall レベル
/* include/linux/init.h — order matters */
early_initcall → core_initcall → postcore_initcall
→ arch_initcall → subsys_initcall → fs_initcall
→ device_initcall → late_initcall

プラットフォームドライバーは、通常 subsys_initcall または module_init を介して登録されます。

4. コードの探し方
# Locate symbol
grep -rn "platform_driver_register" drivers/

# Trace config
./scripts/config --state CONFIG_FOO

# File hierarchy docs
ls Documentation/admin-guide/
5. エージェントの活用
/linux-kernel-architecture Where does page fault handling live and what calls it?

よくある問題

症状原因解決策
ドライバーの probe が早すぎるInitcall と DT の順序deferred_probe で遅延させます
シンボルが見つからないモジュールとしてビルドされているmodprobe を実行するか、組み込み用の CONFIG_* を指定します
サブシステムが違うdrivers/ に似た名前があるstruct bus_type をたどります
起動時にハングするearly printk が無効earlyprintk、initcall_debug

関連スキル

  • skills/kernel/kernel-internals — スケジューラー、SLUB、VFS の詳細
  • skills/kernel-dev/kernel-memory-management — mm/ の詳細
  • skills/kernel-dev/platform-device-model — ドライバーモデル
  • skills/kernel-dev/device-tree — ハードウェアの記述
  • skills/low-level-programming/linux-kernel-modules — LKM の基礎

コメント