Tworzenie obrazów rozruchowych boobstrap v1.2


Tworzenie obrazów rozruchowych boobstrap v1.2

Po zaledwie miesiąc nieśpiesznego rozwoju odbyła się premiera boobstrap v1.2 – zestawu narzędzi na POSIX shell do tworzenia obrazów rozruchowych i nośników.

Boobstrap pozwala zaledwie na jedną komendę:

  • Tworzyć obraz initramfs, włączając w to dowolną dystrybucję GNU/Linux.
  • Tworzyć obrazy ISO rozruchowe z dowolną dystrybucją GNU/Linux.
  • Tworzyć rozruchowe nośniki USB, HDD, SSD z dowolną dystrybucją GNU/Linux.

Charakterystyczną cechą jest to, że po załadowaniu GNU/Linux będzie działać albo całkowicie w czystym tmpfs, albo z wykorzystaniem Overlay FS i obrazów SquashFS, według Twojego wyboru. Instalujesz dowolną dystrybucję GNU/Linux w katalogu, wykonujesz wszystkie niezbędne konfiguracje (można w osobnym katalogu), po czym jedną komendą tworzysz nośnik rozruchowy, niezależnie od tego, czy jest to obraz ISO, USB, HDD, SSD, a możesz także stworzyć obraz initrd z systemem. System zawsze będzie w jednym stanie, a w przypadku awarii możesz powrócić do stanu początkowego naciskając przycisk Reset. Chcesz przenieść system na inny host, czy może utworzyć system z istniejącego kontenera? Boobstrap to umożliwi.

Z kluczowych zmian:

  • Dodano wsparcie dla bootloadera syslinux, oprócz już istniejącego grub2. Teraz możesz używać albo grub2, albo syslinux, albo obu jednocześnie, podczas tworzenia nośnika rozruchowego lub obrazu ISO, co odpowiada opcjom –legacy-boot syslinux oraz –efi grub2, a także można wybierać, jakie tryby rozruchu będzie wspierać obraz ISO.
  • Dodano opcję –bootable, która sprawia, że każde urządzenie blokowe jest rozruchowe. Do tworzenia obrazów ISO należy używać opcji –iso-9660.
  • Dodano opcje rozruchu jądra boobs.use-shmfs do kopiowania zawartości wszystkich overlayów do tmpfs, boobs.use-overlayfs do rozruchu z użyciem Overlay FS, boobs.search-rootfs do wybierania źródła z systemem, boobs.copy-to-ram do kopiowania systemu do pamięci z późniejszym odłączeniem urządzenia.
  • Jedynym obowiązkowym zależnością do działania boobstrap jest tylko cpio. Pozostałe zależności są opcjonalne: grub2, syslinux — potrzebne do tworzenia nośników rozruchowych, cdrkit lub xorriso do wyboru — do tworzenia ISO, squashfs-tools do tworzenia SquashFS, jednak nic nie stoi na przeszkodzie, aby użyć opcji —cpio zamiast —squashfs do spakowania swojego dystrybucji w archiwum. busybox będzie użyty tylko, jeśli jest zainstalowany, ale jeśli nie, wszystkie niezbędne narzędzia zostaną skopiowane z twojego systemu. W ten sposób działanie boobstrap jest gwarantowane praktycznie wszędzie.

Na przykład, następujące polecenie stworzy obraz initrd, włączając w niego system gentoo-chroot/ spakowany jako obraz SquashFS, który zostanie pomyślnie załadowany po załadowaniu samego initrd. Przypominam, że aby używać Overlay FS razem z SquashFS, należy przekazać opcję jądru boobs.use-overlayfs, w przeciwnym razie system zostanie rozpakowany w tmpfs. Wszystkie dodatkowe ustawienia można przeprowadzić w oddzielnym katalogu, na przykład gentoo-settings/

# mkdir initramfs/
# mkinitramfs initramfs/ —overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs > initrd

Obraz initrd z systemem wewnątrz jest wygodny, gdy potrzebujesz szybko uruchomić system, na przykład przez PXE, lub na załadowanym systemie przełączyć się w initrd korzystając z polecenia kexec -l /boot/vmlinuz-* —initrd=./initrd && kexec -e, lub znajdując się w interfejsie wirtualnej maszyny QEMU (może nawet Proxmox), załadować z zdalnego źródła używając trzech poleceń IPXE: kernel http://[…] /vmlinuz, initrd http://[…] /initrd, boot. Jak widzisz, nawet zwykły initrd z twoim systemem wewnątrz ma wiele możliwości wykorzystania.

Do tworzenia nośników rozruchowych i obrazów używa się polecenia mkbootisofs, na przykład, tak wygląda tworzenie obrazu ISO z opcją —iso-9660 korzystając z syslinux do rozruchu w trybie Legacy (BIOS) i grub2 do rozruchu w trybie EFI (UEFI).

# mkdir initrd/
# mkinitramfs initrd/ > initrd
# mkdir isoimage/
# mkdir isoimage/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —legacy-boot syslinux —efi grub2 —output boot.iso
—overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs

Możesz określić jeden z trybów rozruchu lub w ogóle ich nie określać, odpowiedni obraz ISO zostanie pomyślnie stworzony.

Instalacja na dowolnym nośniku z późniejszym rozruchem z niego wykonywana jest opcją —bootable. Musisz samodzielnie utworzyć partycje na nośniku (fdisk) i sformatować je (mkdosfs, mke2fs i tak dalej), a następnie zamontować urządzenie w katalogu.

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

Uważaj! Opcja —bootable określa, z którego urządzenia blokowego zamontowany jest katalog i instaluje bootloader na tym urządzeniu. Jeśli zapomnisz zamontować urządzenie lub błędnie wskażesz katalog, który znajduje się np. na /dev/sda, bootloader na /dev/sda zostanie nadpisany. Używaj —bootable ostrożnie.

Instalacja dowolnego systemu GNU/Linux sprowadza się do jednej komendy. Można go zainstalować na dowolnym HDD, SSD itd. Warto przypomnieć, że jest to wciąż system działający z Overlay FS / SquashFS lub całkowicie ładowany do tmpfs, do wyboru.

Oprócz tego, boobstrap ma szereg interesujących cech i dodatkowych możliwości!

Na przykład możesz utworzyć markowy initrd boobstrap poleceniem mkinitramfs `mktemp -d` > /boot/initrd i uruchomić swój system z tym initrd, wskazując opcje jądra boobs.use-overlayfs boobs.search-rootfs=/dev/sda1. W takim przypadku /dev/sda1, na którym zainstalowany jest twój domowy system, zostanie podłączony jako read-only warstwa Overlay FS, a wszystkie zmiany, które wprowadzisz, zapiszą się tymczasowo w tmpfs. Możesz dodać opcję boobs.copy-to-ram, a wtedy cały twój system zostanie skopiowany do RAM, a dysk twardy można odłączyć od komputera. To wygodne, gdy będziesz musiał coś zepsuć, a zmiany można cofnąć po prostu restartując. 🙂

Ale co, jeśli jednak trzeba będzie zachować wszystkie zmiany w systemie? Na przykład, zainstalowałeś oprogramowanie lub coś innego. Pracując w czystym tmpfs niestety jest to niemożliwe, ale jeśli uruchomiłeś się z użyciem Overlay FS, to wszystkie zmiany, które zachodzą w systemie, są zapisywane w osobnym katalogu tmpfs: /mnt/overlayfs/rootfs-changes! Scenariusz użycia jest bardzo prosty. Uruchomiłeś swój system z urządzenia USB, popracowałeś, chciałeś zachować wszystko, co się zmieniło, to wtedy stwórz archiwum cpio i umieść je tutaj, na tym samym urządzeniu USB.

# cd /mnt/overlayfs/rootfs-changes
# find . -print0 | cpio —create —format "newc" —null —quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD

Możesz umieścić archiwum obok innych warstw SquashFS i cpio, wtedy podczas kolejnego uruchomienia archiwum zostanie podłączone jako kolejna warstwa tylko do odczytu. Aby kontynuować pracę z wprowadzonymi zmianami, użyj opcji ładowania boobs.rootfs-changes=\/rootfs-changes.cpio. Opcja boobs.rootfs-changes umożliwia podłączenie wskazanej warstwy z dostępem do modyfikacji. Warstwą może być urządzenie blokowe, na przykład możesz wskazać \/dev\/sdb1, wtedy wszystkie zmiany wprowadzone w Overlay FS będą po prostu zapisywane na \/dev\/sdb1.

Boobstrap, mimo szerokich możliwości, wciąż jest w fazie rozwoju, wszystkie twoje uwagi i propozycje są brane pod uwagę!

Źródło: linux.org.ru

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