W ostatniej części cyklu opiszę konstrukcję pliku pxelinux.cfg/default
. Bootować będziemy: FreeDOS, PartedMagic, SystemRescueCd, HDT, RIPLinuX, AVG Rescue CD, Plop Boot Managers, Windows Defender Offline oraz Ubuntu. Przystępując do lektury tej części cyklu artykułów o bootowaniu z sieci lokalnej zakładam, że skonfigurowałeś swój router z alternatywnym firmware OpenWrt / Gargoyle oraz komputer który ma bootować się z sieci lokalnej. Jeśli nie, zapraszam do lektury pierwszej części cyklu – Bootowanie z sieci – konfiguracja routera. Ponadto powinieneś mieć działające na maszynie bootującej serwery: TFTP i NFS oraz zainstalowane niezbędne pliki z pakietu Syslinux. Jeśli nie, zapraszam do lektury jednego z moich artykułów, w zależności od systemu operacyjnego na którym stawiasz środowisko PXE / gPXE – Linux, Cygwin lub Windows.
FreeDOS
Testowanie środowiska PXE / gPXE zaczniemy od czegoś prostego. Spróbujmy zabootować FreeDOS-a z obrazu dyskietki 1,44 MB. Oraz dyskietki odin1440.img
umieszczamy w podkatalogu images
. Następnie przechodzimy do edycji głównego pliku konfiguracyjnego PXE / gPXE – pxelinux.cfg/default
. Jego przykładowa początkowa zawartość może wyglądać tak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
DEFAULT vesamenu.c32 MENU TITLE Main Menu MENU ROWS 15 MENU TABMSGROW 21 MENU CMDLINEROW 21 MENU TIMEOUTROW 23 LABEL hdd MENU LABEL ^Boot from First HDD (default) KERNEL chain.c32 APPEND hd0 TIMEOUT 100 LABEL freedos MENU LABEL Free^DOS ODIN KERNEL memdisk INITRD images/odin1440.img |
Jak widać składa się on z 3 sekcji. W pierwszej definiujemy ogólne parametry, czyli domyślny moduł do wczytania i czas na wybór systemu w decysekundach. Druga sekcja definiuje bootowanie z pierwszego dysku twardego. Dla wygody jest to domyślna opcja bootowania, gdyż nawet jeśli w BIOS-e pierwszym urządzeniem do bootowania będzie karta sieciowa, zawsze będzie można wystartować komputer normalnie z dysku twardego. W końcu trzecia sekcja definiuje nam bootowanie FreeDOS-a z obrazu dyskietki 1,44 MB. Najważniejsze dyrektywy definiujące bootowanie to jak widać:
LABEL
– nadająca całej sekcji jakąś etykietę,MENU LABEL
– tworząca pozycję w menu pod jaką nasz system operacyjny będzie widoczny,KERNEL
– wskazująca na moduł jądra do wczytania,INITRD
– wskazujący na plik initial RAM disk – plik z obrazem systemu plików wczytywany do pamięci,APPEND
– przekazujący dodatkowe parametry (w dalszej części artykułu będzie więcej przykładów, co i jak można przekazać).
Teraz pora na pierszy test. Naszym oczom powinno ukazać się takie menu:
PartedMagic
Teraz przejdziemy do czegoś trudniejszego, spróbujemy zabootować linuksową dystrybucję ratunkową PartedMagic. Jej deweloperzy przygotowali specjalną wersję PartedMagic PXE dostępną tutaj. Ścigamy ją, a następnie wypakowujemy podkatalog pmagic
archiwum do katalogu images
naszego serwera PXE / gPXE.
Teraz przechodzimy do ponownej edycji głównego pliku konfiguracyjnego naszego serwera PXE / gPXE – pxelinux.cfg/default
gdzie dopiszemy:
1 2 3 4 5 6 7 8 9 10 11 |
LABEL pmagic MENU LABEL PartedMagic KERNEL images/pmagic/bzImage INITRD images/pmagic/initrd.img APPEND edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal loglevel=9 max_loop=256 LABEL pmagic-amd64 MENU LABEL PartedMagic (64-bit) KERNEL images/pmagic/bzImage64 INITRD images/pmagic/initrd.img APPEND edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal loglevel=9 max_loop=256 |
I znów testujemy. Jeśli wszystko jest w porządku przechodzimy do kolejnego etapu.
SystemRescueCd
Kolejną ciekawą propozycją dystrybucji ratunkowej jest SystemRescueCd. Ściągamy ją stąd. PartedMagic ściągnęliśmy jako archiwum ZIP, natomiast SystemRescueCd jako obraz ISO płyty CD.
W pliku pxelinux.cfg/default
dopisujemy:
1 2 3 4 5 6 7 8 9 10 11 |
LABEL systemrescuecd MENU LABEL System Rescue CD KERNEL images/systemrescuecd/isolinux/rescue32 INITRD images/systemrescuecd/isolinux/initram.igz APPEND netboot=tftp://192.168.1.240/images/systemrescuecd-x86-3.5.0/sysrcd.dat setkmap=pl dostartx LABEL systemrescuecd-amd64 MENU LABEL System Rescue CD KERNEL images/systemrescuecd/isolinux/rescue64 INITRD images/systemrescuecd/isolinux/initram.igz APPEND netboot=tftp://192.168.1.240/images/systemrescuecd-x86-3.5.0/sysrcd.dat setkmap=pl dostartx |
Aby zabootowć System Rescue CD musimy wczytać oprócz pliku jądra oraz pliku initrd także trzeci plik z systemem plików w formacie SquashFS. Lokalizację tego pliku musimy wskazać w dyrektywie APPEND
.
Ponownie pora na test. Ile to trwało? Długo? Bardzo? No u mnie też… ponad 13 min. Jak to przyśpieszyć? Sposobów jest co najmniej kilka. Przykładowo jeśli mamy zainstalowany serwer HTTP możemy zmienić w dyrektywach APPEND protokół, a zatem zamiast netboot=tftp://192.168.1.240/images/systemrescuecd-x86-3.5.0/sysrcd.dat
będziemy mieć netboot=http://192.168.1.240/images/systemrescuecd-x86-3.5.0/sysrcd.dat
. My jednak przejdziemy do czegoś ciekawszego – przetestujmy serwer NFS. Zmieniamy zatem wpisy w pliku pxelinux.cfg/default
na takie w przypadku Linuksa:
1 2 3 4 5 6 7 8 9 10 11 |
LABEL systemrescuecd MENU LABEL ^SystemRescue-Cd KERNEL images/systemrescuecd-x86-3.5.0/isolinux/rescue32 INITRD images/systemrescuecd-x86-3.5.0/isolinux/initram.igz APPEND nfsboot=192.168.1.127:/srv/tftp/images/systemrescuecd-x86-3.5.0 setkmap=pl dostartx LABEL systemrescuecd-64 MENU LABEL SystemRescue-Cd (64-bit) KERNEL images/systemrescuecd-x86-3.5.0/isolinux/rescue64 INITRD images/systemrescuecd-x86-3.5.0/isolinux/initram.igz APPEND nfsboot=192.168.1.127:/srv/tftp/images/systemrescuecd-x86-3.5.0 setkmap=pl dostartx |
lub takie w przypadku Windowsa:
1 2 3 4 5 6 7 8 9 10 11 |
LABEL systemrescuecd MENU LABEL ^SystemRescue-Cd KERNEL images/systemrescuecd-x86-3.5.0/isolinux/rescue32 INITRD images/systemrescuecd-x86-3.5.0/isolinux/initram.igz APPEND nfsboot=192.168.1.240:/systemrescuecd-x86-3.5.0 setkmap=pl dostartx LABEL systemrescuecd-64 MENU LABEL SystemRescue-Cd (64-bit) KERNEL images/systemrescuecd-x86-3.5.0/isolinux/rescue64 INITRD images/systemrescuecd-x86-3.5.0/isolinux/initram.igz APPEND nfsboot=192.168.1.240:/systemrescuecd-x86-3.5.0 setkmap=pl dostartx |
Zwróćcie uwagę na zmiany w linii APPEND
: zmieniła się opcja netboot
na nfsboot
, a zamiast ścieżki dostępu do pliku SquashFS podajemy ścieżkę do katalogu zawierającego tenże plik.
Sprawdźmy teraz czas bootowania – u mnie zmalał do minuty 🙂
Hardware Detection Tool
Kolejnym bardzo przydatnym narzędziem w diagnostyce awarii komputerów, który na dodatek możemy zabootować z sieci lokalnej (LAN) jest Hardware Detection Tool. HDT jest modułem com32 Syslinuksa, który pozwala wyświetlić niskopoziomowe informacje o sprzęcie. Do jego pełnego działania potrzebujemy trzech plików:
com32/hdt/hdt.c32
z archiwum Syslinux,pci.ids
ze strony The PCI ID Repository,memtest
z dowolnej dystrybucji linuksowej.
W pliku konfiguracyjnym pxelinux.cfg/default
dopisujemy:
1 2 3 |
LABEL hdt MENU LABEL ^Hardware Detection Tool KERNEL hdt.c32 |
RIPLinuX (Recovery Is Possible Linux)
I kolejna dystrybucja ratunkowa RIPLinuX (Recovery Is Possible Linux). Myślę, że nie ma potrzeby żebym się bardziej rozpisywał, dlatego tylko skótowo podaję linki i wpisy do pliku konfiguracyjnego pxelinux.cfg/default
.
Strona domowa
Download PXE ZIP
1 2 3 4 5 |
LABEL rip MENU LABEL ^RIPLinuX KERNEL images/RIPLinuX/kernel32 INITRD images/RIPLinuX/rootfs.cgz APPEND nokeymap root=/dev/ram0 rw |
AVG Rescue CD
AVG Rescue CD – zaawansowany zestaw narzędzi do ratowania i naprawy zainfekowanych komputerów.
Strona domowa
Download ISO
W pliku konfiguracyjnym pxelinux.cfg/default
dopisujemy:
1 2 3 4 5 |
LABEL avg MENU LABEL AVG Rescue CD KERNEL images/avg_arl_cdi_all_120_120823a5411/isolinux/vmlinuz INITRD images/avg_arl_cdi_all_120_120823a5411/isolinux/initrd.lzm APPEND max_loop=255 vga=791 init=linuxrc reboot=bios |
Plop Boot Managers
Plop Linux to kolejna ratunkowa dystrybucja Linuksa. Jej ciekawą cechą jest jednak wyposażenie jej w Plop Boot Managers, które umożliwiają bootowanie komputera z urządzeń, które sam BIOS jako urządzenia bootujące nie obsługuje.
Strona domowa
Download ISO
Download ZIP
Download TAR Gzip
Ściągamy Plop Linux i wypakowujemy podkatalog syslinux/plop
archiwum / obrazu do katalogu images.
W pliku konfiguracyjnym pxelinux.cfg/default
dopisujemy:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
LABEL plp MENU LABEL ^Plop Boot Manager LINUX images/plop/plpbt.bin LABEL plpinst MENU LABEL Plop Boot Manager ^installer KERNEL images/plop/plpinstc.com LABEL plpkexec MENU LABEL Plop^Kexec Boot Manager KERNEL images/plop/plopkexec LABEL plp-pcmcia MENU LABEL Plop Boot Manager with pcmcia LINUX images/plop/pcmcia/plpbt.bin LABEL plpinst-pcmcia MENU LABEL Plop Boot Manager with pcmcia installer KERNEL images/plop/pcmcia/plpinstc.com |
Windows Defender Offline
A teraz coś z zupełnie innej beczki – skaner antywirusowy Microsoftu. Windows Defender Offline, bo tak się on zwie, ściągamy z tej strony. Koniecznie obie wersje, gdyż skanerem 32-bitowym nie obsłużymy systemów 64-bitowych i vice versa. Ściągnięte obrazy ISO WDO_Media32.iso
i WDO_Media64.iso
kopiujemy do katalogu images
, a w pliku konfiguracyjnym pxelinux.cfg/default
dopisujemy:
1 2 3 4 5 6 7 8 9 10 11 |
LABEL Windows Defender Offline (32-bit) MENU LABEL Windows Defender Offline (32-bit) KERNEL memdisk INITRD images/WDO_Media32.iso APPEND iso LABEL Windows Defender Offline (64-bit) MENU LABEL Windows Defender Offline (64-bit) KERNEL memdisk INITRD images/WDO_Media64.iso APPEND iso |
W ten sam sposób postępować będziemy z innymi obrazami live Windowsa.
Omawiając bootowanie z obrazów ISO warto wspomnieć o największej zalecie gPXE w stosunku do oryginalnego PXE – obsłudze protokołu HTTP który, jak wiemy, jest szybszy niż TFTP. Jeśli mamy zainstalowany serwer HTTP możemy śmiało zmienić wpisy na:
1 2 3 4 5 6 7 8 9 10 11 |
LABEL ^Windows Defender Offline (32-bit) MENU LABEL Windows Defender Offline (32-bit) KERNEL memdisk INITRD http://192.168.1.240/images/WDO_Media32.iso APPEND iso LABEL Windows ^Defender Offline (64-bit) MENU LABEL Windows Defender Offline (64-bit) KERNEL memdisk INITRD http://192.168.1.240/images/WDO_Media64.iso APPEND iso |
Ubuntu i pochodne
Wpisy w pliku konfiguracyjnym pxelinux.cfg/default
przedstawię na przykładzie dystrybucji Netrunner opartej na KDE i skierowanej w szczególności do osób, które przesiadają się z Windowsa na Linuksa:
1 2 3 4 5 6 7 8 9 10 11 |
LABEL netrunner-12.12.1-i386 MENU LABEL ^Netrunner (32-bit) KERNEL images/netrunner-12.12.1-i386/casper/vmlinuz INITRD images/netrunner-12.12.1-i386/casper/initrd.lz APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.1.240:/netrunner-12.12.1-i386 LABEL netrunner-12.12.1-amd64 MENU LABEL Netrunner (64-bit) KERNEL images/netrunner-12.12.1-amd64/casper/vmlinuz INITRD images/netrunner-12.12.1-amd64/casper/initrd.lz APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.1.240:/netrunner-12.12.1-amd64 |
W analogiczny sposób bootować będziemy wiele programów antywirusowych czy ratunkowych, przykładowo: AcronisAntimalwareScanCD, Bitdefender Rescue CD, Panda SafeDisk.
PXE a inne dystrybucje linuksowe
Sposób postępowania w przypadku większości dystrybucji linuksowych będzie zbliżony do postępowania z dystrybucją System Rescue CD:
- Ściągamy obraz ISO płyty CD/DVD do katalogu
~/Pobrane/Images
, - Tworzymy katalog
/srv/tftp/images/<dystybucja-architektura>
, - Edytujemy tablicę systemu plików
/etc/fstab
, - Montujemy obraz ISO płyty CD/DVD poleceniem
sudo mount -a
, - Edytujemy
/etc/exports
, - I powiadamiamy o tym serwer NFS,
- Na koniec edytujemy plik
/srv/tftp/pxelinux.cfg/default
.
Najtrudniejsza jest oczywiście ostatnia część, a w szczególności linia APPEND
. Pomocna tu będzie lektura plików konfiguracyjnych zawartych na oryginalnych płytach CD/DVD danych dystrybucji oraz stworzonych przez takie programy jak YUMI, SARDU czy XBOOT, które służą do tworzenia multibootowalnych dysków USB.
Spis treści artykułów o PXE / gPXE
Tematykę bootowania z sieci lokalnej opisuję w serii 5 artykułów, zapraszam do zapoznania się z pozostałymi częściami: