Multi-LiveCD na pendrive’ie
W serwisie Hard Core Security Lab pojawiła się ostatnio informacja o płycie typu Live CD zawierającej 15 różnych dystrybucji Linuksa. Szczerze powiedziawszy nie bardzo wiem do czego taki twór ma służyć, ponieważ większość użytkowników (zwłaszcza tych bardziej zaawansowanych) już dawno wybrała swoją ulubioną dystrybucję typu Live i ewentualnie nawet dostosowała ją do swoich własnych wymagań doinstalowując brakujące programy.
W jednym z ostatnich zdań autor pisze:
“Warto docenić pracę włożoną w utworzenie tego projektu. Wbrew pozorom, utworzenie kompilacji złożonej z kilkunastu różnych systemów typu LiveCD wcale nie jest takie proste.”
Jakkolwiek zgadzam się z tym, że upchnięcie 15 dystrybucji na jednym krążku DVD faktycznie może nie być banalne, to jednak sam proces integracji dystrybucji, aby startowały z jednego krążka z jednym menu jest dosyć proste. W tym wpisie pokażę Wam jak zrobić coś takiego samemu na kilku partycjach pendrive’a. Dla przykładu posłużę się bardzo przydatnymi dystrybucjami SystemRescueCD oraz BackTrack 4.
Co będzie potrzebne:
- pendrive, wielkość odpowiednia na zmieszczenie dystrybucji
- pliki iso lub img tych dystrybucji
- zainstalowany GRUB wraz z plikami uruchomieniowymi (tzw. stage*)
Do działa:
- Na początku musimy utworzyć partycje na naszym pendrive’ie i sformatować je. Jako system plików najlepiej wybrać ext3. Użyjcie do tego waszego ulubionego narzędzia. Partycje oczywiście muszą być tak dobrane, aby zmieściły się na nie wybrane dystrybucje.
- Montujemy utworzone partycje (np. jako “/mnt/partycja1” i “/mnt/partycja2”).
- Kopiujemy na nie dane naszych dystrybucji:
- najpierw montujemy, jako root, obraz iso komendą:
mount -o loop backtrack4-final.iso /mnt/temp
- a następnie kopiujemy wszystkie dane z katalogu /mnt/temp na partycje naszego pendrive’a
cp -r /mnt/temp/* /mnt/partycja1
- najpierw montujemy, jako root, obraz iso komendą:
- BackTrack 4 korzysta z GRUB’a, także w tym przypadku ilość potrzebnych przeróbek w pliku konfiguracyjnym jest minimalna:
- otwieramy plik konfiguracyjny GRUB’a (/mnt/partycja1/boot/grub/menu.lst) i po każdej linii zaczynającej się od “title” dodajemy linie
root (hd0,0)
- na końcu pliku natomiast dopisujemy linie:
title Back configfile (hd0,0)/boot/grub/menu.lst
pierwsze “0” oznacza pierwszy dysk (jeśli uruchamiamy system z pendrive’a to zawsze jest on widziany jako pierwszy dysk), a drugie “0” pierwszą partycję tego dysku. Powyższa linijka mówi GRUB’owi, że wszystkie dane z configu są relatywne względem tej partycji. Tak zmodyfikowany plik zapisujemy jako “/mnt/partycja1/boot/grub/bt.menu.lst” (bez cudzysłowów).
- otwieramy plik konfiguracyjny GRUB’a (/mnt/partycja1/boot/grub/menu.lst) i po każdej linii zaczynającej się od “title” dodajemy linie
- Plik “menu.lst” modyfikujemy natomiast, aby zawierał tylko linie:
timeout 30 default 0 title BackTrack 4 configfile (hd0,0)/boot/grub/bt.menu.lst title SystemRescueCD configfile (hd0,1)/sysrcd.menu.lst title Boot from hard disk root (hd0) chainloader +1
W ten sposób tworzymy menu z którego będziemy wybierać do menu której dystrybucji chcemy przejść.
- Dla SystemRescueCD sprawa jest trochę trudniejsza ponieważ nie używa on GRUB’a tylko isolinux’a jako bootloader’a. Oznacza to, że cały plik konfiguracyjny musimy utworzyć sami. Nie jest to jednak trudne i dosyć szybko i prosto można przerobić istniejący config na config GRUB’a.
Tak samo jak w przypadku BackTrack’a montujemy iso SysRCD i odnajdujemy plik “isolinux/isolinux.cfg”. Wewnątrz zmieniamy:-
default rescuecd
zamieniamy na
default 0
- kasujemy wszystkie linie między linią zaczynającą się od “default”, a pierwszą linią zaczynającą się od “label”, za wyjątkiem linii “timeout”
- w liniach zaczynających się od słowa “label” zamieniamy je na “title”
- po liniach “title” dodajemy linie
root (hd0,1)
- linie “kernel” modyfikujemy tak, aby wskazywały na lokalizację plików jąder, które w tym wypadku znajdują się w katalogu “/isolinux”:
kernel /isolinux/rescuecd
- z linii zaczynających się od “append” kasujemy to słowo i pozostałą zawartość przenosimy do linii zaczynającej się od “kernel”
- w przeniesionej przed chwilą linii znajdujemy ciąg
initrd=initram.igz
i przenosimy go do osobnej linii zmieniając na
initrd /isolinux/initram.igz
linie zaczynające się od “append” ale mające inną wartość po “initrd=” traktujemy tak samo
- na końcu pliku kasujemy wpisy “disk1”, “disk2”, “floppy” i “nextboot”
- na końcu pliku dodajemy:
title Back configfile (hd0,0)/boot/grub/menu.lst
- tak zmodyfikowany plik zapisujemy jako “sysrcd.menu.lst” w katalogu w którym zamontowaliśmy iso SysRCD, czyli np. “/mnt/temp”
- przykładowy plik dla SysRCD znajduje się tutaj.
-
- Pozostaje nam już tylko upewnić się, że odpowiednie pliki GRUB’a znajdują się gdzie trzeba, oraz zainstalować GRUB’a na pendrive’ie, aby uczynić całość boot’owalną. Następujące pliki muszą być w katalogu “/boot/grub” na pierwszej partycji naszego pendrive’a:
- stage1
- e2fs_stage1_5
- stage2
Jeśli sformatowaliśmy partycję innym systemem plików niż ext2/ext3 to plik “e2fs_stage1_5” należy zastąpić innym, odpowiednim dla utworzonego systemu plików.
Aby zainstalowa GRUB’a wpisujemy następujące polecenia jako root (!WAŻNE! partycja na której znajdują się powyższe pliki musi być zamontowana podczas wykonywania tych poleceń):grub root (hd1,0) setup (hd1) quit
pierwsza komenda spowoduje uruchomienie GRUB’a i pozostawi nas w interaktywnej powłoce GRUB’a. W drugiej linii określamy gdzie znajdują się pliki GRUB’a. Przedostatnia linia instaluje GRUB’a do MBR pendrive’a, a ostatniej nie muszę chyba opisywać. ;) Oczywiście wartości w nawiasach dostosowujemy do własnych potrzeb. Czyli jeśli posiadamy dwa dyski twarde w komputerze to podłączony pendrive zostanie wykryty jako trzeci dysk, a że GRUB numeruje dyski i partycje od 0 to pierwsza partycja na pendrive’ie będzie oznaczona jako “(hd2,0)”
Efekt:
No i to by było na tyle. :) Po tym powinniśmy mieć na pierwszej partycji, skopiowanego BackTrack’a (na tej samej partycji w /boot/grub pliki menu.lst i bt.menu.lst), a na drugiej SystemRescueCD (z plikiem sysrcd.menu.lst w katalogu głównym partycji). Podczas uruchamiania powinniśmy dostać menu z którego możemy wybrać którą dystrybucje chcemy uruchomić, a po jej wybraniu powinniśmy przejść do menu z wpisami do uruchamiania tej dystrybucji. Na dole zaś powinien być wpis “Back” którym powracamy do poprzedniego menu.
W ten sam sposób można potraktować (prawie) dowolną dystrybucję.
Co zaś do nagrywania tego na płytę to przyznaję, że nigdy tego nie próbowałem (mój netbook nie posiada czytnika DVD), ale generalnie wygląda to tak samo tylko zamiast na partycje wszystko kopiujemy do katalogów i wpisy tworzymy relatywnie do tych katalogów. Żeby następnie stworzyć boot’owalną płytę zaglądamy tutaj.
Recent Comments