linux-kernel-architecture
/linux-kernel-architecture
Pomaga poruszać się po kodzie jądra w linux.git i rozumieć przebieg startu, poziomy initcall oraz główne podsystemy, takie jak VFS, scheduler i zarządzanie pamięcią.
- Autor
- OutlineDriven ↗
- Repozytorium
- outline-driven-development ↗
- Licencja
- Apache-2.0
- Ostatnia zmiana repozytorium
- 28.09.2026
Ocena i bezpieczeństwo
- Pliki w paczce
- 2
- Skrypty
- 0
- Komentarze HTML
- 0
- Adresy URL w SKILL.md
- 0
Brak sygnałów. Repozytorium zmienione 28.09.2026, bez odwołań do wycofanych modeli i API.
Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.
Co robi i kiedy
Pomaga poruszać się po kodzie jądra w linux.git i rozumieć przebieg startu, poziomy initcall oraz główne podsystemy, takie jak VFS, scheduler i zarządzanie pamięcią.
Oryginalny opis (EN)
Use when navigating kernel source, understanding boot flow, initcall levels, or major subsystems (VFS, scheduler, MM) in linux.git. Not for driver-model depth: use device-drivers.
Jak działa
- Contract
- Inputs
- Procedure
- Failure and recovery
- Output
Podgląd SKILL.md
--- name: linux-kernel-architecture description: 'Use when navigating kernel source, understanding boot flow, initcall levels, or major subsystems (VFS, scheduler, MM) in linux.git. Not for driver-model depth: use device-drivers.' --- # Linux kernel architecture ## Contract | Field | Bound contract | |---|---| | Trigger | Navigating linux.git or understanding kernel structure: the boot sequence, initcall levels, subsystem layout, key data structures, or locating a symbol or `CONFIG_*` knob. | | Authority | Read-only. Writes nothing. Chat output only. No remote mutation. | | Side effect | None. The skill returns navigation guidance and source paths. | | Done | A boot-flow map, a subsystem path with key structs, an initcall sequence, or a located symbol is delivered, with a deeper-skill pointer when the question crosses into implementation. | ## Inputs 1. Question (required): boot flow, subsystem location, initcall ordering, or symbol lookup. 2. Checkout path (optional): a linux.git tree to search; the answers assume a recent tree (mainline 7.2 or LTS 6.18). 3. Target symbol or config (optional): the name to locate. ## Procedure 1. Classify the question: boot flow, subsystem map, initcall level, or symbol location. Done when: the class is named and the matching step below is chosen. 2. For boot flow, state the sequence with the initcall placement made precise: firmware or UEFI hands off to `arch/*/boot`, which decompresses the kernel and runs early setup; `start_kernel()` initializes core subsystems (mm, scheduler, timers, IRQ); `rest_init()` spawns `kernel_init`, whose `do_basic_setup()` runs `do_initcalls()` through every initcall level; `kernel_init` then calls `run_init_process()` for userspace `init`. Driver `module_init` and built-in `device_initcall` code runs inside that initcall phase, before `init`. Done when: the sequence from firmware to userspace names where initcalls run. 3. For a subsystem question, map the subsystem to its source path and key structures: | Subsystem | Path (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/` | `pt_regs` | Done when: the question's subsystem names its path and the structs a reader will meet first. 4. For initcall ordering, read the levels in run order from `include/linux/init.h`: `early_initcall`, `core_initcall`, `postcore_initcall`, `arch_initcall`, `subsys_initcall`, `fs_initcall`, `device_initcall`, `late_initcall`. Platform drivers typically register at `subsys_initcall` or through `module_init` (which lands at `device_initcall` for built-in code). Done when: the requested code sits at a named level relative to its dependencies. 5. For a symbol or config, search the checkout: ```bash grep -rn "platform_driver_register" drivers/ ./scripts/config --state CONFIG_FOO ls Documentation/admin-guide/ ``` Done when: the command output names the defining file or the config state. 6. Route the question when it crosses into implementation: `kernel-memory-management` for `mm/` depth, `device-drivers` for the driver model and hardware description, `virtual-memory-paging-and-tlb` for paging mechanics, `kernel-security` for hardening and mitigations. Done when: the delivered answer states the boundary and names the skill that owns the depth. ## Failure and recovery | Failure class | Behavior | |---|---| | Symbol not found | Widen the grep, or check whether the code is gated behind an unset `CONFIG_*` with `scripts/config`. | | Driver probes too early | Its initcall level precedes a dependency: move the level later, or return `-EPROBE_DEFER` on the missing supplier. | | Boot hangs before userspace | Add `earlycon` (or `earlyprintk` on x86) and `initcall_debug` to the command line to see the last boot step. | | Wrong subsystem | Trace the call chain through `struct bus_type` or the subsystem's ops struct instead of guessing from names. | | Question needs implementation depth | Hand off to the skill named in step 6. | ## Output A boot-flow map with initcall placement; a subsystem path and struct table; the initcall sequence with the level for named code; the search command and its result; a deeper-skill pointer when the boundary is reached.
Pliki w paczce (2)
- SKILL.md 4 KB
- agents/openai.yaml 1 KB
Wersje
| Repozytorium | Wynik | Licencja |
|---|---|---|
| Ta strona · OutlineDriven/outline-driven-development | 100 | Apache-2.0 |
| mohitmishra786/low-level-dev-skills | 100 | MIT |
Migawka bazy z 28.10.2026 · wersja paczki 3962b591e66d (skrót SHA-256 całej paczki)
Pobrania w ostatnich 30 dniach: 0 · ranking
Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.
Podobne skille
- 100kernel-internals
Objaśnia wnętrze jądra Linux: planistę CFS i EEVDF, alokatory buddy i SLUB, page cache, strefy pamięci, OOM killer i interpretację /proc/meminfo. - 100device-driver-development
Wspiera tworzenie, przegląd, debugowanie i portowanie sterowników urządzeń jądra Linux, modułów, device tree, DMA, IRQ i bring-up sprzętu. - 100linux-kernel-modules
Pomaga pisać ładowalne moduły jądra: Kbuild, parametry modułu, wpisy proc i sysfs, urządzenia znakowe oraz debugowanie przez ftrace. - 100linux-kernel-module-development
Pomaga tworzyć w C moduły jądra Linux i sterowniki urządzeń znakowych: operacje na plikach, alokatory pamięci, spinlocki, mutexy, obsługa przerwań i atrybuty sysfs. - 100device-drivers
Wspiera tworzenie sterowników jądra Linux: sterowniki platform, i2c i spi, cykl życia urządzeń znakowych, obsługę IRQ, API DMA engine, regmap, zarządzanie energią i reguły udev. - 100kernel-development-skills
Wspiera doświadczonych inżynierów jądra Linux w pisaniu, debugowaniu, przeglądzie i upstreamowaniu kodu jądra i sterowników: devicetree, Kconfig, oopsy, KASAN, lockdep, KUnit i kselftest.