创建 bootstrap v1.0 镜像


创建 bootstrap v1.0 镜像

我想向您介绍一个名为 boobstrap 的框架,它是用 POSIX shell 编写的,用于使用 GNU/Linux 发行版创建启动映像。 该框架允许您只需三个简单的步骤即可完成整个过程:从在 chroot 中部署系统、创建包含 chroot 系统的 initramfs 映像,以及最终的可引导 ISO 映像。 boobstrap 包括三个实用程序,分别为 mkbootstrap、mkinitramfs 和 mkbootisofs。

mkbootstrap 将系统安装在单独的目录中,对 CRUX 有原生支持,对于 Arch Linux / Manjaro 和基于 Debian 的发行版,必须分别使用第三方实用程序 pacstrap、basestrap 和 debootstrap。

mkinitramfs 创建一个 initramfs 映像,您可以使用目录中已安装的系统作为“覆盖”,使用 SquashFS 压缩,或者启动进入系统后,直接在 tmpfs 中工作。 例如,命令 mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd 将创建一个 initrd 文件,包括两个带有“arch- chroot/”系统和您的“/home”,使用 SquashFS 压缩,然后您可以通过 PXE 引导到 tmpfs,或者使用此 initrd 创建可引导的 ISO 映像。

mkbootisofs 从指定目录创建 BIOS/UEFI 可启动 ISO 映像。 只需将 /boot/vmlinuz 和 /boot/initrd 放入该目录即可。

boobstrap 不使用 busybox,为了创建一个工作的 initramfs 环境,需要使用 ldd 复制一组最小的程序,这是引导和切换到系统所必需的。 与其他所有内容一样,要复制的程序列表可以通过配置文件 /etc/boobstrap/boobstrap.conf 进行配置。 此外,您可以将任何简约的发行版安装到单独的 chroot/ 中,然后您可以从中创建一个成熟的 initramfs 环境。 作为这样一个简约但同时又成熟的环境,建议使用“crux_gnulinux-embedded”模板,在 xz 之后,该模板大约占用 37 MB。 busybox 除了大小为 3-5 MB 与成熟的 GNU/Linux 环境的 30-50 MB 相比之外,不再提供任何优势,因此在项目中使用 busybox 似乎并不合适。

如何快速查看功能并上手? 安装并运行。

# git 克隆 https://github.com/sp00f1ng/boobstrap.git
# cd 胸带
# make install# boobstrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

您还需要安装依赖项,即:cpio、grub、grub-efi、dosfstools、xorriso。 不需要使用 squashfs-tools;您可以使用适当数量的 RAM 在 tmpfs 中工作。 如果系统中缺少某些内容,boobstrap 将在启动时报告此情况。

为了简化配置的创建,boobstrap建议使用“模板”和“系统”,其本质是使用“模板”(bootstrap-templates/)从文件快速安装系统,直接“系统”(bootstrap- Systems/) 用于设置最终配置。

例如,运行脚本 boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild 将安装 CRUX GNU/Linux 系统的最低配置并将其保存在文件 crux_gnulinux-embedded.rootfs 中,然后运行 ​​boobstrap/bootstrap-systems /default/crux_gnulinux.bbuild 将从上述文件加载主要配置,执行所有必要的配置并准备可引导的 ISO。 例如,当许多系统使用相同类型的配置时,这很方便:为了避免每次都描述同一组软件包,您可以使用一个模板,并基于该模板使用最终配置创建系统的启动映像。

我可以在哪里使用这一切?

您可以在文件中配置系统一次,然后通过运行它来构建和/或更新它。 该系统在 tmpfs 中运行,这使得它基本上是一次性的。 如果系统出现故障,您可以一键重置按钮返回到原始状态。 您可以安全地运行 rm -rf /。

您可以在本地配置所有系统的配置,创建映像,在虚拟机或单独的硬件中测试它们,然后将它们上传到远程服务器并仅运行两个命令 kexec -l /vmlinuz —initrd=/initrd && kexec -e要更新整个系统,请将其重新启动到 tmpfs。

同样,您可以将所有系统(例如 VDS 上的系统)转移到 tmpfs 中工作,并加密 /dev/vda 磁盘并仅将其用于数据,而不需要将操作系统保留在其上。 在这种情况下,唯一的“信息泄漏点”将只是虚拟机内存的“冷转储”,并且如果系统受到损害(例如,通过猜测 ssh 密码或Exim),您可以通过提供商的“控制面板”下载新的 ISO,以使 VDS 重新投入运行,而无需忘记编辑系统配置以消除所有漏洞。 这比重新安装、后续配置和/或从备份恢复要快,因为本质上,系统中的可下载 ISO 就是您的备份。 “七大麻烦,一重设。”

最后,您可以根据需要创建任何发行版,将其写入 USB 驱动器并在其中工作,根据需要更新它并再次将其重写到 USB 驱动器。 所有数据都存储在云端。 我再说一遍,当系统基本上变得“一次性”时,您不再需要担心系统的安全性并进行备份。

欢迎您提出愿望、建议和意见。

在下面链接的存储库中,有一个详细的自述文件(英文),其中包含每个实用程序的描述和使用示例,还有详细的俄语文档和链接中提供的开发历史记录: Boobstrap 启动脚本复杂.

来源: linux.org.ru

添加评论