booty - 用于创建启动映像和驱动器的实用程序

节目介绍 赃物,它允许您使用一个命令创建可引导的 initrd 映像、ISO 文件或包含任何 GNU/Linux 发行版的驱动器。 代码是用 POSIX shell 编写的 分发者 根据 GPLv3 许可。

所有使用 Booty 启动的发行版都运行 SHMFS (tmpfs) 或 SquashFS + Overlay FS,由用户选择。 发行版创建一次,在引导过程中,选择参数允许您使用纯 tmpfs 作为根,或使用 Overlay FS + SquashFS 的组合来记录对 tmpfs 的更改。 可以将可下载的分发包预先复制到 RAM 中,这样您就可以在下载分发包并将其复制到内存后断开 USB 驱动器的连接。

首先,Booty 生成自己的 initrd 映像,该映像可以使用当前系统或 busybox 中的本机实用程序。 可以将安装在目录 (chroot) 中的整个分发包包含(打包)到 initramfs 中。 当您需要使用 kexec 升级系统时,这会很有用:只需使用新内核和 initrd 内的新系统重新加载 initrd 即可。

创建特定于 Booty 的 initrd 映像:

mkdir initramfs/
mkinitramfs initramfs/ --输出 initrd

创建一个 initrd 映像,包括“gentoo/”目录中的发行版:

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --cpio --output initrd

之后,该 initrd 映像就完全准备好加载,例如通过 PXE 或 kexec。

接下来,Booty 会使用指定为“overlays”的系统生成图像。 例如,您可以在单独的目录中安装(解压存档)一个有条件的 Gentoo,之后将使用 Booty 生成该系统的 cpio 存档或 SquashFS 映像。 您还可以在单​​独的目录中配置发行版,并将您的个人设置复制到另一个目录。 所有这些“层”将按顺序加载到彼此之上并创建一个单一的工作系统。

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay 设置/ --overlay 文档/ --squashfs --output initrd

最终,Booty 允许您通过从映像安装上述系统来创建可启动 ISO 映像以及 USB、HDD、SSD 和其他驱动器。 赃物 支持创建 BIOS 和 UEFI 引导系统。 支持 GRUB2 和 SYSLINUX 引导加载程序。 引导加载程序可以组合使用,例如,使用 SYSLINUX 引导进入 BIOS,使用 GRUB2 引导 UEFI。 要创建 ISO 映像,您还需要 cdrkit (genisoimage) 或 xorriso (xorrisofs) 软件包以供选择。

唯一需要的额外操作是提前准备内核 (vmlinuz) 以进行引导。 作者(Spoofing)建议使用“make defconfig”。 在创建映像之前,您需要准备一个目录,放置 vmlinuz 内核和之前在第一个示例中创建的“空”initrd。

mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd

至此准备工作就完成了,我们现在可以从此目录创建 ISO 映像。

以下命令将创建一个 ISO 映像,而不是可启动映像,而只是一个 ISO:

mkdir iso/
mkbootisofs iso/ --输出 archive.iso

要创建启动映像,您需要分别为 BIOS 指定“--legacy-boot”选项和 UEFI 指定“--efi”选项;这些选项采用 grub2 或 syslinux 作为参数;您也可以只指定一个选项(例如,不需要UEFI启动支持,也可以不指定)。

mkbootisofs iso/ --legacy-boot syslinux --output boot-biosonly.iso

mkbootisofs iso/ --legacy-boot syslinux --efi grub2 --output boot-bios-uefi.iso

mkbootisofs iso/ --efi grub2 --output boot-uefionly.iso

和以前一样,系统映像包含在 initrd 中,您可以将它们包含在 ISO 中。

mkbootisofs iso/ --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --output gentoo.iso

执行此命令后,将生成一个可引导的 BIOS/UEFI ISO 映像,该映像使用 Overlay FS 将 Gentoo 加载到 SquashFS 映像中,并使用 tmpfs 进行数据存储。 内核必须使用 SquashFS 的 Overlay FS 支持来构建。 然而,如果由于某种原因不需要这样做,你可以使用“-cpio”选项而不是-squashfs将gentoo/打包为cpio存档,在这种情况下,存档将在启动时直接解压到tmpfs中,最主要的是是为了解压系统 tmpfs 有足够的 RAM。

有趣的事实:如果通过简单地复制文件 (cp -r) 将使用“—efi”选项创建的 ISO 映像解压到 FAT32 闪存驱动器上,则由于具体情况,闪存驱动器将在 UEFI 模式下启动,无需任何初步准备UEFI-下载器。

除了可启动 ISO 之外,还可以使用相同的参数创建任何可启动驱动器:USB、HDD、SSD 等,并且该驱动器可以继续用于其预期用途。 为此,您需要安装 USB 设备并在其上运行 mkbootisofs。 只需添加一个选项“—bootable”即可使指定目录所在的驱动器成为可启动的。

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

之后,USB 设备将可以通过 gentoo/ 覆盖层启动(不要忘记将 /boot/vmlinuz 和 /boot/initrd 文件复制到设备)。

如果由于某种原因驱动器没有安装在/mnt中,并且事实证明/mnt位于主设备/dev/sda上,那么引导加载程序将被重写到/dev/sda。 指定 --bootable 选项时应该小心。

在引导过程中,Booty 支持许多可以传递给引导加载程序的选项,grub.cfg 或 syslinux.cfg。 默认情况下,如果没有任何选项,所有覆盖都会加载并解压到 tmpfs 中(默认选项 ooty.use-shmfs)。 要使用 Overlay FS,必须使用 booty.use-overlayfs 选项。 booty.copy-to-ram 选项首先将覆盖复制到 tmpfs,之后仅连接它们并加载它们。 复制后,可以删除 USB 设备(或其他存储设备)。

来源: opennet.ru

添加评论