创建 bootstrap v1.2 镜像


创建 bootstrap v1.2 镜像

仅仅一个月 经过缓慢的开发,boobstrap v1.2 发布了 - POSIX shell 上的一组工具,用于创建启动映像和驱动器。

Boobstrap 允许您只执行一个命令:

  • 创建 initramfs 映像,包括其中的任何 GNU/Linux 发行版。
  • 使用任何 GNU/Linux 发行版创建可启动 ISO 映像。
  • 使用任何 GNU/Linux 发行版创建可启动 USB、HDD、SSD 驱动器。

其特点是,加载 GNU/Linux 后,可以完全在纯 tmpfs 中工作,也可以使用 Overlay FS 和 SquashFS 映像,由您选择。 您可以在一个目录中安装任何 GNU/Linux 发行版,进行所有必要的设置(可能在单独的目录中),然后只需一个命令即可创建启动设备,无论是 ISO 映像、USB、HDD、SSD 驱动器还是您可以使用 system 创建一个 initrd 映像。 系统将始终处于相同的状态,一旦发生故障,您可以通过按一个重置按钮返回到原始状态。 您想将系统转移到另一台主机,还是从现有容器创建系统? 胸带会做到这一点。

主要变化包括:

  • 除了现有的 grub2 之外,还添加了对 syslinux 引导加载程序的支持。 现在,在分别使用 --legacy-boot syslinux 和 --efi grub2 选项创建引导设备或 ISO 映像时,您可以选择使用 grub2、syslinux 或两者都使用,并且您还可以选择下载支持 ISO 的模式图像。
  • 添加了 --bootable 选项,使任何块设备均可启动。 要创建 ISO 映像,必须使用 --iso-9660 选项。
  • 添加了内核启动选项 boobs.use-shmfs 将所有覆盖的内容复制到 tmpfs,boobs.use-overlayfs 使用 Overlay FS 启动,boobs.search-rootfs 选择系统源,boobs.copy-to-ram将系统复制到内存中,然后关闭设备。
  • boobstrap 工作所需的唯一依赖项是 cpio。 其余依赖项是可选的:grub2、syslinux - 创建可启动媒体所需,cdrkit 或 xorriso 可供选择 - 创建 ISO,squashfs-tools 来创建 SquashFS,但没有什么可以阻止您使用 -cpio 选项而不是 - squashfs 将您的发行版打包到存档中。 busybox 仅在安装后才可使用,但如果未安装,系统中所有必需的实用程序都将被复制。 因此,boobstrap 保证几乎在任何地方都能工作。

例如,以下命令将创建一个 initrd 映像,其中包括打包为 SquashFS 映像的 gentoo-chroot/ 系统,该映像将在 initrd 本身加载后成功启动。 提醒一下,要将Overlay FS与SquashFS结合使用,必须通过boobs.use-overlayfs内核选项,否则系统将被解包为tmpfs。 所有附加设置都可以在单独的目录中进行,例如 gentoo-settings/

# mkdir initramfs/
# mkinitramfs initramfs/ --overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs > initrd

当您需要快速部署系统(例如,通过 PXE)或在已加载的系统上使用命令 kexec -l /boot/vmlinuz-* —initrd=./initrd 切换到 initrd 时,内部包含系统的 initrd 映像非常方便&& kexec -e,或者,在 QEMU 虚拟机界面(甚至可能是 Proxmox)中,使用三个 IPXE 命令从远程源启动:kernel http://[...]/vmlinuz、initrd http://[ ...]/initrd,启动。 正如您所看到的,即使系统中的常规 initrd 也有很多用途。

要创建可引导驱动器和映像,请使用 mkbootisofs 命令,例如,使用 -iso-9660 选项创建 ISO 映像就像使用 syslinux 引导到传统模式 (BIOS) 和 grub2 引导到 EFI -模式(UEFI)。

# mkdir initrd/
# mkinitramfs initrd // > initrd
# mkdir isoimage/
# mkdir isoimage/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —legacy-boot syslinux —efi grub2 —输出 boot.iso
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

您可以指定其中一种启动模式,或者根本不指定,都会成功创建相应的 ISO 映像。

使用 --bootable 选项在任何驱动器上安装并随后从该驱动器启动。 您需要自己在驱动器上创建分区(fdisk)并格式化它们(mkdosfs、mke2fs等),然后将设备挂载到目录中。

# 挂载 /dev/sdb1 /mnt/drive/
# mkbootisofs /mnt/drive/ --bootable --legacy-boot grub2 --efi grub2
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

注意! --bootable 选项确定从哪个块设备挂载目录并将引导加载程序安装到该设备上。 如果您忘记挂载设备或错误指定位于/dev/sda 上的目录,则 /dev/sda 上的引导加载程序将被相应覆盖。 谨慎使用--bootable。

安装任何 GNU/Linux 系统都简化为只需一个命令。 可以在任何 HDD、SSD 等上进行安装。 值得回顾的是,这仍然是一个从 Overlay FS / SquashFS 运行的系统,或者完全加载到 tmpfs 中,您可以选择。

除此之外,boobstrap 还具有许多有趣的功能和附加功能!

例如,您可以使用命令 mkinitramfs `mktemp -d` > /boot/initrd 创建专有的 boobstrap initrd 并使用此 initrd 启动系统,指定内核选项 boobs.use-overlayfs boobs.search-rootfs=/dev /sda1。 在这种情况下,安装您的家庭系统的 /dev/sda1 将作为只读 Overlay FS 层连接,您所做的所有更改将仅临时写入 tmpfs。 您可以添加选项boobs.copy-to-ram,然后您的整个系统将被复制到RAM,并且硬盘驱动器可以与计算机断开连接。 当您需要破坏某些内容时很方便,并且只需重新启动即可回滚更改。 🙂

但是如果您仍然需要保存系统中的所有更改怎么办? 例如,您安装了软件或其他东西。 当在纯 tmpfs 中工作时,不幸的是这是不可能的,但如果您使用 Overlay FS 启动,那么系统中发生的所有更改都将保存在单独的 tmpfs 目录中:/mnt/overlayfs/rootfs-changes! 使用场景非常简单。 您从 USB 设备启动到系统,做了一些工作,并希望保存更改的所有内容,然后创建一个 cpio 存档并将其放在同一 USB 设备上。

# cd /mnt/overlayfs/rootfs-changes
# 寻找 。 -打印0 | cpio --create --format "newc" --null --quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD

您可以将存档放在其他 SquashFS 和 cpio“层”旁边,然后在后续加载时,存档将作为另一个只读层进行连接。 要继续处理更改,请使用上传选项 boobs.rootfs-changes=/rootfs-changes.cpio。 boobs.rootfs-changes 选项启用指定层的更改访问权限。 该层可以是块设备,例如您可以指定/dev/sdb1,那么在Overlay FS中所做的所有更改都将简单地保存到/dev/sdb1。

Boobstrap 尽管有广泛的可能性,但仍处于开发阶段,您的所有意见和建议都会被考虑在内!

来源: linux.org.ru

添加评论