Bootowanie z sieci – konfiguracja PXE

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 / gPXELinux, 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:

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:

PXE vesamenu

PXE vesamenu

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 / gPXEpxelinux.cfg/default gdzie dopiszemy:

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:

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:

lub takie w przypadku Windowsa:

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:

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

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:

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:

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:

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:

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:

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:

  1. Ściągamy obraz ISO płyty CD/DVD do katalogu ~/Pobrane/Images,
  2. Tworzymy katalog /srv/tftp/images/<dystybucja-architektura>,
  3. Edytujemy tablicę systemu plików /etc/fstab,
  4. Montujemy obraz ISO płyty CD/DVD poleceniem sudo mount -a,
  5. Edytujemy /etc/exports,
  6. I powiadamiamy o tym serwer NFS,
  7. 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:

  1. Bootowanie z sieci – konfiguracja routera.
  2. Bootowanie z sieci – PXE na Linuksie.
  3. Bootowanie z sieci – PXE na Cygwinie.
  4. Bootowanie z sieci – PXE na Windowsie.
  5. Bootowanie z sieci – konfiguracja PXE.