booty — narzędzie do tworzenia obrazów rozruchowych i nośników

Program został zaprezentowany Booty, który umożliwia tworzenie obrazów rozruchowych initrd, plików ISO lub nośników jednym poleceniem, obejmujących dowolny dystrybucyjny system GNU/Linux. Kod jest napisany w POSIX shell i rozpowszechniany jest licencjonowany na zasadach GPLv3.

Wszystkie dystrybucje uruchamiane za pomocą Booty działają albo w SHMFS (tmpfs), albo w SquashFS + Overlay FS, w zależności od wyboru użytkownika. Dystrybucja jest tworzona raz, a podczas uruchamiania wybrane są parametry, które pozwalają użyć czystego tmpfs jako korzenia, albo połączenia Overlay FS + SquashFS z zapisywaniem zmian w tmpfs. Istnieje możliwość wcześniejszego skopiowania uruchamianej dystrybucji do pamięci RAM, co pozwala na odłączenie pamięci USB po załadowaniu i skopiowaniu dystrybucji do pamięci.

Przede wszystkim Booty generuje własny obraz initrd, który może korzystać z natywnych narzędzi z bieżącego systemu lub busybox. Istnieje możliwość dołączenia (spakowania) całej dystrybucji zainstalowanej w katalogu (chroot) do initramfs. Może to być przydatne, gdy konieczne jest zaktualizowanie systemu za pomocą kexec: wystarczy ponownie uruchomić initrd z nowym jądrem i nowym systemem wewnątrz initrd.

Tworzenie obrazu initrd specyficznego dla Booty:

mkdir initramfs/
mkinitramfs initramfs/ —output initrd

Tworzenie obrazu initrd z dołączeniem dystrybucji z katalogu „gentoo/”:

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

Po czym ten obraz initrd jest w pełni gotowy do rozruchu, na przykład przez PXE lub przez kexec.

Następnie Booty generuje obrazy z systemem, który został ustawiony jako „overlay”. Na przykład można zainstalować (wypakować archiwum) hipotetyczny Gentoo w osobnym katalogu, po czym za pomocą Booty zostanie wygenerowany archiwum cpio lub obraz SquashFS z tym systemem. Można także w osobnym katalogu skonfigurować dystrybucję, a do innego katalogu skopiować osobiste ustawienia. Wszystkie te „warstwy” będą kolejno ładowane jedna na drugą, tworząc jedyny działający system.

mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —overlay settings/ —overlay documents/ —squashfs —output initrd

Ostatecznie Booty pozwala na tworzenie rozruchowych obrazów ISO oraz nośników USB, HDD, SSD i innych, instalując opisaną powyżej system z obrazów. Booty obsługuje tworzenie systemów rozruchowych BIOS i UEFI. Obsługiwane są bootloadery GRUB2 i SYSLINUX. Bootloadery można łączyć, na przykład używając SYSLINUX do rozruchu w BIOS, a GRUB2 do UEFI. Aby stworzyć obrazy ISO, dodatkowo potrzebny będzie pakiet cdrkit (genisoimage) lub xorriso (xorrisofs), według wyboru.

Jedyną dodatkową czynnością, którą należy wykonać, jest wcześniejsze przygotowanie jądra (vmlinuz) do rozruchu. Autor (Spoofing) zaleca użycie „make defconfig”. Przed utworzeniem obrazu należy przygotować katalog, umieszczając w nim jądro vmlinuz oraz wcześniej przygotowany „pusty” initrd, stworzony w pierwszym przykładzie.

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

Na tym przygotowanie zostało zakończone, teraz możemy tworzyć obrazy ISO z tego katalogu.

Następne polecenie utworzy obraz ISO, nie rozruchowy, tylko ISO:

mkdir iso/
mkbootisofs iso/ —output archive.iso

Aby utworzyć rozruchowy obraz, należy wskazać opcję „—legacy-boot” dla BIOS i „—efi” dla UEFI, a jako parametry opcji przyjmują either grub2, lub syslinux, można również wskazać tylko jedną opcję (na przykład, jeśli wsparcie dla rozruchu UEFI nie jest potrzebne, można jej nie podawać).

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

Podobnie jak w poprzednich przypadkach, można załączyć obrazy systemów w initrd do ISO.

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

Po wykonaniu tego polecenia zostanie utworzony rozruchowy obraz ISO BIOS/UEFI, uruchamiający Gentoo z obrazu SquashFS z wykorzystaniem Overlay FS, używający tmpfs do przechowywania danych. Jądro musi być skompilowane z obsługą Overlay FS i SquashFS. Jednak, jeśli z jakiegoś powodu to nie jest wymagane, można użyć opcji „—cpio” zamiast —squashfs, aby spakować gentoo/ jako archiwum cpio, w takim przypadku archiwum zostanie rozpakowane bezpośrednio w tmpfs podczas rozruchu, ważne, aby pamięci RAM było wystarczająco dużo do rozpakowania systemu w tmpfs.

Ciekawy fakt: jeśli obraz ISO utworzony z użyciem opcji „—efi” zostanie rozpakowany na pamięci USB FAT32 poprzez proste kopiowanie plików (cp -r), to pamięć Flash załadowana będzie w trybie UEFI bez jakiejkolwiek wcześniejszej przygotowania, dzięki specyfice bootloaderów UEFI.

Oprócz obrazów ISO z tymi samymi parametrami można stworzyć dowolny nośnik bootowalny: USB, HDD, SSD itd., a ten nośnik może być nadal używany do pierwotnego celu. Aby to zrobić, należy zamontować na przykład urządzenie USB i uruchomić mkbootisofs na nim. Wystarczy dodać jedną opcję „—bootable”, aby nośnik, na którym znajduje się wskazany katalog, stał się bootowalny.

mount /dev/sdb1 /mnt
mkbootisofs /mnt —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —bootable

Po tym USB stanie się nośnikiem bootowalnym z nadpisywanym gentoo/ (nie zapomnij skopiować plików /boot/vmlinuz oraz /boot/initrd na urządzenie).

Jeśli z jakiegoś powodu nośnik nie został zamontowany w /mnt, a okaże się, że /mnt znajduje się na głównym urządzeniu /dev/sda, to odpowiednio bootloader zostanie nadpisany na /dev/sda. Należy zachować ostrożność przy wskazywaniu opcji —bootable.

W trakcie rozruchu Booty wspiera szereg opcji, które można przekazać w bootloaderze, grub.cfg lub syslinux.cfg. Domyślnie, bez żadnych opcji, wykonywane jest ładowanie i rozpakowywanie wszystkich nakładek w tmpfs (domyślna opcja ooty.use-shmfs). Aby używać Overlay FS, należy używać opcji booty.use-overlayfs. Opcja booty.copy-to-ram najpierw kopiuje nakładki do tmpfs, a następnie tylko je montuje i ładuje. Po skopiowaniu nośnik USB (lub inny nośnik) można wyciągnąć.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster