boucaron/baseroots

GitHub: boucaron/baseroots

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

Stars: 0 | Forks: 0

![BaseRoots Logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f4f3ace72d033549.jpg) # 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, 引导启动, 最小化环境, 系统恢复, 身份验证强制