linux-kernel-architecture

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Linux Kernel Architecture

Linux内核架构

Purpose

用途

Provide a mental map of the Linux kernel: boot sequence, major subsystems, key data structures, and where to look in source — complementing
skills/kernel/kernel-internals
with architecture-level navigation for driver and subsystem work.
提供Linux内核的思维导图:启动序列、主要子系统、关键数据结构以及源码位置——作为
skills/kernel/kernel-internals
的补充,为驱动和子系统开发提供架构层面的导航支持。

When to Use

使用场景

  • First time exploring
    linux.git
    for a feature or bug
  • Understanding how boot reaches
    init
    and driver
    probe
  • Tracing a syscall or interrupt through subsystems
  • Onboarding before
    skills/kernel-dev/platform-device-model
    or driver skills
  • 首次为开发功能或修复bug探索
    linux.git
  • 理解启动过程如何到达
    init
    以及驱动
    probe
    阶段时
  • 追踪系统调用或中断在各个子系统中的流转时
  • 在学习
    skills/kernel-dev/platform-device-model
    或驱动相关Skill前进行入门学习时

Workflow

工作流程

1. Boot flow (x86/ARM64 simplified)

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)
Driver
module_init
/
device_initcall
run during
start_kernel
before init.
firmware/UEFI
├── arch/*/boot — 解压内核,早期初始化
├── start_kernel() — 内存管理、调度器、定时器、IRQ子系统
├── rest_init() → kernel_init → run_init_process
└── 用户空间初始化(systemd)
驱动的
module_init
/
device_initcall
start_kernel
执行期间、init启动前运行。

2. Major subsystems

2. 主要子系统

SubsystemPath (typical)Key structs
Scheduler
kernel/sched/
task_struct
,
sched_entity
Memory
mm/
struct page
,
mm_struct
,
vm_area_struct
VFS
fs/
inode
,
dentry
,
file
,
super_block
Block
block/
request_queue
,
gendisk
Net
net/
sk_buff
,
net_device
Drivers
drivers/
device
,
device_driver
Syscalls
kernel/
,
fs/
,
mm/
SYSCALL_DEFINE*
子系统典型路径关键结构体
调度器
kernel/sched/
task_struct
,
sched_entity
内存管理
mm/
struct page
,
mm_struct
,
vm_area_struct
VFS
fs/
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 levels

3. Initcall级别

c
/* include/linux/init.h — order matters */
early_initcall → core_initcall → postcore_initcall
→ arch_initcall → subsys_initcall → fs_initcall
→ device_initcall → late_initcall
Platform drivers usually register at
subsys_initcall
or via
module_init
.
c
/* include/linux/init.h — 顺序至关重要 */
early_initcall → core_initcall → postcore_initcall
→ arch_initcall → subsys_initcall → fs_initcall
→ device_initcall → late_initcall
平台驱动通常在
subsys_initcall
级别注册,或通过
module_init
注册。

4. Finding code

4. 查找代码

bash
undefined
bash
undefined

Locate symbol

定位符号

grep -rn "platform_driver_register" drivers/
grep -rn "platform_driver_register" drivers/

Trace config

追踪配置

./scripts/config --state CONFIG_FOO
./scripts/config --state CONFIG_FOO

File hierarchy docs

文件层级文档

ls Documentation/admin-guide/
undefined
ls Documentation/admin-guide/
undefined

5. Agent usage

5. Agent使用示例

/linux-kernel-architecture Where does page fault handling live and what calls it?
/linux-kernel-architecture 页面错误处理代码位于哪里,由谁调用?

Common Problems

常见问题

SymptomCauseFix
Driver probes too earlyInitcall vs DT orderingDefer with
deferred_probe
Symbol missingBuilt as module
modprobe
or built-in
CONFIG_*
Wrong subsystemSimilar names in
drivers/
Follow
struct bus_type
Boot hangEarly printk disabled
earlyprintk
,
initcall_debug
症状原因解决方案
驱动过早触发probeInitcall与设备树顺序问题使用
deferred_probe
延迟
符号缺失编译为模块执行
modprobe
或内置
CONFIG_*
进入错误子系统
drivers/
中存在相似名称
跟踪
struct bus_type
启动挂起早期printk未启用启用
earlyprintk
initcall_debug

Related Skills

相关Skill

  • skills/kernel/kernel-internals
    — scheduler, SLUB, VFS depth
  • skills/kernel-dev/kernel-memory-management
    — mm/ details
  • skills/kernel-dev/platform-device-model
    — driver model
  • skills/kernel-dev/device-tree
    — hardware description
  • skills/low-level-programming/linux-kernel-modules
    — LKM basics
  • 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基础