Wyobraźmy sobie taką sytuacje że chcemy zainstalować jakąś dystrybucje Linuksową i popsuła się nagrywarka albo w ogóle nie ma napędu w komputerze którym chcemy zainstalować system.
Nie ma co płakać, bo do tego celu można wykorzystać pendrive lub jeżeli mamy wbudowany w komputerze czytnik kart.
Jest kilka narzędzi które pozwolą uczynić naszego pendrive bootowalnym.
Ja wybrałem syslinux który jest nie tylko na Linuksa ale również na Windowsa.
Dzięki temu sposób instalacji będzie bardzo podobny dla obu systemów.
Z strony należy pobrać syslinux-3.86.zip. Syslinux 3.86 to aktualnie najnowsza stabilna wersja.
Rozpakowujemy archiwum w wygodne dla nas miejsce, na przykład:
Windows
C:\syslinux-3.86\
Linux
/home/user/syslinux-3.86
Moją ofiarą padła dystrybucja PCLinuxOS z LXDE mini, obraz zajmuje 410MB
Zaś nośnik którego użyłem to karta Memory Stick PRO Duo 512MB
Należy sformatować kartę pamięci czy też pendrive na system plików FAT bądź też FAT32. Na Linuksie można użyć do tego celu fdisk albo gParted ale trzeba pamiętać aby partycja była bootowalna trzeba ustawić flagę boot.
Gdy mamy sformatowaną pamięć należy zainstalować bootloadera. Aby to uczynić udajemy się do:
Windows
Uruchamiamy wiersz poleceń i wpisujemy
cd C:\syslinux-3.86\win32
następnie syslinux -m -a -f -d / G:
Przy czym G to litera dysku więc u ciebie może być inna.
Linux
Uruchamiamy terminal i wpisujemy
cd /home/user/syslinux-3.86/linux
następnie ./syslinux -f -d / /dev/sdb1
Przy czym /dev/sdb1 to ścieżka do czytnika czy też pendrive i może się u ciebie różnić.
Komendy użyte w syslinux to:
-m instaluje bootloadera na sektor MBR
-a aktywuje partycję tak aby była wykrywalna dla biosu jako partycja bootowalna
-f wymusza instalacje, nie potrzebne ale na wszelki wypadek można użyć
-d ścieżka do pliku syslinux.cfg w naszym przypadku jest to / czyli bezpośrednio na pamięć
Gdy została przygotowana pamięć to teraz można zabrać się za nasz system.
Posiadany obraz iso należy wypakować, ja użyłem do tego 7zip.
Z wypakowanych plików kopiujemy następujące pliki na nasz nośnik.
livecd.sqfs
isolinux\isolinux.cfg
isolinux\vmlinuz
isolinux\initrd.gz
isolinux\back.jpg
Następnie zmieniamy nazwę isolinux.cfg na syslinux.cfg a plik back.jpg konwertujemy na format png
Kolejne pliki jakie będą nam potrzebne to.
syslinux-3.86\com32\menu\vesamenu.c32
syslinux-3.86\memdisk\memdisk
Gdy posiadamy już wszystkie pliki pora na konfiguracje.
Otwieramy syslinux.cfg ulubionym edytorem i naszym oczom powinno ukazać się coś takiego.
default LiveCD
prompt 1
timeout 90
ui gfxboot.com bootlogo
label LiveCD
kernel vmlinuz
append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent
label LiveCD - No Boot Splash
kernel vmlinuz
append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose
label Video safe mode - VESA
kernel vmlinuz
append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent vesa
label Safe boot
kernel vmlinuz
append livecd=livecd initrd=initrd.gz root=/dev/rd/3 acpi=off vga=normal keyb=us noapic nolapic nopinit vesa
label Console
kernel vmlinuz
append livecd=livecd 3 initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent
label Copy to RAM
kernel vmlinuz
append livecd=livecd copy2ram initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose
label Media Check
kernel vmlinuz
append livecd=livecd md5sum initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose
Zmieniamy "default LiveCD" na "default vesamenu.c32", następnie wartość "prompt 1" na "prompt 0" i usuwamy "ui gfxboot.com bootlogo" a na jego miejsce dodajemy
menu resolution 800 600
menu background back.png
menu vshift 11
menu color title 1;37;40 #ffffff #00000000 none
menu color unsel 37;40 #90ffffff #00000000 none
menu color sel 37;47 #00000000 #ffffff none
menu color border 37;40 #ffffff #00000000 none
menu title PCLinuxOS LXDE 2010 mini
Tak powinno to wszystko wyglądać, aby lepiej zrozumieć konfiguracje dodałem komentarze.
#wczytuje moduł o nazwie vesamenu.c32 który jest odpowiedzialny za wyświetlanie menu w trybie vesa co daje nam możliwość użycia jako tła tapety
default vesamenu.c32
#Wartość ustawiona na 0 nie wyświetla wiersza poleceń boot: co skraca czas oczekiwania na menu
prompt 0
#czas jaki mamy na wybór liczony w sekundach, przy czym wartość 100 nie oznacza 100 sekund a 10
timeout 100
#ustawia rozdzielczość naszego menu tak aby pasował pod nasze tło
menu resolution 800 600
#nazwa naszego tła które jest w formacje png o wymiarach 800 600, Jeżeli plik będzie miał większą rozdzielczość niż nasze menu tło będzie czarne
menu background back.png
#przesuwa menu w dół tak aby nie zlewało się z tłem na którym jest logo
menu vshift 11
#aby zrozumieć o co chodzi z ustawianiem kolorów należy udać się do syslinux-3.86\doc\menu.txt jest tam wiele komend używanych w pliku konfiguracyjnym.
#ustawia kolor tytułu menu
menu color title 1;37;40 #ffffff #00000000 none
#ustawia kolor menu
menu color unsel 37;40 #90ffffff #00000000 none
#ustawia kolor zaznaczonej pozycji w menu
menu color sel 37;47 #00000000 #ffffff none
#ustawia kolor ramki otaczającej menu
menu color border 37;40 #ffffff #00000000 none
#tytuł menu
menu title PCLinuxOS LXDE 2010 mini
#wyświetla pozycje o nazwie LiveCD w menu
label LiveCD
#ładuje jądro vmlinuz (Linux)
kernel vmlinuz
#parametry odpowiedzialne za uruchomienie systemu PCLinuxOS
append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent
label LiveCD - No Boot Splash
kernel vmlinuz
append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose
label Video safe mode - VESA
kernel vmlinuz
append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent vesa
label Safe boot
kernel vmlinuz
append livecd=livecd initrd=initrd.gz root=/dev/rd/3 acpi=off vga=normal keyb=us noapic nolapic nopinit vesa
label Console
kernel vmlinuz
append livecd=livecd 3 initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent
label Copy to RAM
kernel vmlinuz
append livecd=livecd copy2ram initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose
label Media Check
kernel vmlinuz
append livecd=livecd md5sum initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose
Jeżeli po uruchomieniu menu pokażą się jakieś dziwne znaki pomiędzy wyrazami zamiast spacji to należy w tych miejscach usunąć i jeszcze raz wstawić spacje
No dobrze mamy już gotowe PCLOS LiveCD z takimi samymi opcjami i z podobnym nieco wyglądem menu, ale co jeżeli chcemy czegoś więcej, na przykład mieć możliwość uruchomienia obrazu iso z FreeDOS bądź też innego iso z przydatnymi narzędziami.
Wystarczy na samym końcu pliku konfiguracyjnego dodać
#wyświetla pozycje o nazwie Norton Ghost w menu
label Norton Ghost
#jądro odpowiedzialne za wczytanie iso
kernel memdisk
#obraz iso w tym przypadku przygotowany prze zemnie FreeDOS z Norton Ghost
initrd ghost.iso
#parametry odpowiedzialne za uruchomienie obrazu czyli iso i raw który jest odpowiedzialny za metodę dostępu do pamięci
append iso raw
Ale trzeba pamiętać że im większy obraz iso tym dużej inicjuje się jego wczytanie a w przypadku PCLinuxOS uruchomienie LiveCD z takiego obrazu było nie możliwe z powodu błędów które wystąpiły podczas rozruchu sytemu.
Można również uruchomić obraz dysku z zainstalowanym systemem w formacie img
O to przykład.
label jakiś tam system
kernel memdisk
initrd obraz.img
append raw
Gdy mamy już przygotowany nasz LiveCD bez CD należy w biosie ustawić USB HDD dla pendrive lub USB KEY dla czytnika kar pamięci jako pierwszy napęd z którego ma próbować uruchomić nasz bootloader.
A oto efekt pracy
To jest oryginalny splash screen z LiveCD który używa modułu gfxboot który wizualnie daje lepsze efekty w skład którego mogą wchodzić animacje.
A to jest podróbka którą zrobiłem nie powala ale wygląda przyzwoicie.
Co ciekawe użyty w PCLinuxOS bootloader to isolinux który jest jednym z narzędzi syslinux. Próbowałem użyć modułu gfxboot w syslinux ale przy próbie ładowania pliku bootlogo zostałem poinformowany że plik jest za duży. Może kiedyś uda mi się znaleźć rozwiązanie tego problemu.
Żeby dowiedzieć się więcej o możliwościach syslinux polecam zajrzeć na Wiki Syslinux i do katalogu syslinux-3.86\doc
Jeżeli jest jakiś błąd, bądź coś jest niezrozumiałego to proszę pisać.
Krytyka NIE mile widziana :)