Bootowanie z sieci – konfiguracja routera

PXE (Preboot eXecution Environment) to technologia pozwalająca na zabootowanie systemu operacyjnego z innego komputera znajdującego się w sieci lokalnej.

Proces bootowania systemu operacyjnego w technologii PXE wygląda w dużym skrócie następująco. BIOS komputera wywołuje BIOS katy sieciowej. Ten z kolei próbuje odnaleźć w sieci lokalnej serwer DHCP. Od serwera DHCP otrzymuje swój adres IP oraz adres IP serwera TFTP i nazwę pliku do załadowania, zwykle pxelinux.0 (PXE) lub gpxelinux.0 (gPXE). Komputer klienta pobiera ten plik, a potem kolejne pliki, których nazwy trudno tu wymienić, gdyż zależą wprost od konfiguracji PXE / gPXE. W oryginalnym PXE wszystkie te pliki przesyłane są przy pomocy protokołu TFTP, który niestety jest bardzo wolny. Z tego względu zwykle stosuje się także trzeci, pomocniczy serwer, najczęściej NFS, ewentualnie HTTP lub FTP, który służy do przesłania największych plików. Można też skorzystać z rozszerzonej wersji PXEgPXE, która sama obsługuje protokół HTTP. Przykłady konfiguracji podane w ostatniej części cyku artykułów o bootowaniu z sieci lokalnej – Bootowanie z sieci – konfiguracja PXE dostosowane są do klasycznej wersji PXE (gPXE jest z nimi wstecznie kompatybilny). Natomiast w pozostałych częściach cyklu traktujących o instalacji serwerów TFTP, NFS oraz Syslinuksa na Linuksie, Cygwinie i Windowsie przedstawię instalację gPXE ze względu na większe możliwości.

Każdy z wyżej wymienionych serwerów może być umieszczony na osobnych maszynach, bądź też wszystkie serwery mogą być zainstalowane na jednej maszynie.

Konfiguracja klienta

Konfiguracja komputera klienta ogranicza się do 2 rzeczy: ustawienia w BIOS-ie bootowania w pierwszej kolejności z sieci lokalnej (LAN) oraz podpięcia karty sieciowej komputera do portu LAN routera. Technologia PXE pochodzi z 1999 r., więc nawet naprawdę stare komputery ją wspierają. Jeśli trafi się Wam jakiś złom, z niedziałającym napędem optycznym i bez możliwości bootowania z USB, technologia PXE może okazać się zbawienna. Tak naprawdę, aby zabootować system operacyjny poprzez PXE, komputer klienta nie musi posiadać żadnych urządzań magazynujących dane, takich jak dyski twarde, pendrive-y, napędy optycznie czy stacje dyskietek, gdyż system operacyjny ładowany jest do RAM-u. I tu dochodzimy do największej wady PXE / gPXE jaką jest zapotrzebowanie na pamięć, które wynika z zapotrzebowania samego systemu operacyjnego powiększonego dodatkowo o pamięć potrzebną do załadowania obrazu systemu operacyjnego do RAM-u.

Serwer DHCP – konfiguracja routera z OpenWrt / Gargoyle

Konfigurując środowisko PXE zdecydowałem, że powinno ono działać na istniejącej już sieci lokalnej. Instalacja osobnego serwera DHCP na którymś z komputerów w sieci lokalnej odpadła w przedbiegach. Wady takiego rozwiązania są oczywiste – konieczność odpięcia komputerów od routera i spięcia ich kablem skrosowanym. No właśnie skoro już o routerze mowa, wykorzystajmy jego do zainicjowania bootowania z secie lokalnej. W OpenWrt / Gargoyle do realizacji usług DHCP, DNS i TFTP używany jest serwer Dnsmasq o szerokich możliwościach, zatem wykorzystajmy go.

Jak część z Was pewnie wie, ja na swoim routerze mam zainstalowany build OpenWrt by vargalex. W jego przypadku wystarczy na zakładce Network -> DHCP and DNS -> TFTP Settings zaznaczyć Enable TFTP server. W Network boot image wpisujemy przykładowo: gpxelinux.0,,192.168.1.240. Adres ten wskazuje serwer TFTP Trivial File Transfer Protocol. Jak już wcześniej wspomniałem, nic nie stoi na przeszkodzie, aby tą maszyną był sam router, wtedy wpisujemy odpowiednio gpxelinux.0,,192.168.1.1, a w TFTP server root podajemy ścieżkę do głównego katalogu serwera TFTP.

Network - DHCP and DNS - TFTP Settings

Network – DHCP and DNS – TFTP Settings

W mniej klikalnych dystrybucjach OpenWrt / Gargoyle wydajemy natomiast następujące polecenia:

Serwer DHCP na routerze z OpenWrt / Gargoyle został skonfigurowany, przejdźmy zatem do dalszej konfiguracji opisanych w kolejnych częściach cyklu.

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.
  • Unique Post

3 Comments

  1. Bootowanie z sieci – konfiguracja routera

    Kiedy kolejne części cyklu?

    Pozdrawiam

  2. Pozwolę sobie na mały wtręt ponieważ nie jest taka informacja dostępna na sieci a może być niezwykle przydatna.
    Mianowicie nowe wersji openwrt radzą sobie z alternatywnymi konfigami pliku botującego zależnymi od zmiennej, np. barrier breaker łyka takie coś:
    dhcp-match=legacy, option:client-arch, 0
    dhcp-match=efi, option:client-arch, 7
    dhcp-boot=net:efi, grubnetx64.efi
    dhcp-boot=net:legacy, grldr.0

    Dzięki temu mamy możliwość załadowania plików właściwych dla architektury botowanej maszyny, w przykładzie dla maszyn legacy bios botuje się grub4dos ( grldr.0 ) a dla uefi grub2 ( grubnetx64.efi z pakietu ubuntu, dostępny również w wersji podpisanej > http://archive.ubuntu.com/ubuntu/dists/trusty/main/uefi/grub2-amd64/current/ )

    pzdr
    maggreg

  3. Zdaje się iż coś za mało tej konfiguracji PXE albo ja coś źle robię bo nie działa 🙁
    Próbuję odpalić serwer PXE na OpenWRT 12.09 w maszynie wirtualnej MS VPC 2007. Sterownik tulip zainstalowany, sieć i Internet działa, interfejs www też. Zrobiłem drugi dysk VHD FAT32 4GB i wrzuciłem tam katalog PXE (skonfigurowany serwer PXE działający na windows w Tiny PXE Server). W interfejsie www też mam opcję TFTP ale nie wiem jaką scieżkę mam podać. Zdaje się iż to nie wystarczy gdyż musiałem zainstalować obslugę systemu plików vfat. Lokalnie system widzi pliki na tym dysku, DHCP niby działa ale nie znajduje pliku pxelinux.0

Leave a Reply

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