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

添加評論