Skip to content

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 rootfsrootfs-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

下一版要干的:把通识基础往内核子系统(调度、内存、文件系统)推进;同时给这站加上「学习路线图」和每篇的完成度标记,让访客一眼看到这站写到哪了。

基于 VitePress 构建