Bootowalny pendrive USB + multiiso menu
Wstęp
Praktycznie każdy użytkownik komputera posiada pamięć przenośną w postaci pendrive'a lub też kartę pamięci z czytnikiem. Dzięki niskiej cenie gigabajtowe pamięci są dostępne praktycznie dla każdego. Ich zalety powodują, że płyty optyczne (CD, DVD) wykorzystywane jako przenośny nośnik danych przechodzą do lamusa. Pendrive'y są małe (rozmiar), pojemne i nie wymagają specjalnego oprogramowania do zapisu danych. Możemy je też używać jako nośnik danych dla programów ratunkowych dostarczanych w postaci obrazów ISO typu Kaspersky Rescue Disk, GParted i innych, które do tej pory uruchamiane były z płyt CD, DVD.
W poniższym artykule pokażemy:
w jaki sposób uczynić pendrive samoouruchamialnym
w jaki sposób uruchamiać programy z obrazów płyt ISO oraz obrazów dyskietek IMA/IMG znajdujących się na pendrive'ie
w jaki sposób zrobić i umieścić na pendrive własne menu z grafiką w tle, umożliwiające uruchamianie zgromadzonych na nim obrazów ISO
Wykorzystane programy
W niniejszym tutorialu wykorzystaliśmy następujące programy:
MultiBootISOs 0.2 - służący do zainstalowania linuxa (syslinux) oraz bootloadera (grub4dos) na pendrive'ie - do ściągnięcia z naszego działu download: pobierz MultiBootISOs
MobaLiveCD 2.1 - służący do emulowania komputera i pozwalający na uruchomienie systemu operacyjnego bezpośrednio z obrazu ISO lub bezpośrednio z pendrive'a podłączonego do portu USB bez potrzeby restartu komputera - do ściągnięcia z naszego działu download: pobierz MobaLiveCD
grub4dos 0.4.4 + konfig + struktura katalogów do ściągnięcia lokalnie - najnowszą wersję grub4dos można ściągnąć ze strony domowej programu
syslinux.exe 3.8.4 - jego najnowszą wersję znajdziemy w katalogu /win32 w archiwum, dostępnym tutaj.
gfxboot + cpio + skrypty - za pomocą którego utworzymy menu graficzne - do ściągnięcia lokalnie
Gimp - służący do utworzenia grafiki, która będzie tłem menu - do ściągnięcia tutaj.
Tworzenie bootowalnego pendrajwa
Niniejszy artykuł został utworzony w konfiguracji opartej na systemach operacyjnych Windows Vista oraz Windows 7. Wymagany system plików na pendrive'ie to FAT16 lub FAT32 (domyślny w 99% sprzedawanych na rynku pendrive'ów).
Do utworzenia bootowalnego pendrive'a wykorzystamy MultiBootISOs. Program jest aplikacją typu portable, czyli nie wymaga instalacji.
Przed jego uruchomieniem zaleca się wykonanie kopii zapasowej plików znajdujących się na karcie/pendrive'ie, chociaż nasze doświadczenia pokazują, że pliki znajdujące się na pendrive nie są kasowane.
Po uruchomieniu MultiBootISOs wybieramy literę napędu, odpowiadającej naszej karcie pamięci/pendrive'owi na której/ym zostanie zainstalowany syslinux oraz grub4dos:
Pojawienie się powyższego komunikatu świadczy o poprawnej instalacji. W katalogu głównym powinny się pojawić następujące pliki:
Samouruchomienie USB
Po przeprowadzeniu opisanych czynności należy sprawdzić, czy nasz pendrive umożliwia uruchomienie z niego syslinuxa. Możemy to sprawdzić na parę sposobów. Poniżej przedstawiamy dwie metody, które nas upewnią, że nasz pendrive jest bootowalny.
1. Wykorzystamy program MobaLiveCD dostępny w naszym dziale download: pobierz MobaLiveCD.
Program nie wymaga instalacji. Po jego ściągnięciu uruchamiany go z prawami aministratora (klikamy na pliku prawym klawiszem myszy i wybieramy opcję "uruchom jako administrator". Oczom naszym ukaże się menu programu:
Klikamy na przycisk "Run the LiveUSB" a następnie wybieramy literę odpowiadającą naszemu napędowi (pendrive/karta pamięci):
i klikamy "OK". Program zapyta nas, czy chcemy utworzyć wirtualny dysk twardy:
Odpowiadamy "No" i uruchomi się emulator wirtualnego komputera PC, którego głównym dyskiem będzie nasz pendrive/karta pamięci.
2. Druga metoda to zrestartowanie komputera i ustawienie w biosie płyty głównej/komputera opcji priorytetu startu z urządzenia USB. Niestety nie będziemy tego opisywać w niniejszym artykule ze względu na zbyt wiele możliwości jego ustawienia (praktycznie każdy producent płyty głównej/komputera opcje odpowiedzialne za priorytet bootowania umieszcza w innym miejscu).
Po prawidłowym ustawieniu priorytetu bootowania (USB jako pierwsze) po restarcie komputera powinniśmy zobaczyć podobną zawartość ekranu jak w przypadku skorzystania z MobaLiveCD.
Uaktualnienie linuxa oraz bootloadera
Po zainstalowaniu systemu, bootloadera oraz sprawdzeniu naszego pendrive'a należy uaktualnić linuxa oraz bootloadera do ich najnowszych wersji. Wykorzystany przez nas MultiBootISOs w wersji 0.2 instaluje syslinuxa w wersji 3.83 oraz grub4dos w wersji 0.4.4 z marca 2009.
Najnowszą wersję Grub4dos znajdziemy na jego stronie domowej. Po ściągnięciu archiwum z najnowszą wersją Grub4dos (grub4dos-x.x.x-data.zip) wypakowujemy plik grub.exe i kopiujemy go do katalogu głównego naszego pendrive'a nadpisując jego starszą wersję.
Najnowsza wersja syslinuxa dostępna jest na stronie domowej programu. Zakładamy katalog box na dysku C. Po ściągnięciu archiwum z jego najnowszą wersją wypakowujemy plik "syslinux.exe" znajdujący się w katalogu "win32" na dysk twardy komputera do utworzonego przed chwilą katalogu c:\box.
Po rozpakowaniu i przegraniu nadajemy prawa administratora (pod Vistą/Windows 7 klikamy na "syslinux.exe" prawym klawiszem myszy i z otwartego menu wybieramy ostatnią pozycję (właściwości/properties) a następnie w zakładce kompatybilność/compatibility zaznaczamy opcję "uruchom program jako administrator/run this program as administrator", co potwierdzamy naciśnięciem przycisku "OK").
Uruchamiamy wiersz poleceń (wciskamy na klawiaturze lewy klawisz windows + R i wpisujemy komendę cmd). Po otwarciu okna zmieniamy katalog (cd c:\box). Uaktualnienie linuxa następuje po wydaniu komendy: "syslinux.exe -maf X:" gdzie X jest literą naszego pendrive'a (nie zapomnijmy wcześniej zamknąć sesję w MobaLiveCD - o ile była otwarta).
Weryfikację aktualizacji można przeprowadzić na dwa sposoby:
1. W katalogu głównym pendrive'a zaktualizowany zostanie ukryty plik "ldlinux.sys", co poznać można po dacie jego utworzenia (powinna odpowiadać momentowi w którym wykonane zostało opisane powyżej polecenie).
2. za pomocą programu MobaLiveCD -> wcześniej należy w pliku konfiguracyjnym linuxa (syslinux.cfg w głównym katalogu pendrive'a) zahashować (postawić znak # przed wpisami) wpisy "KERNEL grub.exe"
-> po uruchomieniu systemu za pomocą MobaLiveCD sprawdzamy wersję linuxa (oryginalnie 3.83 - na poniższym obrazku widać zaktualizowaną wersję 3.84) -> po sprawdzeniu usuwamy wpisane "#" z pliku konfiguracyjnego syslinux.cfg.
Utworzenie menu
Poniżej zajmiemy się utworzeniem menu, za pomocą którego będzie można uruchomić programy znajdujące się na samouruchamialnych obrazach ISO/IMG/IMA znajdujących się na naszym pendrivie'ie.
Aby uprościć tworzenie wymaganych katalogów oraz plików konfiguracyjnych należy ściągnąć stworzone przez nas archiwum i rozpakować jego zawartość w głównym katalogu pendrive'a. Po rozpakowaniu struktura plików oraz katalogów wyglądać będzie następująco:
/boot/grub/ -> tutaj umieszczone będą pliki wymagane do utworzenia menu
/boot/gfx/ -> tutaj umieszczone będą pliki odpowiedzialne za graficzne tło menu
/iso/ -> tutaj umieszczone będą obrazy ISO/IMG/IMA
/syslinux.cfg -> plik konfiguracyjny syslinuxa
/boot.msg -> menu do pliku konfiguracyjnego syslinuxa
/menu.lst -> stary plik menu, który można skasować
Efekt sprawdzamy poprzez uruchomienie wirtualnego systemu za pomocą MobaLiveCD. Naszym oczom powinno się pojawić następujące menu:
Konfiguracja własnego menu
W pliku konfiguracyjnym "syslinux.cfg" (katalog główny pendrive'a) znajdują się parametry uruchomienia bootloadera wraz ze ścieżką dostępu do pliku konfiguracyjnego głównego menu.
W naszym przypadku wszystkie pliki odpowiedzialne za utworzenie menu głównego oraz podmenu umieszczone są w katalogu "/boot/grub/". Znajdują się tam:
menu.lst -> główne menu
submenu1.lst -> podmenu 1
submenu1.2st -> podmenu 2
submenu1.3st -> podmenu 3
submenu1.4st -> podmenu 4
Poniżej prezentujemy skrócony opis menu (menu.lst) głównego opartego na bootloaderze grub4dos:
gfxmenu /boot/gfx/menu <- ścieżka do menu graficznego (którego tworzenie opisujemy w dalszej części artykułu)
default 0
timeout 30
kernel grub.exe
#podmenu 1 - wpis odpowiedzialny za utworzenie pierwszego podmenu
title --> Linux systems <- nazwa podmenu
lock
configfile /boot/grub/submenu1.lst <- ścieżka dostępu oraz plik z zawartością podmenu
#podmenu 2 - wpis odpowiedzialny za utworzenie drugiego podmenu
title --> HDD Utils
lock
configfile /boot/grub/submenu2.lst <- ścieżka dostępu oraz plik z zawartością podmenu
# pozycja - przykładowa pozycja w menu
title System Rescue CD 4.3.1 <- nazwa pozycji
map /iso/systemrescuecd-x86-1.3.4.iso (0xff)
map --hook
chainloader (0xff)
boot
Więcej sprawdzonych przez nas przykładów wpisów dla uruchomienia poszczególnych obrazów ISO znajdziecie w naszym menu przykładowym, którego pliki konfiguracyjne powinny znajdować się na Waszym pendrive'ie. Znajdują się tam wpisy dla System Rescue CD 4.3.1, Ultimate Boot CD 5.0 RC1, Puppy Linux 4.31, Linux Mint 8, Ubuntu 9.10, Seagate Tools, EASEUS Disk Copy 2.3, Paragon Backup & Recovery 10, Parted Magic 4.8, GParted Live-CD v0.5.0-3 Beta i innych.
Więcej przykładów wpisów konfiguracyjnych dla innych programów znajdziecie na stronach Bootlandu, m.in. : tutaj.
Tworzenie menu graficznego
Aby urozmaicić nasze menu możemy: ustalić kolory czcionki w menu, wybrać kolory podświetlenia, ustalić pozycję wyświetlania menu oraz co najciekawsze, możemy wykorzystać własną grafikę jako tło menu.
Aby tego dokonać na dysku twardym (nie na pendrive'ie) rozpakowujemy ściągnięte wcześniej archiwum zawierające gfxboot + cpio + skrypty, które posłużą nam do stworzenia graficznego menu.
Po rozpakowaniu archiwum "gfx.zip" struktura katalogów powinna wyglądać następująco:
Własną grafikę przygotować można przy wykorzystaniu darmowego edytora grafiki Gimp, który w wersji portable jest dostępny tutaj.
Po ściągnięciu i rozpakowaniu uruchamiamy Gimpa. Domyślnie nasze menu posiada rozdzielczość ekranu wynoszącą 800x600 i taką wybieramy w Gimpie otwierając menu "Plik" -> "Nowy" lub naciskając klawisze "CTRL - N". W nowootwartym oknie ustawiamy rozdzielczość 800x600 a w opcjach zaawansowanych rozdzielczość X oraz Y na 150,000:
Są to istotne parametry, bez ustawienia których nie zobaczymy grafiki uruchamiając naszego pendrive'a. W nowootwartym oknie przygotowujemy lub wklejamy interesującą nas grafikę po czym zapisujemy ją wciskając kombinacje klawiszy SHIFT + CTRL + S lub też korzystając z menu "Plik" -> "Zapisz jako". W otwartym oknie wybieramy format JPG (rozwijąc podmenu "Wybór typu pliku") i zapisujemy naszą grafikę pod nazwą "back.jpg".
Następnie kopiujemy zapisany przed chwilą plik "back.jpg" do podkatalogu "files" w rozpakowanym niedawno katalogu "gfx" (który znajduje się na dysku twardym).
W katalogu "files" znajduje się plik konfiguracyjny "gfxboot.cfg", który jest odpowiedzialny za wygląd oraz położenie naszego menu.
Istotne parametry:
menu_start_x=50 <- odpowiada za położenie menu - oś X
menu_start_y=95 <- odpowiada za położenie menu - oś Y
menu_max_entries=15 <- maksymalna ilość wyświetlanych jednocześnie na ekranie pozycji w menu
menu_text_normal=0xffffff <- kolor tekstu poszczególnych pozycji w menu
menu_text_select=0xff0000 <- kolor podświetlonej pozycji
Po wyedytowaniu interesujących nas opcji zapisujemy plik i generujemy nasze nowe menu poprzez uruchomienie skryptu "utworz-menu.cmd" znajdującego się w katalogu "gfx". Po jego uruchomieniu w katalogu "gfx" utworzony zostanie plik o nazwie "menu", który kopiujemy do naszego pendrive'a do katalogu "/boot/gfx/" nadpisując znajdujący się tam poprzednik.
Efekty naszej pracy sprawdzamy za pomocą MobaLiveCD.
Każde z podmenu może mieć własną, indywidualną grafikę. Wystarczy w opisany powyżej sposób przygotować odpowiednie menu, zmieniając mu nazwę np. na menub i dopisać w pliku konfiguracyjnym danego podmenu (w naszym przypadku /grub/boot/submenuX.lst) nową nazwę: "gfxmenu /boot/gfx/menub".
Problemy
Należy pamiętać, że grub4dos podczas swojej pracy emuluje napęd CD-ROM/DVD-ROM oraz stację dyskietek. Większość samouruchamialnych obrazów płyt ISO oraz obrazów dyskietek IMA/IMG można uruchomić za jego pomocą bez większych przeszkód.
Problemy pojawiają się przy bardziej skomplikowanych obrazach płyt zawierających rozbudowane wielopoziomowe menu zbudowane przy pomocy grub4dos oraz innych bootloaderów. Problemy pojawiają się też w przypadku niektórych dystrybucji linuxa, gdzie zamapowane napędy nie są widoczne przez kernel. W takich przypadkach często pomaga przegranie niektórych plików z obrazu ISO bezpośrednio na pendrive'a przy zachowaniu tej samej struktury katalogów.
Przykładowe konfiguracje takich bardziej opornych w instalacji dystrybucji zawierają pliki konfiguracyjne naszego przykładowego menu, gdzie przy konfiguracjach np Kaspersky Rescue, Puppy Linux czy też opisaliśmy sposoby postępowania w celu ich poprawnego uruchomienia.
Więcej przykładów konfiguracji dla różnych dystybucji typu LiveCD znajdziecie pod tym adresem
Czasami podczas próby uruchomienia niektórych obrazów pojawia się poniższy komunikat:
Oznacza on, że aby dany obraz ISO mógł być uruchomiony musi być jedną całością na pendrive'ie (nie może być sfragmentowany). W takim przypadku można skorzystać z programów służących do defragmentacji plików (np. Wincontig). Jeżeli to rozwiązanie nie pomoże warto przekopiować wszystkie dane z pendrive'a na dysk twardy komputera, sformatować pendrive'a i przegrać z powrotem dane zaczynając od plików ISO.
Domyślnie grub4dos po jego uruchomieniu "widzi" naszego pendrive'a jako dysk "hd0". Dlatego też w pliku konfiguracyjnym syslinux.cfg znajdującym się w głównym katalogu pendrive'a znajduje się wpis odwołujący do "hd0".
Jednak w przypadku niektórych komputerów grub4dos widzi pendrive'a jako stację dyskietek "fd0" i w takim przypadku nasze menu graficzne nie zostanie automatycznie załadowane.
Aby temu zapobiec przygotowaliśmy menu w którym domyślnie uruchamiana jest konfiguracja przeznaczona dla komputerów, których płyta główna traktuje pendrive'a jako dysk twardy.
Czasami jednak traktowany jest on jako stacja dyskietek i wtedy w menu startowym należy wpisać "fd0" i zatwierdzić klawiszem ENTER.
Należy pamiętać o dużych i małych literach. Systemy unixowe rozróżniają duże i małe litery w nazwach plików i w przeciwieństwie do systemów Windows pliki test.iso oraz TEST.iso traktowane są jako dwa różne pliki. Czyli, jeżeli w plikach konfiguracyjnych odwoływać się będziemy do pliku "moJE.ISO" to plik znajdujący się fizycznie na pendrive'ie musi mieć identyczną nazwę ("moJE.ISO").
Mamy nadzieję, że artykuł ten będzie pomocny w tworzeniu własnego, samouruchamialnego napędu USB. Jeżeli ktoś z Was ma własne przemyślenia na opisywane tematy lub chciałby rozwinąć opis, serdecznie zachęcamy do publikacji własnych komentarzy, które automatycznie pojawią się na naszym forum. Szczególnie zachęcamy do publikowania sprawdzonych konfiguracji uruchamiania różnych dystrybucji typu LiveCD.
str. 1