_                               _           
(_)_ __ ___  _ __ ___  _   _  __| | _____  __
| | '_ ` _ \| '_ ` _ \| | | |/ _` |/ _ \ \/ /
| | | | | | | | | | | | |_| | (_| |  __/>  < 
|_|_| |_| |_|_| |_| |_|\__,_|\__,_|\___/_/\_\

Ingerencja w obraz immudex - przewinięcie

Ze względu na specyfikę systemu immudex, może zajść potrzeba ingerencji w jego obraz. Możemy dodać swoje ulubione oprogramowanie lub sterowniki niezbędne do wygodnego korzystania z tej dystrybucji na naszym komputerze. Przewinięcie głownie skupia się na ingerencji w archiwum squashfs, które zawiera rootfs dystrybucji.

Pro tip! Przewinięcia najlepiej dokonywać na systemie uruchomionym z pamięci USB lub płyty. Ponieważ zamontowane archiwum squashfs nadal będzie zajmować miejsce na partycji mimo jego usunięcia, i nowe archiwum może się nie skopiować ze względu na mała ilość miejsca na dysku. Głównie będzie to mieć miejsce jeśli dotychczasowe archiwum waży ponad 2GB.

Obsługa tego formatu plików, wymaga zainstalowanego w systemie oprogramowania. Wersje immudex są w nie domyślnie wyposażone. Więc czynności sprowadzają się głównie do wybrania dogodnego miejsca (może być potrzebna większa ilość wolnego miejsca na dysku) i operacja kilkoma poleceniami. Aby rozpocząć wprowadzanie zmian do obrazu musimy go najpoczątku wypakować. Do wypakowania posłużymy się poleceniem unsquashfs.

$ sudo unsquashfs -d chroot /run/live/medium/live/filesystem.squashfs

Opcja -d służy wskazaniu katalogu, do którego należy wypakować rootfs, jeśli folder nie istnieje to zostanie utworzony. Następnie wskazujemy ścieżkę do archiwum squashfs. Jeśli z jakiegoś powodu musimy nadpisać zawartość istniejącego już katalogu, należy dodać opcję -f.

Aby rozpocząć wprowadzanie zmian do rootfs, należy zmienić katalog główny obecnie uruchomionej powłoki. Tutaj warto się zatrzymać i zastanować na tym jakie zmiany chcemy wprowadzić. Jesli jest to dodanie jakiś pliku, instalacja dodatkowych pakietów. To zwykłe przełączenie katalogu głównego powinno wystarczyć. Jednak jeśli w grę wchodzi instalacja sterownika lub kompilacja nie których pakietów to może być wymagana obecność interfejsów systemowych takich jak /dev, /proc i tak dalej. Dlatego trzeba je podmotować przed przełączeniem katalogu głównego.

/* w niektórych specyficznych przypadkach
$ for i in /dev /dev/pts /proc /sys /run; do sudo mount -B chroot${i}; done
*/
$ sudo chroot chroot/ bash

Po zmianie katalogu głównego możemy dokonywać dowolnych zmian. Gdy zakończymy już ich wprowadzanie, warto pamiętać o kilku czynnościach:

  1. Utrzymaniu porządku w pakietach, za pomocą podpoleceń narzędzia apt-get: clean, autoremove oraz autoclean (głownie chodzi o pozbycie się pobranych pakietów oraz tych już nie potrzebnych).
  2. Usunięciu wszystkich plików roboczych (tych, które nie są już potrzebne).
  3. Usunięcie historii wprowadzanych poleceń. Jeśli przewaliśmy działanie powłoki, to historia trafiła już do pliku, więc pomoć nam może polecenie echo > ~/.bash_history. Gdy sesja powłoki jeszcze działa możemy wydać polecenie history -c.

Oczywiście to tylko rady. Jeśli nie chcemy się do nich stosować nie musimy. Ja stosuje je podczas wydawania nowych wersji immudex (a przynajmnie staram się stosować).

Jeśli skończyliśmy wprowadzanie zmian, możemy spakować rootfs do nowego pliku archiwum. Do tej czynności wykorzystamy polecenie mksquashfs.

$ sudo mksquashfs chroot filesystem.squashfs -e boot

Tutaj istotne jest aby archwium squashfs nazwywało się tak jak podano na przykładzie filesystem.squashfs. Program odpowiedzialny za obsługę sesji LiveCD live-boot domyślnie szuka archiwym squashfs o takiej nazwie. Inne nazwy nie będą działać.

Pierwszym argumentem jest wskazanie katalogu zawierającego rootfs, następnie podajemy nazwę archiwum. Podczas budowania immudex wykorzystuje opcję -e, aby program nie pakował plików jądra (one są potrzebne na zewnątrz).

Tak przygotowane archiwum może skopiować na dysk. Pamiętajmy jednak o tym, że jeśli instalowane były dodatkowe modułu jądra (np. sterowniki), aktualizowane było jądro lub instalacje pakietów mogły wpłynąć na obraz ram dysku (initrd.img) to należy również skopiować pliki jądra. Jeśli nie mamy pewności czy nasze czynności miały wpływ na te składniki systemu to najbezpieczniej jest je wydobyć z rootfs i skopiować pod odpowiednimi nazwami (vmlinuz - dla jądra oraz initrd - dla ram dysku).

~xf0r3m