建立 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/boot/def/bstrap/boot/def 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

添加評論