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.

16 Comments

  1. Witam , chciałbym się dowiedzieć jak zrobić serwer pxe jeżeli nie ma się routera z OpenWrt / Gargoyle ??

    • Router wykorzystywany jest tylko jako serwer DHCP. Jeśli nie masz routera, zainstaluj serwer DHCP na jednym z kompów (+ całą resztę zgodnie z opisem dla twojego OS) i zepnij go z drugim kablem krosowanym.

  2. Dobra , nie robię już na maszynach tylko teraz chcę postawić to na systemie vista , i nie wiem czy lepiej będzie podłączenie przez switch czy po prostu zakupić oddzielną kartę sieciową , zrobić kabel skrosowany i prosto do komputera podłączać kabel ethernet.

  3. Witam,
    a czy jest możliwość skorzystania z innego, już istniejącego serwera DHCP np. postawionego na Windows Serwer 2003?

    Poglądowy opis sytuacji:
    – Serwer DHCP stoi na Windows Serwer 2003 (razem z domeną AD)
    – Stawiam na osobnej maszynie (np na stacjonarce) Linuxa i podłączam go do sieci (tej, której IPki rozdaje Windows Serwer).

    I teraz chciałbym tak skonfigurować PXE na linuxie, żeby Windows Serwer rozdawał IPki dla maszyn, które botowały by się z karty sieciowej i wyświetlały Menu z opcjami skonfigurowanymi na linuxie.

    Gdyby coś było nie jasne postaram się wyprostować ; -).

  4. Dało by się z tego jakoś wystartować instalację Windowsa? Jeśli tak to fajnie by było zobaczyć jak wygląda pliczek default. Ewentualnie jakieś rozwiązanie, żeby nie przesyłać przez całego obrazu .iso, tylko żeby ruszyło ze wskazanego zasobu np. Folderu / Napędu CD/DVD

  5. Witam.

    Próbuję bootować netrouter po PXE zgodnie z opisem wyżej. Ładuje się vmlinuz, później initrd.lz. System już prawie się włącza, widać powitalną planszę, z adresami IP, netmaską, broadcastami, dnsami (ekran powitalny Ubuntu)

    Pod spodem:

    filename : gpelinux.0
    Begin: Trying netboot from 192.168.1.1:/netrouter-13.12-dvd-32bit.iso … Trying nfsmount -o nolock -o ro 192.168.1.1:/netrunner-13.12-dvd-32bit.iso /cd com … mount call failed – server replied: Permission denied.
    mount call failed – server replied: Permission denied.
    mount call failed – server replied: Permission denied.
    mount call failed – server replied: Permission denied.
    mount call failed – server replied: Permission denied.

    (initramfs) done.
    Unable to find a live file system on the network

    I tu wszystko się kończy?

    Jak to naprawić?

  6. Witam,
    mam taką sytuację:
    – router mikrotik z DHCP i ustawioną opcją next server,
    – menu się wyświetla,
    – zasysa sobie system po tftp lub po http (zależy od wpisu w default),
    – system zaczyna się ładować (systemrescucd-x86-4.5.1).
    I tu powstaje problem – podczas ładowania systemu staje na pobieraniu adresu z DHCP – i wyświetla komunikat:
    Performing the network configuration…
    No ethernet interfaces found on your system, PXE boot won’t work.
    Cannot get DHCP address. Check the cables on the ethernet interfaces.

Leave a Reply

Your email address will not be published. Required fields are marked *