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
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