v0.1.0 — 开张:通识基础齐活,地基夯实
第一个版本。把「在 WSL2 上从零交叉编译一颗 ARM64 内核、做个 BusyBox rootfs、丢进 QEMU 点亮、再用 GDB 远程调试、最后跑起自己的内核模块」这条完整链条,一篇篇锤炼成型。连同一套可复现的基建脚本,和这个网站本身。
通识基础(foundations)8 篇齐活
从环境摸底到内核模块跑起来,一条线打通:
- 01 WSL2 环境摸底与交叉编译工具链 — WSL2 + Arch Linux 上把 aarch64 交叉编译工具链备齐
- 02 Mini Config:从零设计一份精简的内核配置 — allnoconfig + merge_config.sh + olddefconfig 三步法,442 项 vs defconfig 952 项
- 03 编译你的第一个 ARM64 内核 — Linux 6.19.y + GCC 15.2.0,附编译输出标签速查
- 04 用 BusyBox 构建最小根文件系统 — BusyBox rootfs 打包成 ~1MB 的 cpio.gz
- 05 QEMU 首次启动与 boot log 解读 — QEMU virt 点亮,boot log 四阶段拆解
- 06 GDB + QEMU 远程调试 ARM64 内核 — 三层排查:
-s -S、aarch64-linux-gnu-gdb、KASLR 地址偏移 - 07 从零写第一个内核模块 — Hello World + Makefile,打通开发工具链
- 08 用 9p 共享目录加速内核模块迭代 — QEMU
-virtfs免重打包,改一次 ko 直接迭代
这一路踩的坑也都记下来了:ARCH/CROSS_COMPILE 漏设把 ARM64 编成了 x86、KASLR 让 GDB 断点乱飞、递归 make 的变量不传递(给 Makefile.arch 补了 export)、printk 的 console 延迟让人误以为模块没加载(信 dmesg buffer,别信串口屏幕)。
基建速查(guides)— 五条主线串成一条流水线
把散落的脚本钉成一份统一认知,免得每次重新 grep:
- 01 编译 Linux 内核 —
linux-action-scripts.sh - 02 制作 BusyBox rootfs —
rootfs-minimal-maker.sh - 03 QEMU 启动与调试 —
qemu-run.sh(含 9p /-s -S调试开关) - 04 交叉编译内核模块 —
example/common/Makefile.arch(arm32/arm64/riscv/x86_64 四架构) - 05 构建本网站 —
scripts/build.ts
产物一律落 out/build_latest_<arch>/(aarch64 → arm64 输出目录),initrd 优先于镜像,aarch64↔arm64 命名映射这种坑也写死了。
地基设施
- scripts/build.ts:分卷并行构建(
BUILD_CONCURRENCY)+ SHA256 增量缓存(.build-cache/manifest.json),改哪卷只重编哪卷 - example/common/Makefile.arch:一份 Makefile 通吃 arm32/arm64/riscv/x86_64 四架构交叉编译
- example/mini/00-kernel_module_hello:第一个可运行示例,教程 07 的配套代码
这站本身
VitePress 搭的,关掉了 ignoreDeadLinks——每个链接都得指向真实存在的页面或外链,死链直接构建报错,不放过。
数据
| 项 | 数 |
|---|---|
| 通识基础教程 | 8 篇 |
| 基建速查 | 6 篇(含总览) |
| 可运行示例 | 1 个 |
| 支持架构 | arm32 / arm64 / riscv / x86_64 |
下一版要干的:把通识基础往内核子系统(调度、内存、文件系统)推进;同时给这站加上「学习路线图」和每篇的完成度标记,让访客一眼看到这站写到哪了。