Przystępując do lektury tej części cyklu artykułów o bootowaniu z sieci lokalnej zakładam, że skonfigurowałeś swój router z alternatywnym firmware OpenWrt, a w BIOS-ie bootowanego klienta ustawiłeś opcję Boot from LAN. Jeśli nie zapraszam do lektury pierwszej części cyklu – Bootowanie z sieci – konfiguracja routera.
Serwer TFTP
Dalsza konfiguracja PXE / gPXE zostanie przeprowadzona na najnowszej dystrybucji LMDE – uściślając Linux Mint Debian Edition 201303 MATE 64-bit, ale identycznie postępować będziemy na Ubuntu Debianie oraz wszystkich innych bazujących na nich dystrybucjach. Oczywiście na Windowsie również możemy to zrobić, ale na Linuksie będzie to prostsze i wygodniejsze. Jeśli jesteś użytkownikiem Windowsa i nigdy nie miałeś do czynienia z Linuksem proponuję spróbować instalacji Linuksa na maszynie wirtualnej, co w sposób łopatologiczny opisuję w artykule Instalacja LMDE na VirtualBox.
Serwer TFTP Trivial File Transfer Protocol instalujemy wydając w terminalu polecenie:
1 |
sudo apt-get install tftpd-hpa |
Jego działanie możemy sprawdzić innymi poleceniami, mianowicie:
1 |
netstat -lu | grep tftp |
lub
1 |
ss -apu | grep tftp |
Głównym katalogiem serwera TFTP jest /srv/tftp
i w nim będziemy umieszczać potrzebne do bootowania z LANu pliki.
Syslinux
Pliki te znajdziemy w pakiecie syslinux. Tak więc instalujemy ten pakiet i kopiujemy, to co będzie nam potrzebne w niniejszym tutorialu:
1 2 3 4 5 |
sudo apt-get install syslinux sudo cp /usr/lib/syslinux/gpxelinux.0 /srv/tftp sudo cp /usr/lib/syslinux/vesamenu.c32 /srv/tftp sudo cp /usr/lib/syslinux/memdisk /srv/tftp sudo cp /usr/lib/syslinux/chain.c32 /srv/tftp |
ewentualnie zamiast graficznego vesamenu.c32
możemy użyć tekstowego menu.c32
:
1 |
sudo cp /usr/lib/syslinux/menu.c32 /srv/tftp |
Po skopiowaniu wszystkich potrzebnych plików możemy ewentualnie odinstalować pakiet syslinux:
1 |
sudo apt-get autoremove syslinux --purge |
Obrazy płyt instalacyjnych umieszczać będziemy w podkatalogu images
serwera TFTP, który utworzymy poleceniem:
1 |
sudo mkdir /srv/tftp/images |
Jeśli bootowanym systemem będzie jakakolwiek dystrybucja linuksowa do tego katalogu będziemy rozpakowywać lub montować obraz ISO bootowalnego dysku CD / DVD. Proponuję abyśmy obrazy ISO zapisywali w przykładowym katalogu ~/Pobrane/Images
. Ponadto proponuję, aby dla zachowania porządku nazwa podkatalogu do którego rozpakowujemy / montujemy dany obraz ISO była zgodna z nazwą obrazu ISO. W nielicznych przypadkach (tzn. takich gdzie dana dystrybucja przygotowana jest specjalnie pod kątem PXE) będziemy tam rozpakowywać jakieś archiwum ZIP itp. W przypadku pozostałych systemów operacyjnych (Windows / DOS) będziemy w tym katalogu umieszczać wprost obrazy ISO bootowanych płt CD / DVD.
Montowanie obrazów ma tą zaletę nad ich rozpakowywaniem, że będziemy mieć nieco mnie roboty w przypadku aktualizacji danego obrazu ISO, gdyż nie będziemy musieli go powtórnie rozpakowywać. Jeśli zdecydowałeś się, że obrazy ISO będziesz montować, a nie rozpakowywać będziemy to robić w sposób opisany poniżej na przykładzie dystrybucji ratunkowej SystemRescue-Cd.
Ściągamy obraz ISO płyty systemrescuecd-x86-3.5.0.iso
i zapisujemy do wcześniej ustalonego katalogu ~/Pobrane/Images
. Zgodnie ze wcześniejszymi założeniami tworzymy w katalogu images
podkatalog o nazwie zgodnej z nazwą obrazu systemrescuecd-x86-3.5.0
:
1 |
sudo mkdir /srv/tftp/images/systemrescuecd-x86-3.5.0 |
Następnie edytujemy plik /etc/fstab
komendą:
1 |
sudo nano /etc/fstab |
gdzie dopiszemy:
1 2 |
# PXE /home/<użytkownik>/Pobrane/Images/systemrescuecd-x86-3.5.0.iso /srv/tftp/images/systemrescuecd-x86-3.5.0 iso9660 ro,loop,auto 0 0 |
Dla porządku proponuję wszystkie kolejne obrazy ISO płyt CD/DVD dopisywać pod komentarzem # PXE
.
Zamontowanie dodanego obrazu ISO nastąpi po wydaniu komendy:
1 |
sudo mount -a |
Na koniec musimy utworzyć jeszcze główny plik konfiguracyjny naszego serwera PXE / gPXE:
1 2 |
sudo mkdir /srv/tftp/pxelinux.cfg sudo nano /srv/tftp/pxelinux.cfg/default |
Serwer NFS
Jak wypomniałem na wstępie protokół TFTP jest przeraźliwie wolny, dlatego do wczytywania obrazów plików w formacie SquashFS stosuje się inne protokoły, najczęściej jest to serwer NFS (Network File System), który instalujemy komendą:
1 |
sudo apt-get install nfs-kernel-server |
A konfigurujemy edytując plik /etc/exports
:
1 |
sudo nano /etc/exports |
gdzie dopisujemy następującą linię:
1 |
/srv/tftp/images/systemrescuecd 192.168.1.0/24(ro,async,no_root_squash,no_subtree_check) |
Serwer NFS startujemy komendą:
1 |
sudo service nfs-kernel-server start |
Działanie serwera NFS można sprawdzić poznanymi już poleceniami:
1 |
netstat -lu | grep nfs |
lub
1 |
ss -apu | grep nfs |
Każdorazowo po edycji pliku /etc/exports
musimy powiadomić serwer NFS o poczynionych zmianach komendą:
1 |
sudo exportfs -a |
lub
1 |
sudo service nfs-kernel-server reload |
Przykładowa zawartość pliku /etc/exports
może więc wyglądać następująco:
1 2 3 4 5 6 7 |
/srv/tftp/images/systemrescuecd-x86-3.5.0 192.168.1.0/24(ro,async,no_root_squash,no_subtree_check) /srv/tftp/images/netrunner-i386 192.168.1.0/24(ro,async,no_root_squash,no_subtree_check) /srv/tftp/images/lmde-mate-32bit 192.168.1.0/24(ro,async,no_root_squash,no_subtree_check) /srv/tftp/images/lmde-mate-64bit 192.168.1.0/24(ro,async,no_root_squash,no_subtree_check) /srv/tftp/images/lmde-cinnamon-32bit 192.168.1.0/24(ro,async,no_root_squash,no_subtree_check) /srv/tftp/images/lmde-cinnamon-64bit 192.168.1.0/24(ro,async,no_root_squash,no_subtree_check) /srv/tftp/images/ploplinux 192.168.1.0/24(ro,async,no_root_squash,no_subtree_check |
Spis treści
Tematykę bootowania z sieci lokalnej opisuję w serii 5 artykułów, zapraszam do zapoznania się z pozostałymi częściami: