Tworzenie obrazów bootstrap v1.0


Tworzenie obrazów bootstrap v1.0

Chciałbym przedstawić Państwu framework o nazwie boobstrap, napisany w powłoce POSIX, służący do tworzenia obrazów startowych z dystrybucjami GNU/Linux. Framework pozwala przejść cały proces w zaledwie trzech prostych krokach: od wdrożenia systemu w chroot, utworzenia obrazu initramfs zawierającego chrootowany system, a ostatecznie startowego obrazu ISO. boobstrap zawiera trzy narzędzia, odpowiednio: mkbootstrap, mkinitramfs i mkbootisofs.

mkbootstrap instaluje system w osobnym katalogu, istnieje natywna obsługa CRUX, a w przypadku dystrybucji Arch Linux / Manjaro i Debian należy użyć narzędzi firm trzecich odpowiednio pacstrap, basestrap i debootstrap.

mkinitramfs tworzy obraz initramfs, można użyć zainstalowanego systemu w katalogu jako „nakładki”, skompresowanego za pomocą SquashFS lub po uruchomieniu systemu pracować bezpośrednio w tmpfs. Na przykład polecenie mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd utworzy plik initrd, zawierający dwie nakładki z „arch- chroot/” i twój „/home” skompresowany przy użyciu SquashFS, który możesz następnie uruchomić przez PXE w tmpfs lub utworzyć startowy obraz ISO za pomocą tego initrd.

mkbootisofs tworzy startowy obraz ISO systemu BIOS/UEFI z określonego katalogu. Po prostu umieść /boot/vmlinuz i /boot/initrd w katalogu.

boobstrap nie korzysta z busyboxa, a aby stworzyć działające środowisko initramfs, za pomocą ldd kopiowany jest minimalny zestaw programów niezbędnych do uruchomienia i przełączenia się do systemu. Listę programów do skopiowania, jak wszystko inne, można skonfigurować za pomocą pliku konfiguracyjnego /etc/boobstrap/boobstrap.conf. Możesz także zainstalować dowolną minimalistyczną dystrybucję w osobnym katalogu chroot/, z którego możesz następnie stworzyć pełnoprawne środowisko initramfs. Jako takie minimalistyczne, ale jednocześnie pełnoprawne środowisko proponuje się wykorzystanie szablonu „crux_gnulinux-embedded”, który po xz zajmuje kompromis 37 MB. busybox, poza swoim rozmiarem 3-5 MB w porównaniu z 30-50 MB w pełnym środowisku GNU/Linux, nie oferuje już żadnych korzyści, więc używanie busybox w projekcie nie wydaje się właściwe.

Jak szybko sprawdzić funkcjonalność i zacząć? Zainstaluj i uruchom.

# klon git https://github.com/sp00f1ng/boobstrap.git
#boobstrap CD
# make install# boobstrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

Musisz także zainstalować zależności, a mianowicie: cpio, grub, grub-efi, dosfstools, xorriso. Używanie narzędzi do squashfs nie jest konieczne; możesz pracować w tmpfs z odpowiednią ilością pamięci RAM. Jeśli czegoś brakuje w systemie, boobstrap zgłosi to po uruchomieniu.

Aby uprościć tworzenie konfiguracji, boobstrap sugeruje użycie „szablonów” i „systemów”, których istota polega na wykorzystaniu „szablonów” (bootstrap-templates/) do szybkiej instalacji systemów z pliku, a bezpośrednio „systemów” (bootstrap- systemy/) użyte do skonfigurowania ostatecznych konfiguracji.

Na przykład uruchomienie skryptu boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild zainstaluje minimalną konfigurację systemu CRUX GNU/Linux i zapisze ją w pliku crux_gnulinux-embedded.rootfs, następnie uruchomisz boobstrap/bootstrap-systems /default/crux_gnulinux.bbuild, który załaduje podstawową konfigurację ze wspomnianego pliku, wykona całą niezbędną konfigurację i przygotuje startowy obraz ISO. Jest to wygodne, gdy np. wiele systemów korzysta z tego samego rodzaju konfiguracji: aby nie opisywać za każdym razem tego samego zestawu pakietów, stosuje się jeden szablon, na podstawie którego tworzy się obrazy startowe systemów z ostateczną konfiguracją.

Gdzie mogę to wszystko wykorzystać?

Konfigurujesz system w pliku raz i uruchamiając go, budujesz i/lub aktualizujesz. System działa w formacie tmpfs, co czyni go zasadniczo jednorazowym. Jeśli system ulegnie awarii, jednym kliknięciem przycisku Reset możesz powrócić do pierwotnego stanu. Możesz bezpiecznie uruchomić rm -rf /.

Możesz skonfigurować konfiguracje wszystkich swoich systemów lokalnie, utworzyć obrazy, przetestować je na maszynie wirtualnej lub oddzielnym sprzęcie, następnie przesłać je na zdalny serwer i uruchomić tylko dwie komendy kexec -l /vmlinuz —initrd=/initrd && kexec -e aby zaktualizować cały system, uruchamiając go ponownie w tmpfs.

W ten sam sposób można przenieść wszystkie systemy np. na VDS do pracy w tmpfs, a dysk /dev/vda zaszyfrować i używać go wyłącznie do przechowywania danych, bez konieczności trzymania na nim systemu operacyjnego. Jedynym „punktem wycieku informacji” w tym przypadku będzie jedynie „zimny zrzut” pamięci Twojej maszyny wirtualnej, a w przypadku naruszenia bezpieczeństwa systemu (na przykład poprzez odgadnięcie hasła ssh lub luki w zabezpieczeniach Exim), możesz pobrać nowy obraz ISO za pośrednictwem „panelu sterowania” swojego dostawcy, aby ponownie uruchomić VDS, nie zapominając o edycji konfiguracji systemu w celu zamknięcia wszystkich luk. Jest to szybsze niż ponowna instalacja, późniejsza konfiguracja i/lub przywracanie z kopii zapasowej, ponieważ w istocie obraz ISO do pobrania z systemem jest kopią zapasową. „Siedem problemów – jeden reset”.

Ostatecznie możesz stworzyć dowolną dystrybucję na swoje potrzeby, zapisać ją na dysku USB i pracować na niej, aktualizując ją w razie potrzeby i ponownie przepisując na dysk USB. Wszystkie dane są przechowywane w chmurach. Nie musisz już martwić się o bezpieczeństwo systemu i tworzyć kopii zapasowej, gdy system, powtarzam, stał się w zasadzie „jednorazowy”.

Twoje życzenia, sugestie i komentarze są mile widziane.

W repozytorium pod linkiem poniżej znajduje się szczegółowy plik README (w języku angielskim) z opisem każdego narzędzia i przykładami użycia, pod linkiem dostępna jest także szczegółowa dokumentacja w języku rosyjskim oraz historia rozwoju: Kompleks skryptu rozruchowego Boobstrap.

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

Dodaj komentarz