boucaron/baseroots
GitHub: boucaron/baseroots
BaseRoots 构建了一个基于 initrd 的最小化、不可变的 Linux 恢复环境,用于在发行版无关的受控条件下可靠地启动、检查和修复 Linux 系统。
Stars: 0 | Forks: 0

# BaseRoots
**BaseRoots — 小巧、不可变的基于 initrd 的 Linux 环境,用于恢复、测试和可重复的系统引导构建**
BaseRoots 是一个最小化、可重复的 Linux 引导构建环境,旨在可靠地启动、检查和恢复 Linux 系统。
它构建了一个小巧的、绝大部分静态链接的 initrd,提供了一个独立于宿主系统的干净、确定性的 runtime。
它与发行版无关,旨在独立于宿主系统的状态运行。
## 为什么需要
恢复或检查 Linux 系统通常缺乏一致性:
- 各发行版提供的救援环境各不相同
- 不同系统中的工具和行为存在差异
- 调试依赖于宿主 OS 的状态
BaseRoots 提供了一个干净、可重复的环境,无论受检查的系统状态如何,其行为每次都完全一致。
## 它能做什么
BaseRoots 构建了我们称之为 *BaseRoot environment* 的环境:
- 一个 Linux kernel(单独提供)
- 一个 initrd (ramdisk)
- 一组最少的、绝大部分静态链接的工具
最终的结果是一个在受控环境中启动并进入 shell 的小型系统。
在此基础上,你可以:
- 检查和挂载磁盘
- 恢复损坏的系统
- chroot 到现有安装中
- 调试系统故障
- 体验不同的 userland
## 示例用例
一台服务器在 kernel 或文件系统更新后无法启动。
使用 BaseRoots:
1. 使用 BaseRoots initrd(在本地或通过 PXE)启动系统
2. 进入一个干净、已知的环境
3. 安全地检测并挂载磁盘
4. 检查日志、修复文件系统或恢复数据
无论系统状态如何,该环境始终保持一致。
## 示例构建
一个示例构建脚本是:
`build_x86_64-musl.sh`
它会:
- 构建基于 musl 的交叉工具链
- 编译 toybox 和 bash
- 创建一个最小化的 initrd
最后,你将获得除 kernel 之外的所有内容。
添加一个 kernel 并启动它(例如使用 QEMU 或真实硬件),你就能得到一个 shell。
大多数脚本位于:
`baseroot/toolchain/scripts/`
## 包含的工具(示例)
BaseRoots 可以包含一个最小但实用的恢复工具包:
**文件系统**
- e2fsprogs
- xfsprogs
- btrfs-progs
- dosfstools
- lvm2(支持 device-mapper)
**磁盘实用程序**
- util-linux(fdisk、mount、blkid、agetty 等)
- mdadm(Software RAID)
**系统 / kernel**
- kmod
**网络**
- iproute2
- 基于 openssl 的 curl
- dropbear(ssh server/client/scp)
**编辑器**
- joe
该工具集涵盖了最常见的 Linux 恢复场景,包括使用 LVM 的系统。
## 它不适合什么
BaseRoots 不是一个完整的 Linux 发行版。
它的目标不是取代现有的系统或作为通用 OS 运行,而是提供一个最小化、受控的环境来与它们进行交互。
## 设计原则
- 最小化且专注
- 可重复的 runtime
- 绝大部分静态链接
- 交叉编译
- 独立于宿主系统
- 在构建时可定制
- 明确控制启动和 runtime 行为
## 背景
25 年前,从源码构建系统并自由进行实验是很常见的做法。
如今,我们拥有更快的机器、更好的工具、交叉编译器和虚拟化技术。
以受控的方式探索系统应该比以往任何时候都更容易。
BaseRoots 就是朝这个方向进行的一项小实验。
## 当前状态
- 架构:x86_64
- libc:musl
- toolchain:gcc
- 工具:toybox + 附加实用程序
- 链接:绝大部分为静态链接
状态:实验性、可用且不断完善中。
## 未来
- PXE / 网络启动支持(无盘恢复与配置)
- 扩展的存储支持(LUKS 加密、通过 mdadm 实现的 RAID)
- 多种构建配置(最小化、恢复、取证、CI/测试)
- 额外的架构(ARM、嵌入式目标)
- 替代的 userland(基于 musl/glibc 的构建、toybox/busybox、不同的 shell)
## 用例
- 在损坏或无法启动的环境中进行系统调试
- 系统恢复(裸机或 VM)
- 与发行版无关的调试
- 取证分析
- CI/CD 系统测试
- 基于 PXE 的基础设施工具
## 许可证
该项目基于 0BSD 许可证授权。
你可以随意使用它:复制它、修改它、重新分发它、在其他项目中使用它,无论是否注明出处。
基本上:随心所欲。
标签:initrd, musl, 引导启动, 最小化环境, 系统恢复, 身份验证强制