Bezdyskowy Linux z PXE

Pre-boot Execution Environment PXE firmy Intel to stosowana w wielu płytach głównych i kartach sieciowych metoda zdalnego uruchamiania systemów, stanowiąca część architektury Wired for Management, również autorstwa firmy Intel. PXE obejmuje zdefiniowany zestaw procedur oprogramowania wbudowanego (firmware), za pomocą którego interfejsy programowania (API) mogą, przy wykorzystaniu protokołu do przypisywania adresów i lokalizacji zasobów sieciowych BIOS-u, żądać od serwera udostępnienia tak zwanego Network Bootstrap Program (NBP), żeby z kolei za jego pomocą załadować kolejne oprogramowanie. Ta metoda pozwala nie tylko na automatyczną instalację systemu operacyjnego, lecz również umożliwia zażądanie od serwera kompletnego, wstępnie skonfigurowanego i działającego obrazu tego systemu. W ten sposób PXE otwiera możliwość odejścia od w pełni wyposażonych komputerów PC z systemem operacyjnym zainstalowanym na twardym dysku na rzecz bezdyskowych klientów, które pobierają system operacyjny z ce

Pre-boot Execution Environment PXE firmy Intel to stosowana w wielu płytach głównych i kartach sieciowych metoda zdalnego uruchamiania systemów, stanowiąca część architektury Wired for Management, również autorstwa firmy Intel. PXE obejmuje zdefiniowany zestaw procedur oprogramowania wbudowanego (firmware), za pomocą którego interfejsy programowania (API) mogą, przy wykorzystaniu protokołu do przypisywania adresów i lokalizacji zasobów sieciowych BIOS-u, żądać od serwera udostępnienia tak zwanego Network Bootstrap Program (NBP), żeby z kolei za jego pomocą załadować kolejne oprogramowanie. Ta metoda pozwala nie tylko na automatyczną instalację systemu operacyjnego, lecz również umożliwia zażądanie od serwera kompletnego, wstępnie skonfigurowanego i działającego obrazu tego systemu. W ten sposób PXE otwiera możliwość odejścia od w pełni wyposażonych komputerów PC z systemem operacyjnym zainstalowanym na twardym dysku na rzecz bezdyskowych klientów, które pobierają system operacyjny z centralnej lokalizacji. Korzyści z takiego rozwiązania, przede wszystkim w zakresie administracji, konserwacji i pomocy technicznej, są oczywiste.

Przyjemny efekt uboczny polega na tym, że bezdyskowe klienty zapewniają miłą dla ucha ciszę w miejscu pracy. PXE stał się pierwotną inspiracją dla bezdyskowego Linuksa.

W trakcie eksperymentów z domowym systemem przetwarzania strumieni wideo zastosowane rozwiązania techniczne okazały się zadowalające, jednak pod względem poziomu głośności były nie do zaakceptowania. Stąd blisko już było do systemu bezdyskowego, uruchamiającego się za pomocą PXE. Jak wykazały kolejne próby, tę samą zasadę można bez trudu zaadaptować do instalacji klientów w firmach.

Niniejszy artykuł stanowi podsumowanie doświadczeń oraz najważniejszych warunków wyjściowych i prac niezbędnych do wdrożenia bezdyskowych klientów z systemem operacyjnym Linux. Na podstawie zawartych tu wskazówek można zaadaptować to rozwiązanie do swoich konkretnych potrzeb. Wszystkie opisane tu skrypty, jak również gotowy obraz plików startowych można pobrać ze strony http://www.intra2.net/opensource/diskless-howto/ . Ponieważ mamy tu do czynienia z otwartym oprogramowaniem na licencji GPL, nic nie stoi na przeszkodzie dowolnym modyfikacjom i eksperymentom.

1. Warunki wstępne

Skrypt mkfedora.sh instaluje we wskazanym katalogu minimalną wersję systemu przeznaczoną do zdalnego uruchamiania.

Skrypt mkfedora.sh instaluje we wskazanym katalogu minimalną wersję systemu przeznaczoną do zdalnego uruchamiania.

Do pierwszych prób potrzebny ci będzie bezdyskowy klient z funkcją zdalnego uruchamiania. Większość kontrolerów sieciowych zintegrowanych z płytą główną ma w BIOS-ie odpowiedniego klienta PXE. Karty sieciowe wyższej klasy są często wyposażone we własny BIOS PXE. W niektórych przypadkach wymaga on oddzielnej aktywacji. W użytych przez nas kartach Intel EEPro/100+ służy do tego narzędzie IBAUtil firmy Intel.

Oprócz tego potrzebna jest płyta CD z dystrybucją Linuksa, która ma pracować w systemie bezdyskowym. My posłużyliśmy się produktem Fedora Core 1. Po stronie serwera musisz mieć uruchomione usługi DHCP i TFTP oraz NFS. Można tu zastosować wersje dostarczane z większością popularnych dystrybucji. Nic nie stoi też na przeszkodzie, aby wszystkie trzy usługi serwerowe pracowały na jednej maszynie.

2. Instalacja dystrybucji

W normalnych warunkach gotowa do pracy dystrybucja znajduje się na twardym dysku komputera. W naszym przypadku klient nie ma twardego dysku - będzie pobierać system operacyjny przez NFS z serwera. Wymaga to, aby dystrybucja znajdowała się w drzewie katalogów serwera. Można ją tam umieścić na dwa sposoby.

Po pierwsze, możesz zainstalować dystrybucję w zwykły sposób na lokalnym dysku dowolnego komputera. Stamtąd skopiujesz wszystkie pliki do katalogu na serwerze. Alternatywnie możesz zainstalować oprogramowanie bezpośrednio na serwerze. To zadanie można wykonać za pomocą niewielkiego skryptu, który przeniesie potrzebne binaria z płyty CD do katalogu docelowego, a dodatkowo wygeneruje kilka potrzebnych plików.

Zastosowany w naszym przykładzie plik mkfedora.sh po wywołaniu za pomocą polecenia:

./mkfedora.sh [katalog _docelowy] [naped_cd]

instaluje z płyty dystrybucyjnej minimalny pakiet określony w samym skrypcie do katalogu katalog_docelowy na serwerze. Oprócz tego zakłada jeszcze w docelowym drzewie katalogów pliki /etc/fstab oraz /etc/sysconfig/authconfig i generuje jednocześnie klucz SSH hosta.

3. Dostosowanie dystrybucji

Kolejny krok to przystosowanie dystrybucji do uruchamiania ze zdalnego źródła. Wymaga to wielu zmian w drzewie katalogów na serwerze (nazywanym dalej SYSROOT). W przypadku Fedora Core są to następujące działania:

  • Użytkownik może mieć w katalogu /etc tylko prawa odczytu, ale nie zapisu.
  • Należy wymienić wpis katalogu głównego / w pliku fstab. W przeciwnym razie rc.sysinit próbowałby podczas startu sprawdzać system plików za pomocą fsck.ext2.
  • Działanie sieci można wyłączyć za pomocą chkconfig. Zostanie ono i tak skonfigurowane, gdy tylko rozpoczną pracę pliki rc.
  • Agent detekcji sprzętu Kudzu jest niepotrzebny. Prezentowane rozwiązanie korzysta z systemu plików tylko do odczytu, a więc nie ma tu żadnych zadań dla tego agenta.
  • Należy najpierw usunąć pliki tymczasowe z bazy danych RPM, następnie przenieść je z /var do /usr. Zwolni to pewien obszar pamięci roboczej, ponieważ /var rezyduje w tmpfs, czyli w pamięci RAM.
  • Na koniec należy skompresować /dev, co przyspieszy start systemu o około 10 sekund.
Wszystkie te prace można oczywiście wykonać ręcznie, lecz wygodniej zrobić to za pomocą skryptu mkbootready. Skrypt wywołuje się poleceniem:

./mkbootready [SYSROOT]

przy czym SYSROOT to katalog główny instalacji znajdującej się na serwerze.

4. Konfiguracja NFS

Teraz należy skonfigurować NFS, aby umożliwić dostęp klientom bezdyskowym, które mają pobierać system operacyjny z utworzonego poprzednio katalogu dystrybucyjnego na serwerze. W tym celu katalog należy wyeksportować. W przypadku katalogu dystrybucji o nazwie /netboot/pxeclient dodaj do pliku /etc/exports serwera NFS następujący wiersz:

/netboot/pxeclient 192.168.1.0/24 (ro,no_root_squash)

Ponieważ uruchomienie klienta bezdyskowego wymaga opcji no_root _squash, ze względów bezpieczeństwa nie powinniśmy zezwalać na montowanie w trybie odczytu/ zapisu. W przeciwnym razie użytkownicy root klientów uzyskaliby uprawnienia administratora na serwerze. Upewnij się, że twój serwer NFS działa. Nie zapomnij też o restartowaniu konfiguracji po wpisaniu kolejnych katalogów do pliku /etc/exports. Jeżeli pojawią się jakieś problemy, poszukaj rozwiązania w NFS HOW-TO w Linux Documentation Project pod adresem http://www.tldp.org .


Zobacz również