PXE

Co to właściwie PXE?

PXE czyli z angielskiego Pre eXecution Environment to zestaw standardów, które umożliwiają komputerowi za pomocą połączenia sieciowego załadowanie programu rozruchowego bezpośrednio z serwera.
Środowisko PXE jest połączeniem dobrze nam znanych protokołów sieciowych takich jak DHCP (Dynamic Host Configuration Protocol), TFTP (Trivial File Transfer Protocol) oraz UDP/IP.Za pomocą PXE możemy uruchomić dowolny obraz ISO z np. instalatorem systemu operacyjnego, z systemem w wersji LIVE. Ale to nie koniec możliwości, jesteśmy w stanie również stworzyć obraz multiboot w którym będą zawarte do wyboru różne wersje systemów w postaci obrazów ISO lub nawet połączyć się z maszyną wirtualną! Należy jednak zaznaczyć iż PXE nie jest dostępne na komputerach firmy Apple. Firma Apple stworzyła własny protokół BSDP (Boot Server Discovery Protocol), który został przedstawiony w 1999 roku.
PXE stanowi część standardu UEFI od 2015 roku, natomiast koncepcja PXE powstała już w 1985r (protokół BOOTP).

Dlaczego PXE?

Odpowiedź jest bardzo prosta – elastyczność oraz szybkość odgrywają tu kluczową rolę. Dzięki PXE jesteśmy w stanie załadować ten sam obraz systemu na wielu komputerach jednocześnie (użycie pendrive’ów przy 10 komputerach zwiększa chociażby czas jaki jest potrzebny na wgranie na każdego pendrive danego obrazu), dodatkowo mamy możliwość szybkiej aktualizacji danego obrazu poprzez jego podmianę na serwerze. Eliminuje również to błędy jakie mogły by powstać w skutek nieprawidłowo zainstalowanego obrazu na pendrive, nie trzeba weryfikować wersji jakie są zainstalowane na pendrive oraz nie mamy problemu w przypadku uszkodzonego pendrive lub portu USB na komputerze. Uruchomienie instalatora poprzez PXE może również przebiegać automatycznie co znacznie przyspiesza i upraszcza instalację w przypadku nietechnicznych osób. Możliwości jest naprawdę wiele. Ogranicza nas jedynie przepustowość jaką posiadamy pomiędzy serwerem a urządzeniem klienckim ponieważ to od przepustowości zależy z jaka prędkością pobierzemy obraz, a także od szybkość dysków jakie posiadamy na serwerze na serwerze.

Jak to działa?

Typowe środowisko PXE składa się z następujących składników: karty sieciowej obsługującej PXE, serwera DHCP oraz serwera TFTP.
Aby sprawdzić w praktyce jak działa PXE wystarczą dwa komputery znajdujące się w tej samej sieci. A dokładniej komputer z kartą sieciową która obsługuje PXE. Aktualnie chyba nie ma laptopa czy komputera stacjonarnego z płytą główną, która by nie obsługiwała PXE. Tak jak wspomniałem wcześniej, od 2015 roku jest to część standardu UEFI, zatem możemy założyć, iż jeżeli posiadamy komputer z 2015 roku, to na pewno ma wbudowaną obsługę PXE. Jeżeli jest to starszy komputer, należało by się wtedy zapoznać z dokumentacją. W chwili obecnej PXE jest obecne nawet na Raspberry Pi! (Wyprzedzając pytanie… tak! Raspberry może pełnić funkcję serwera dla PXE [serwer DHCP+TFTP]). Jeden komputer pełni wtedy rolę serwera a drugi komputer rolę klienta.
W dużym uproszczeniu, po uruchomieniu komputera klienckiego uruchamiamy bootowanie z sieci za pomocą PXE, w tym momencie karta sieciowa wysyła pakiety broadcastowe do sieci. Serwer DHCP na serwerze PXE otrzymuje te pakiety i wysyła mu informacje jaki otrzymuje adres IP wraz z adresem IP serwera na którym znajduje się serwer TFTP (serwer TFTP może znajdować się na tej samej maszynie co serwer DHCP) z którego pobierać będziemy plik rozruchowy oraz obrazy systemów. Po automatycznym pobraniu i uruchomieniu pliku rozruchowego mamy już możliwość uruchomienia instalatora systemu lub np. obrazu z wieloma systemami

 

TFTP, co to takiego?

TFTP czyli Trivial File Transfer Protocol, jak sama nazwa wskazuje jest to prosty protokół, który jest wykorzystywany do przesyłania plików i jest on zaimplementowany na protokole UDP. Jego jedynym zadaniem jest odczyt plików, które znajdują się na serwerze. Z poziomu klienta nie mamy wglądu na to, jakie pliki i katalogi na nim się znajdują.

Czy takie rozwiązanie jest drogie?

Oczywiście są płatne oprogramowanie wykorzystujące potencjał PXE. Np. rozwiązania Microsoftu stosowane w dużych przedsiębiorstwach jak np. SCCM, MDT, WDS czy RIS. Natomiast bez obaw, do skonfigurowania serwera PXE można wykorzystać każdą dystrybucję Linuksa. Jest również wiele opensource’owych gotowych rozwiązań.

Czy można zrobić więcej?

PXE ma też ograniczenia w postaci połączenia sieciowego jedynie za pomocą kabla ethernetowego oraz korzysta jedynie z TFTP do udostępniania obrazu. Rozwinięciem PXE jest iPXE, które powstało w 2010 roku. iPXE może korzystać z takich protokołów jak http, iSCSI, AoE (ATA over Ethernet) oraz FCoE (Fibre Channel over Ethernet) a także korzystać z łącza WiFi! iPXE dodatkowo może pobierać pliki rozruchowe przy użyciu takich protokołów sieciowych jak TFTP, NFS, http czy FTP. iPXE jest zamiennikiem a raczej następcą gPXE, którego rozwój zakończył się w 2010 roku.
Niestety sama konfiguracja i implementacja iPXE jest dosyć skomplikowana, ponieważ wymaga chociażby zastąpienia istniejącego na karcie sieciowej ROMu na ROM zmodyfikowany pod działanie iPXE. Konfiguracja takiego ROMu pod daną kartę może być wyjątkowo trudna i może doprowadzić do uszkodzenia karty co znacznie utrudnia zastosowanie takiego rozwiązania. Istnieje możliwość uruchomienia iPXE bezpośrednio z płyty co eliminuje proces wygrywania zmodyfikowanego ROMu bezpośrednio na kartę, ale jednocześnie wydłuża proces bootowania. Nie wspominając o tym, że większość obecnie laptopów nie posiada napędów CD/DVD.
Należy również wspomnieć o jeszcze jednym środowisku rozruchowym jakim jest PXELINUX. Ten program potrafi załadować i skonfigurować jądro systemu operacyjnego Linux dającą możliwość dowolnego działania na komputerze np. do wykonania instalacji systemu Linux lub uruchomienie bezdyskowych stacji roboczych (terminale)

A co z wirtualnymi maszynami uruchamianymi poprzez PXE?

Są! Ale gotowe rozwiązania wraz z urządzeniami i dedykowanymi serwerami nie są tanie. Pamiętajmy jednak, że tam gdzie jest komercyjne i prostsze rozwiązanie zawsze znajdzie się bezpłatne ale trudniejsze w konfiguracji. Tutaj do dyspozycji mamy taki narzędzie jak np. thinSTATION, który pełni rolę ThinClient’a, za pomocą którego można będzie się połączyć z maszyną wirtualną. Narzędzie to obsługuje naprawdę imponującą ilość protokołów, takich jak np. RDP, VMWare Horizon View, telnet itd. Istnieje nawet możliwość podpięcia się do chmurowej wersji VDI. Niestety na chwile obecną nie ma możliwości bezpłatnie stowrzyć środowiska, w którym po włączeniu komputera i uruchomieniu PXE będzie możliwość bezpośredniego wyświetlania pulpitu z maszyny wirtualnej. Przynajmniej ja nie posiadam na chwilę obecną wiedzy o takiej technologii. Jedynym rozwiązaniem zbliżonym jest FOG. FOG jest rozwiązaniem, które wspiera PXE oraz iPXE, potrafi obrazować systemy od Windowsa XP aż do windowsa 10, Linuxy a nawet MacOSy. Dodatkowo jest to również darmowe rozwiązanie.