Uwaga: Ten podręcznik jest silnie skoncentrowany na architekturze SPARC. Oczekujemy, że serwer netboot będzie instalowany na już skonfigurowanym systemie Gentoo Linux. |
Ten dokument pokazuje jak umożliwić sieciowy start komputera opartego na Sun Microsystems SPARC lub UltraSPARC. Podczas pisania przyjęto założenie, że czytelnik dysponuje komputerem z zainstalowanym Gentoo Linux, który może zostać wykorzystany jako serwer netboot.
Zarówno serwer jak i klient netboot będą musiały znajdować się w tej samej podsieci, ponieważ protokół ARP z reguły nie jest rozprowadzany pomiędzy różnymi segmentami sieci.
Ogólnie, proces uruchamiania z sieci przebiega tak:
Jak widać potrzebne będą serwery odwrotnego ARP oraz tftp.
2. Instalacja i konfiguracja oprogramowania
Dostępne są w tej chwili dwie implementacja serwera RARP: net-misc/iputils (instalowane razem z podstawowym profilem systemu) oraz net-misc/rarpd.
Uwaga: Instalacja net-misc/rarpd spowoduje nadpisanie rarpd oraz jego strony mana pochodzących z net-misc/iputils. |
Konfiguracja podstawowych składników rarpd: /etc/ethers
Niezależnie od wybranego rarpd należy zmodyfikować plik /etc/ethers. Plik ten informuje demona o tym, którym komputerom ma odpowiadać na zapytania oraz jaki ma im przyznawać adres.
Każdy wiersz /etc/ethersskłada się z adresu MAC karty sieciowej, z której zdalna maszyna będzie próbowała się uruchomić oraz nazwa komputera. Pola są oddzielane białymi znakami, natomiast rekordy powinny znajdować się w oddzielnych wierszach. Następujący przykład przeznaczony jest dla hosta nazywającego się sparc-netboot.gentoo.org:
Listing 2.1: Przykładowy /etc/ethers |
08:00:20:77:1f:3e sparc-netboot.gentoo.org |
Uwaga: Jeśli dany bajt w adresie MAC zaczyna się od 0 to dopuszczalne jest pominięcie pierwszego zera (na przykład 08:00:20:77:1f:3e można zapisać jako 8:0:20:77:1f:3e). |
Daemon rarpd sprawdza zawartość pliku /etc/ethers za każdym razem, gdy otrzyma zapytanie, więc po modyfikacji nie jest potrzebny restart.
Rozwiązywanie nazw: /etc/hosts
Ponieważ każdy wpis w /etc/ethersjest nazwą hosta, serwer netboot musi być w stanie ją rozwiązać na odpowiadający jej adres IP. Jest to możliwe na dwa sposoby, za pośrednictwem /etc/hosts lub serwera nazw z którego serwer netboot korzysta.
Nowy wpis /etc/hosts będzie bardzo podobny do tego, który już prawdopodobnie znalazł się tam podczas instalacji Gentoo na serwerze. Na przykład, załóżmy, że hostowi sparc-netboot.gentoo.org odpowiada adres IP 10.0.1.15. Tak więc odpowiedni wpis /etc/hostswyglądałby tak:
Listing 2.2: /etc/hosts |
10.0.1.15 sparc-netboot.gentoo.org |
Uwaga: W niektórych środowiskach niezbędny może okazać się kontakt z administratorem w celu uzyskania adresu (lub adresów) IP dla klienta netboot. |
Jeśli preferowane jest wykorzystanie serwera nazw, to administrator DNS będzie musiał dodać rekord dla nazwy hosta, w naszym przypadku sparc-netboot.gentoo.org, wskazujący na odpowiedni adres IP. W tym celu należy się skonsultować z administratorem DNS i/lub dokumentacją serwera DNS.
Uwaga: Jeśli zarówno /etc/hostsjak i serwer DNS mają wpisy dla uruchamianego komputera to preferowany będzie wpis w /etc/hosts(o ile kolejność w /etc/nsswitch.conf nie została zmieniona z wartości domyślnej). |
Konfiguracja net-misc/iputils rarpd
Niestety nie istnieje skrypt init.d dla rarpd w wersji z net-misc/iputils, więc wpis taki trzeba będzie dodać do /etc/conf.d/local.start. Przykładowy wpis może wyglądać tak:
Listing 2.3: /etc/conf.d/local.start |
/usr/sbin/rarpd -v -e eth0 |
Objaśnienie powyższych opcji:
Więcej informacji znajduje się na stronie man rarpd, w sekcji ósmej.
Konifguracja net-misc/rarpd
Najpierw należy zainstalować rarpd:
Listing 2.4: Instalacja rarpd |
# emerge net-misc/rarpd
|
Następnie należy ustawić właściwe opcje w /etc/conf.d/rarpd. Na przykład, dla konfiguracji podobnej jak poprzednio dla rarpd w wersji net-misc/iputils, powinno się ustawić opcje jak następuje:
Listing 2.5: /etc/conf.d/rarpd |
RARPD_OPTS="-v -i eth0" |
Wytłumaczenie powyższych opcji:
Więcej opcji jest opisanych w stronie mana dla rarpd oraz w rarpd --help.
Dostępne są trzy wersje daemona tftp, net-misc/atftp, net-misc/netkit-tftp oraz net-misc/tftp-hpa. Potrzebny jest tylko jeden z nich.
Konfiguracja elementów wspólnych dla tftp
Każdy demon tftp potrzebuje katalogu, w którym umieszczone będą pliki przez niego udostępniane. W tym podręczniku użyjemy w tym celu /tftpboot. Katalog ten będzie traktowany jak katalog główny (/) podczas obsługi otrzymanych zapytań. Dodatkowo, skonfigurujemy system tak, aby deamon tftp działał z uprawnieniami użytkownika i grupy nobody.
Jeżeli wybrany katalog nie istnieje, to niezbędne stworzenie go poleceniem mkdir. Na przykład, dla tftpboot, właściwym poleceniem jest:
Listing 2.6: Tworzenie /tftpboot |
# /bin/mkdir /tftpboot
|
Następnie potrzebna będzie zmiana właściciela i grupy /tftpbootna nobody:
Listing 2.7: Zmiana właściciela |
# chown nobody:nobody /tftpboot
|
Najpierw instalujemy pakiet net-misc/atftp:
Listing 2.8: Instalacja atftp |
# emerge net-misc/atftp
|
Po instalacji net-misc/atftp niezbędna jest jego konfiguracja. Jeżeli usługa tftpd jest potrzebna zaraz po starcie systemu, to potrzebne będzie dodanie wpisu do /etc/conf.d/local.start, ponieważ atftp nie ma własnych skryptów dla init.d, inetd ani xinetd. Jeżeli potrzebne jest wykorzystanie inetd albo xinetd, to należy zwrócić się do właściwych stron man.
Poniżej znajduje się przykładowy wpis atftpd w /etc/conf.d/local.start:
Listing 2.9: /etc/conf.d/local.start |
/usr/sbin/in.tftpd -v --daemon /tftpboot |
Wyjaśnienie powyższych opcji:
Więcej opcji jest opisanych w stronie mana atftpd w sekcji 8.
Najpierw instalujemy pakiet net-misc-tftp jak następuje:
Listing 2.10: Instalacja netkit-tftp |
# emerge net-misc/netkit-tftp
|
Następnie instalujemy sys-apps/xinetd - o ile nie jest już zainstalowany. Kiedy oba pakiety są już dostępne można skonfigurować netkit-tftp. Program ten musi być wykonywany z poziomu xinetd, jednak nie są z nim dostarczane żadne skrypty przykładowe, więc zapewniamy jeden poniżej:
Listing 2.11: Przykładowy plik /etc/xinetd.d/tftp |
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
group = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
only_from = 10.0.1.0
disable = no
}
|
Uwaga: Ten przykładowy plik konfiguracyjny tftp używa wiersza "disable = no", który sprawia, że usługa jest domyślnie aktywna. Jest to przeciwne do konfiguracji typowej dla pakietów w Gentoo, które disable ustawiają na wartość "yes". |
Wyjaśnienie tych spośród powyższych opcji, które można zmienić: user to użytkownik z którego uprawnieniami wykonany zostanie in.tftpd, group to grupa z której uprawnieniami wykonany zostanie in.tftpd, server_args to katalog główny dla daemona tftp, a only_from to adresy, z których xinetd dopuszcza połączenia.
Dodatkowe informacje dostępne są na stronie manuala xinetd.conf, w sekcji 5.
Jeżeli xinetd działa, można mu wysłać sygnał HUP aby ponownie odczytał swoje pliki konfiguracyjne.
Listing 2.12: Wysyłanie xinetd sygnału HUP |
# /bin/killall -HUP xinetd
|
Jeżyli xinetd nie działa, należy go uruchomić za pośrednictwem skryptu init.d;
Listing 2.13: Startowanie xinetd |
# /etc/init.d/xinetd start
|
Więcej informacji znajduje się w sekcji ósmej manuala, na stronie o in.tftpd.
Najpierw należy zainstalować pakiet tftp-hpa za pomocą następującego polecenia:
Listing 2.14: Instalacja tftp-hpa |
# emerge net-misc/tftp-hpa
|
Razem z tftp-hpa dostarczony jest skrypt init.d oraz odpowiadający mu plik konfiguracyjny conf.d. Należy upewnić się, że INTFTPD_PATH oraz INTFTPD_OPTS w /etc/conf.d/in.tftpdzgadzają się z podanymi:
Listing 2.15: /etc/conf.d/in.tftpd |
INTFTPD_PATH="/tftpboot"
INTFTPD_OPTS="-s -v -l ${INTFTPD_PATH}"
|
Daemon tftp może teraz zostać uruchomiony ze skryptu init.d:
Listing 2.16: Startowanie in.tftpd |
# /etc/init.d/in.tftpd start
|
Więcej informacji można znaleźć w stronie manuala poświęconej tftpd, znajdującej się w sekcji ósmej.
3. Przygotowanie obrazu tftpboot do wykorzystania przez klienta
Należy upewnić się, że dysponuje się przygotowanym obrazem netboot. Dla SPARC oraz SPARC64 obrazy dostępne są na mirrorach Gentoo w katalogu experimental/sparc/tftpboot. Zakładamy teraz, że bootowany jest system sparc64 przy użyciu pliku gentoo-sparc64-1.4_rc4-20040102.tftpboot.
Po przygotowaniu obrazu należy go skopiować do katalogu /tftpboot:
Listing 3.1: Kopiowanie obrazu |
# cp gentoo-sparc64-1.4_rc4-20040102.tftpboot /tftpboot
|
Teraz, gdy klient netboot wykonuje zapytanie tftp, szuka pliku o nazwie składającym się z jego numeru IP w postaci szesnastkowej oraz, na niektórych architekturach, z końcówki .ARCH. Numer szesnastkowy powinien być podany wielkimiliterami.
Przewodnik konwersji z postaci dziesiątkowej na szesnastkową dostępny jest na stronie http://www.permadi.com/tutorial/numDecToHex/.
Dla leniwych/niecierpliwych, narzędzie do konwersji między postacią dziesiętną i szesnastkową dostępne jest na http://dan.drydog.com/hextemp.html
Uwaga: Każdy oktet adresu IP (na przykład 10 w 10.0.1.15) należy przetłumaczyć na postać szesnastkową oddzielnie. |
Tak więc odpowiednikiem naszego przykładowego adresu IP, 10.0.1.15, będzie:
Listing 3.2: Przykładowy adres IP |
dziesiątkowo 10 0 1 15 szesnastkowo 0A 00 01 0F |
Tak więc przykładowy klient sparc64 podczas startu będzie szukał pliku o nazwie 0A00010F.
Klienty oparte na sparc będą szukały natomiast pliku 0A00010F.SUN4M, 0A00010F.SUN4C lub 0A00010F.SUN4D, zależnie od konkretnego systemu.
Alternatywnie można sprawdzić w logach tftp jakiego pliku szuka klient podczas startu.
Należy upewnić się, że demony rarpd oraz tftpd są uruchomione, następnie uruchomić klienta tak, jak jest to opisane w części "Uruchamianie klienta z sieci".
Po wydaniu polecania boot klient będzie sprawiał wrażenie zawieszonego. Teraz, na serwerze netboot, można sprawdzić dziennik systemowy w poszukiwaniu wpisu od in.tftpd.
Przykładowy wpis na serwerze z działającym sysklogd oraz tftp-hpa wygląda tak:
Listing 3.3: Wpis w dzienniku systemowym serwera uruchamiania z sieci |
Jan 3 22:48:59 stargazer in.tftpd[8368]: RRQ from 10.0.1.15 filename 0A00010F |
Nazwa pliku znajduje się po napisie "filename" we wpisie, w tym przypadku jest to 0A00010F.
Aby utrzymać kontrolę nad wykorzystanym obrazem netboot oraz aby umożliwić wielu maszynom korzystanie z tego samego obrazu, można stworzyć dowiązanie symboliczne do pliku o nazwie szesnastkowej. Aby dokonać tego z naszym przykładowym komputerem sparc64 oraz obrazem gentoo-sparc64-1.4_rc4-20040102.tftpboot należy wykonać następujące polecenie:
Listing 3.4: Dowiązanie obrazów |
# /bin/ln -s /tftpboot/gentoo-sparc64-1.4_rc4-20040102.tftpboot /tftpboot/0A00010F
|
Teraz wszystko powinno już być gotowe do wystartowania!
4. Uruchamianie klienta z sieci
Korzystając z PROM OpenBoot (OBP) na SPARCu, należy wydać polecenie:
Listing 4.1: Startowanie OBP |
ok boot net
|
Inną metodą, dostępną na pewnych maszynach, jest:
Listing 4.2: Startowanie OBP, wersja alternatywna |
ok boot net-tpe
|
Uwaga: Jeżeli system nie wyświetla znaku zachęty OBP, to należy albo przytrzymać klawisze Stop oraz A albo przesłać sygnał break z konsoli szeregowej. Jeżeli komputer nie może znaleźć systemu operacyjnego, to albo spróbuje wystartować przez interfejs sieciowy (czego właśnie chcemy) albo pozostanie przy znaku zachęty. |
W ten sposób uruchomiony zostanie proces startu z sieci. Powinien być widoczny ciągle zmieniający się łańcuch znaków szesnastkowych. Kiedy obraz zostanie załadowany, jądro przejmie kontrolę i rozpocznie procedurę ładowania systemu. W przypadku obrazu sparc64 dojdzie on do znaku zachęty powłoki, z którego można rozpocząć procedurę instalacji.
5. Znajdowanie i poprawianie błędów
Budowa wymaganego oprogramowania
Jeśli serwer netboot pracuje na systemie Gentoo/Linux oraz występują problemy z instalacją pakietów rarpd, należy przeszukać http://forums.gentoo.org oraz http://bugs.gentoo.org, aby sprawdzić czy problem przydarzył się komuś innego. Jeśli nie lub jeżeli odnalezione rozwiązania nie działają, prosimy o zgłoszenie błędu na stronie http://bugs.gentoo.org.
Po wydaniu polecenia boot net system sprawia wrażenie zawieszonego.
Prawdopodobnie plik który system próbuje załadować z serwera tftp nie jest dostępny. Na maszynie SPARC prawdopodobnie ukazałyby się następujące komunikaty:
Listing 5.1: System zawiesza się podczas startu |
Rebooting with command: boot Boot device: net File and args: |
Należy dokładnie upewnić się, że plik potrzebny klientowi znajduje się w /tftpboot. Można zweryfikować nazwę pliku sprawdzając dziennik systemu. Dodatkowo, jeśli plik istnieje, klient spróbuje go załadować. Czasem, gdy pliku na początku nie było, zawiesi się, kiedy tylko się on pojawi. Aby sobie z tym poradzić należy powrócić do zachęty OBP i ponownie wykonać polecenie "boot net". Wtedy komputer powinien ściągnąć obraz i wystartować system operacyjny.
Próbuję wystartować przez sieć, ale jedyne, co widzę, to komunikaty "Timeout waiting for ARP/RARP packet".
Może to wynikać z kilku różnych problemów:
Aby zmienić wartość parametru tpe-link-test? w OBP należy wydać następujące polecenie:
Listing 5.2: Zmiana wartości tpe-link-test |
ok setenv tpe-link-test? true
tpe-link-test? = true
|
Teraz widać, że wartość tpe-link-test? jest już true. Należy ponownie uruchomić klienta.
Materiał udostępniany na podstawie licencji Creative Commons - Attribution / Share Alike.