PXE w Fedorze, czyli stawiamy serwerek
2009-11-21
Czasem musimy postawić system na maszynce, która nie ma napędu CD/DVD, bądź my nie mamy przy sobie zapisywalnego krążka. Możemy wówczas kombinować z pendrajwem, jednak ta opcja ma swoje wady - po pierwsze, musimy owy sprzęt posiadać, po drugie, jest to opcja powolna - popularne, tanie pendrajwy są powolne, no i starsze komputery mogą posiadać jedynie USB 1.1, co strasznie boli. Ale jest jeszcze jedna opcja - uruchomienie komputera przez sieć. Jak osobiście się o tym przekonałem, jest to procedura dość łatwa do osiągnięcia i przyjemna w wykorzystaniu - dość niezawodna, a prędkości osiągane są na tyle przyzwoite, żeby umożliwić komfortową instalację. Opiszę, jak wszystko to działa na Fedorze 12, jednak i na innych wersjach/dystrybucjach powinno być podobnie. Instalował będę xubuntu 9.10. No więc, bez zbędnego smęcenia - zaczynamy.
Zdobywamy narzędzia
Potrzebny nam będzie serwer DHCP i tftp. Instalujemy więc odpowiednie pakiety, pod Fedorką noszące nazwy tftp-server dhcp
Przygotowujemy miejsce pracy
Najpierw skonfigurujmy serwer DHCP. W pliku /etc/dhcp/dhcpd.conf
wstawiamy coś na kształt tego:
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
range dynamic-bootp 192.168.1.200 192.168.1.240;
next-server 192.168.1.10;
filename "pxelinux.0";
}
Oczywiście, subnet
i netmask
ustawiamy odpowiednio do naszej sieci. Dane te można łatwo wyciągnąć graficznie z NetworkManagera, klikając prawym przyciskiem na ikonce i wybierając Informacje o połączeniu. Oczywiście, można też użyć ifconfiga. range dynamic-bootp
ustala zakres adresów, jakie serwer przydzieli, a next-server
należy ustawić na adres IP komputera, na którym uruchamiamy serwer tftp.
Kiedy już mamy DHCP skonfigurowane, przychodzi pora na konfigurację TFTP. Plik konfiguracyjny znajdziemy pod /etc/xinet.d/tftp
. W zasadzie domyślna konfiguracja jest w porządku. W razie czego, oto mój plik konfiguracyjny:
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
Wrzucanie plików tam, gdzie trzeba
Tak więc, bierzesz plik .iso z instalką systemu/livecd/czymkolwiek i rozpakowujesz jego zawartość. Można to zrobić na wiele sposobów, ja jestem leniem i użyłem opcji “Rozpakuj tutaj” w menu kontekstowym Gnome. Tylko uwaga, mogą tam się znaleźć ukryte pliki, którymi również się zajmujemy, jak np. katalog .disk
na płytce z *ubuntu. Zawartość tego kopiujemy do katalogu /var/lib/tftpboot
, a następnie z katalogu install/netboot
przerzucamy katalog ubuntu-installer
do katalogu /var/lib/tftpboot
. Wewnątrz ubuntu-installer/architektura_kompa
znajdziemy ciekawe pliczki, jak vmlinuz
, initrd.gz
i pxelinux.0
(ten ostatni również jest w netboot
, jednak tam ma podejrzanie zerowy rozmiar, z braku chęci nie testowałem, jak to się wszystko zachowa). Kopiujemy je do katalogu /var/lib/tftpboot
, i to w sumie powinno być tyle, o ile nie używamy…
SELinux i TFTP
Jeśli mamy SELinuksa załączonego, to bez tego kroku będzie z nami krucho - żaden plik nie będzie chciał się przesłać, wywalając Forbiddena. W internecie polecają wyłączenie SELinuksa całkowicie, ale jeśli w niczym poza tym nam nie przeszkadza, to nie ma sensu go wywalać - ponowne nadanie kontekstu plikom wystarczy. Będąc w katalogu /var/lib
wydajemy polecenie
restorecon -Rv tftpboot/
Uruchamiamy wehikuł
Teraz musimy odpalić serwer DHCP i TFTP. Robimy to poleceniami:
$ service dhcpd start
$ service xinetd start
$ chkconfig tftp on
Jeśli podczas odpalania dhcp pojawił się błąd, to znaczy, że popełniliśmy gdzieś błąd w jego pliku konfiguracyjnym - sprawdź, czy aby na pewno wprowadzone tam wartości odpowiadają tym, z jakim jest skonfigurowane aktywne połączenie sieciowe. Jeśli wszystko poszło dobrze, odpalamy kompa, na którym będziemy przeprowadzać instalację, w BIOSie ustawiamy odpowiedni priorytet dla urządzeń startowych (tak, aby PXE było wyżej niż dysk) i wszystko powinno śmigać.
Źródła
Informacje, z jakich korzystałem znajdują się w dokumentacji Fedory i ich liście mailingowej.
Post Scriptum
Kilka dodatkowych porad:
- Jeśli nie macie katalogu netboot na płytce, to wszystkie potrzebne pliki znajdziecie na serwerach Ubuntu, najwygodniej pobrać spakowane archiwum netbook.tar.gz i rozpakować w tftpboot.
- Aby w trakcie instalacji instalator był w stanie korzystać z internetu, musimy wyłączyć serwer DHCP na drugim komputerze i pozwolić działać temu na routerze. Można to bezpiecznie zrobić, jak system już się uruchomi.