Chciałbym przedstawić Państwu framework o nazwie boobstrap, napisany w POSIX shell, do tworzenia obrazów rozruchowych z dystrybucjami GNU/Linux. Framework pozwala przejść przez cały proces w trzech prostych krokach: od wdrożenia systemu w chroot, przez tworzenie obrazu initramfs obejmującego system z chroot, aż po końcowy rozruchowy obraz ISO. boobstrap zawiera trzy narzędzia: mkbootstrap, mkinitramfs i mkbootisofs.
mkbootstrap instaluje system w osobnym katalogu, ma wbudowane wsparcie dla CRUX, a w przypadku Arch Linux / Manjaro i dystrybucji opartych na Debianie należy użyć zewnętrznych narzędzi pacstrap, basestrap i debootstrap odpowiednio.
mkinitramfs tworzy obraz initramfs, można użyć zainstalowanego systemu w katalogu jako „overlay”, skompresowanego przy użyciu SquashFS, lub uruchomić system bezpośrednio w tmpfs. Na przykład, polecenie mkinitramfs `mktemp -d` —overlay "arch-chroot/" —overlay "\/home" —squashfs-xz —output initrd stworzy plik initrd, obejmujący dwa overlay'e z systemem „arch-chroot/” i Twoim „\/home”, skompresowanymi przy użyciu SquashFS, który następnie można załadować przez PXE w tmpfs, lub stworzyć rozruchowy obraz ISO z tym initrd.
mkbootisofs tworzy rozruchowy obraz ISO BIOS/UEFI z podanego katalogu. Wystarczy umieścić w katalogu \/boot\/vmlinuz i \/boot\/initrd.
boobstrap nie używa busybox, a do tworzenia środowiska roboczego initramfs kopiowany jest minimalny zestaw programów przy użyciu ldd, niezbędnych do uruchomienia i przełączania się w systemie. Lista programów do skopiowania, jak i wszystko inne, może być skonfigurowana w pliku konfiguracyjnym \/etc\/boobstrap\/boobstrap.conf. Możesz także zainstalować dowolną minimalistyczną dystrybucję w osobnym chroot/, z którego następnie można stworzyć pełnoprawne środowisko initramfs. Jako takie minimalistyczne, ale jednocześnie pełnoprawne środowisko, proponowany jest szablon „crux_gnulinux-embedded”, który po xz zajmuje kompromisowe 37MB. busybox, oprócz swojego rozmiaru, 3-5MB w porównaniu do 30-50MB pełnoprawnego środowiska GNU/Linux, nie oferuje żadnych dodatkowych korzyści, dlatego użycie busybox w projekcie wydaje się nieuzasadnione.
Jak szybko sprawdzić funkcjonalność i rozpocząć pracę? Zainstaluj i uruchom.
# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# 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życie squashfs-tools nie jest obowiązkowe, możesz pracować w tmpfs, przy odpowiedniej ilości pamięci RAM. Jeśli w systemie czegoś brakuje, boobstrap poinformuje o tym przy uruchomieniu.
Aby uprościć tworzenie konfiguracji, boobstrap oferuje użycie „szablonów” i „systemów”, których istotą jest wykorzystanie „szablonów” (bootstrap-templates/) do szybkiej instalacji systemów z pliku, a bezpośrednio „systemy” (bootstrap-systems/) służą do konfigurowania końcowych ustawień.
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 uruchamiasz boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild, który załaduje początkową konfigurację z wspomnianego pliku, wykona wszelkie niezbędne ustawienia i przygotuje bootowalny obraz ISO. Jest to wygodne, gdy wiele systemów wykorzystuje podobną konfigurację: zamiast za każdym razem opisywać ten sam zestaw pakietów, korzystasz z jednego szablonu, na podstawie którego tworzysz bootowalne obrazy systemów z końcową konfiguracją.
Gdzie to wszystko wykorzystać?
Konfigurujesz system w pliku jeden raz, a uruchomieniem go wykonujesz jego budowę i/lub aktualizację. System działa w tmpfs, co czyni go jednorazowym de facto. W przypadku awarii systemu jednym naciśnięciem przycisku Reset wracasz do stanu początkowego. Możesz bez obaw wykonać rm -rf /.
Możesz lokalnie konfigurować wszystkie swoje systemy, tworzyć obrazy, testować je w maszynie wirtualnej lub na oddzielnym „sprzęcie”, a następnie przesyłać je na zdalny serwer i za pomocą zaledwie dwóch poleceń kexec -l /vmlinuz —initrd=/initrd && kexec -e aktualizować cały system, ponownie uruchamiając go w tmpfs.
Podobnie możesz przetłumaczyć wszystkie systemy, na przykład na VDS, do pracy w tmpfs, a dysk /dev/vda zaszyfrować i używać tylko do danych, bez potrzeby przechowywania na nim systemu operacyjnego. Jedynym "punktem wycieku informacji" w takim przypadku stanie się jedynie "zimny zrzut" pamięci twojej maszyny wirtualnej, a w przypadku kompromitacji systemu (na przykład przez odgadnięcie hasła ssh lub podatność w exim), możesz załadować nowy obraz ISO przez "panel sterowania" swojego dostawcy, aby ponownie przywrócić VDS do działania, pamiętając jednocześnie o edycji konfiguracji systemu, usuwając wszystkie podatności. To jest szybsze niż reinstalacja, późniejsza konfiguracja i/lub przywracanie z kopii zapasowej, ponieważ w istocie dany ISO z twoim systemem to twoja kopia zapasowa. "Siedem nieszczęść - jedno resetowanie."
W końcu możesz stworzyć dowolny dystrybucję pod swoje potrzeby, nagrać ją na pamięć USB i pracować na niej, aktualizując w miarę potrzeby i ponownie zapisując na pamięć USB. Wszystkie dane przechowuj w chmurze. Już nie musisz martwić się o bezpieczeństwo systemu i robienie jego kopii zapasowej, gdyż system, powtarzam, w zasadzie stał się "jednorazowy."
Twoje życzenia, sugestie i uwagi są mile widziane.
W repozytorium pod linkiem znajduje się szczegółowy plik README (po angielsku) z opisem każdej użytecznej aplikacji i przykładami użycia, a także szczegółowa dokumentacja w języku rosyjskim oraz historia rozwoju, dostępne pod linkiem: Zestaw skryptów rozruchowych boobstrap.
Źródło: linux.org.ru

