booty - narzędzie do tworzenia obrazów rozruchowych i dysków

Przedstawiony program Łup, który umożliwia tworzenie startowych obrazów initrd, plików ISO lub dysków zawierających dowolną dystrybucję GNU/Linux za pomocą jednego polecenia. Kod jest napisany w powłoce POSIX i dystrybuowane przez licencjonowany na licencji GPLv3.

Wszystkie dystrybucje uruchamiane przy użyciu Booty uruchamiają SHMFS (tmpfs) lub SquashFS + Overlay FS, według wyboru użytkownika. Dystrybucja jest tworzona raz, a podczas procesu uruchamiania wybierane są parametry, które pozwalają na użycie czystego tmpfs dla katalogu głównego lub kombinacji Overlay FS + SquashFS z rejestrowaniem zmian w tmpfs. Istnieje możliwość wstępnego skopiowania pakietu dystrybucyjnego do pobrania do pamięci RAM, co umożliwia odłączenie napędu USB po pobraniu i skopiowaniu pakietu dystrybucyjnego 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 busyboxa. Możliwe jest włączenie (spakowanie) całego pakietu dystrybucyjnego zainstalowanego w katalogu (chroot) do initramfs. Może to być przydatne, gdy musisz zaktualizować system za pomocą kexec: po prostu załaduj ponownie 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 zawierającego dystrybucję z katalogu „gentoo/”:

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

Po czym ten obraz initrd jest całkowicie gotowy do załadowania, na przykład przez PXE lub przez kexec.

Następnie Booty generuje obrazy w systemie określonym jako „nakładki”. Na przykład możesz zainstalować (rozpakować archiwum) warunkowe Gentoo w osobnym katalogu, po czym przy użyciu Booty zostanie wygenerowane archiwum cpio lub obraz SquashFS z tym systemem. Możesz także skonfigurować dystrybucję w osobnym katalogu i skopiować swoje ustawienia osobiste do innego katalogu. Wszystkie te „warstwy” zostaną kolejno nałożone na siebie i utworzą jeden działający system.

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

Ostatecznie Booty umożliwia tworzenie startowych obrazów ISO oraz dysków USB, HDD, SSD i innych, instalując powyższy system z obrazów. Łup obsługuje tworzenie systemów rozruchowych BIOS i UEFI. Obsługiwane są programy ładujące GRUB2 i SYSLINUX. Programy ładujące można łączyć, na przykład używać SYSLINUX do uruchamiania systemu BIOS i GRUB2 dla UEFI. Do tworzenia obrazów ISO potrzebny będzie dodatkowo do wyboru pakiet cdrkit (genisoimage) lub xorriso (xorrisofs).

Jedyną wymaganą dodatkową czynnością 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 jądro vmlinuz i przygotowany wcześniej „pusty” initrd utworzony w pierwszym przykładzie.

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

Na tym przygotowania są zakończone, możemy teraz utworzyć obrazy ISO z tego katalogu.

Poniższe polecenie utworzy obraz ISO, a nie obraz rozruchowy, tylko ISO:

mkdir iso/
mkbootisofs iso/ --output Archive.iso

Aby utworzyć obraz rozruchowy, musisz określić opcję „--legacy-boot” odpowiednio dla BIOS-u i „--efi” dla UEFI; opcje przyjmują jako parametry grub2 lub syslinux; możesz także określić tylko jedną opcję ( na przykład obsługa rozruchu UEFI nie jest potrzebna, może nie zostać określona).

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

I tak jak poprzednio, obrazy z systemem zostały zawarte w initrd, można je załączyć w ISO.

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

Po tym poleceniu zostanie wygenerowany startowy obraz ISO BIOS/UEFI, który ładuje Gentoo do obrazu SquashFS przy użyciu Overlay FS, używając tmpfs do przechowywania danych. Jądro musi być zbudowane z obsługą Overlay FS w SquashFS. Jeśli jednak z jakiegoś powodu nie jest to wymagane, możesz użyć opcji „—cpio” zamiast —squashfs, aby spakować gentoo/ jako archiwum cpio. W takim przypadku archiwum zostanie rozpakowane bezpośrednio do tmpfs podczas uruchamiania, co najważniejsze jest to, że do rozpakowania systemu tmpfs miał wystarczającą ilość pamięci RAM.

Ciekawostka: jeśli obraz ISO utworzony przy użyciu opcji „-efi” zostanie rozpakowany na dysk flash FAT32 poprzez proste kopiowanie plików (cp -r), wówczas dysk Flash uruchomi się w trybie UEFI bez żadnego wstępnego przygotowania, dzięki specyfice programów do pobierania UEFI.

Oprócz startowych obrazów ISO można utworzyć dowolny dysk startowy z tymi samymi parametrami: USB, HDD, SSD itd., a dysk ten będzie mógł być nadal używany zgodnie z jego przeznaczeniem. W tym celu należy zamontować np. urządzenie USB i uruchomić na nim mkbootisofs. Wystarczy dodać jedną opcję „-bootable”, aby dysk, na którym znajduje się określony katalog, stał się bootowalny.

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

Następnie urządzenie USB będzie można uruchomić z nakładką gentoo/ (nie zapomnij skopiować plików /boot/vmlinuz i /boot/initrd na urządzenie).

Jeżeli z jakiegoś powodu dysk nie został zamontowany w /mnt, a okaże się, że /mnt znajduje się na głównym urządzeniu /dev/sda, to bootloader zostanie przepisany na /dev/sda. Należy zachować ostrożność podczas określania opcji --bootable.

Podczas procesu uruchamiania Booty obsługuje wiele opcji, które można przekazać do modułu ładującego, grub.cfg lub syslinux.cfg. Domyślnie, bez żadnych opcji, wszystkie nakładki są ładowane i rozpakowywane do tmpfs (domyślna opcja ooty.use-shmfs). Aby użyć Overlay FS, należy użyć opcji booty.use-overlayfs. Opcja booty.copy-to-ram najpierw kopiuje nakładki do tmpfs, po czym je tylko łączy i ładuje. Po skopiowaniu urządzenie USB (lub inne urządzenie pamięci masowej) można usunąć.

Źródło: opennet.ru

Dodaj komentarz