In questa pagina descriverò come installare un "server PXE"
su un router (Asus RT-AC56U) - useremo alcuni pacchetti di Entware, pertanto
fate riferimento a questa pagina su come installare Entware su un router.
Installeremo i pacchetti "server DHCP",
"server Xinetd" e
"server TFTP" usando i pacchetti Entware.
Nota : se il vostro router possiede già un "server DHCP",
dovrete configurare il "server DHCP" esistente, pertanto
leggete la sezione "Come configurare un server DHCP esistente" e
saltate la sezione "Come installare il server DHCP".
Se il vostro router possiede già un "server DHCP", non potete installare un altro "server DHCP", pertanto dovrete usare la attuale configurazione del vostro "server DHCP". In questo caso dovrete aggiornare la configurazione del "DNSmasq", il file di configuration è denominato "dnsmasq.conf", e di solito si trova nella cartella "/etc". Alcune volte il vostro router potrebbe fornire un modo per aggiornare la configurazione del file "dnsmasq.conf", in entrambi i casi dovrete aggiungere le seguenti linee al file "dnsmasq.conf" :
dhcp-boot=pxelinux.0 pxe-service=x86PC, "Install Linux", pxelinux enable-tftp tftp-root=/opt/tftpboot
Fare riferimento
a questa pagina per avere un file "dnsmasq.conf" di esempio e
fare riferimento
a questa pagina per ulteriori dettagli sul file di configurazione "dnsmasq.conf".
Brevemente, nel suddetto esempio, noi:
In questa pagina useremo la cartella "/opt/tftpboot" come radice del server TFTP, pertanto nel suddetto esempio la usiamo per dire al server "DNSmasq" dove è la cartella radice del server TFTP. Inoltre nella suddetta cartella radice del server TFTP noi avremo il file "pxelinux.0" usato per avviare il servizio PXE.
Saltate la prossima sezione "Come installare il server DHCP" e andate alla sezione "Come installare i server Xinetd e TFTP".
Il server DHCP server deve essere installato solo se il
vostro router ne è privo, questo per evitare qualunque tipo di conflitto.
Allo scopo di installare il "server DHCP" con i pacchetti Entware,
dobbiamo eseguire il seguente comando:
opkg install isc-dhcp-server-ipv6
Dopo aver fatto questo, creiamo una copia di riserva del file "/opt/etc/dhcpd.conf",
e creiamo un nuovo file "/opt/etc/dhcpd.conf" :
# dhcpd.conf allow booting; allow bootp; #Definition of the first subnet subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.25 192.168.1.50; #Lease time in seconds - 24 hours default-lease-time 86400; max-lease-time 86400; option domain-name-servers 192.168.1.1; option broadcast-address 192.168.1.255; option subnet-mask 255.255.255.0; #Gateway option routers 192.168.1.1; } log-facility local7; # tftp-Server Settings for PXE next-server 192.168.1.4; filename "pxelinux.0"; host myhostname { hardware ethernet 11:22:33:44:55:66; fixed-address 192.168.1.150; }
Fare riferimento
a questa pagina per ulteriori dettagli sul file di configurazione "dhcpd.conf".
Nel suddetto esempio, l'indirizzo IP "192.168.1.1" è l'indirizzo del
router principale, mentre l'indirizzo IP "192.168.1.4" è il secondo
router dove noi installiamo il "server DHCP", il "server Xinetd"
e il "server TFTP".
Inoltre dobbiamo creare anche un nuovo file "/opt/etc/init.d/S56dhcp"
che useremo per avviare/fermare il daemon DHCP :
#!/bin/sh ENABLED=yes PROCS=dhcpd ARGS="-lf /tmp/dhcpd.leases" PREARGS="" PRECMD="touch /tmp/dhcpd.leases" POSTCMD="" DESC=$PROCS PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin . /opt/etc/init.d/rc.func
Nel suddetto file, il parametro "PRECMD" viene
usato per eseguire il comando "touch /tmp/dhcpd.leases" prima di
avviare il daemon DHCP. In questo modo siamo sicuri che il file "/tmp/dhcpd.leases"
venga sempre creato prima di avviare il daemon DHCP.
Eseguiamo lo script "/opt/etc/init.d/S56dhcp start" allo scopo di
avviare il daemon DHCP. Questo script deve essere eseguito ogni volta che il
router viene riavviato.
Allo scopo di installare i server "Xinetd"
e "TFTP" con i pacchetti Entware, dobbiamo eseguire il
seguente comando :
opkg install tftpd-hpa xinetd
Dopo aver questo, creiamo una copia di riserva del file "/opt/etc/xinetd.conf",
e modifichiamo il file esistente "/opt/etc/xinetd.conf" allo scopo di
avere :
defaults { only_from = localhost 10.0.0.0/8 172.16.0.0/12 192.168.1.0/16 instances = 60 log_type = SYSLOG authpriv info log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /opt/etc/xinetd.d
Fare riferimento
a questa pagina per ulteriori dettagli sul file di configurazione "xinetd.conf".
Dobbiamo anche creare un nuovo file "/opt/etc/xinetd.d/tftp" che verrà
usato da Xinetd per avviare il daemon TFTP (non abbiamo bisogno di avviare manualmente il
daemon TFTP) :
service tftp { flags = IPv4 socket_type = dgram protocol = udp instances = 30 wait = yes user = admin server = /opt/sbin/tftpd-hpa server_args = -s /opt/tftpboot cps = 100 2 log_on_success = HOST PID log_on_failure = HOST disable = no per_source = 11 }
Fare riferimento
a questa pagina per ulteriori dettagli sui servizi aggiuntivi
del "server xinetd".
Eseguiamo lo script "/opt/etc/init.d/S10xinetd start" allo scopo di
avviare il daemon Xinetd. Questo script deve essere eseguito ogni volta
che il router viene riavviato.
Prima di avviare la verifica del "servizio PXE",
abbiamo bisogno di impostare la cartella radice del "server TFTP".
Innanzitutto creiamo la cartella radice usando il seguente comando :
mkdir /opt/tftpboot
Poiché non è semplice impostare la cartella radice del "server TFTP",
scarichiamo
un file compresso dal sito web di "Debian Linux" ed estraiamo
tutti i suoi file nella cartella radice "/opt/tftpboot".
Nella suddetta cartella radice abbiamo 3 voci importanti, "ldlinux.c32", "pxelinux.0"
e
"pxelinux.cfg". Le prime due rappresentano file obbligatori per il
servizio PXE e non possono essere modificati o eliminati, l'ultima voce
rappresenta una cartella contenete un file chiamato "default" che può
essere modificato. Il contenuto del file di esempio "pxelinux.cfg/default"
è :
# D-I config version 2.0 # search path for the c32 support libraries (libcom32, libutil etc.) path debian-installer/amd64/boot-screens/ include debian-installer/amd64/boot-screens/menu.cfg default debian-installer/amd64/boot-screens/vesamenu.c32 prompt 0 timeout 0
Il primo parametro "path" viene usato come cartella di base per il "servizio PXE", il parametro "include" viene usato per includere un file di configurazione che deve usato per creare il menù principale del "servizio PXE", mentre il parametro "default" viene usato per visualizzare il menù grafico del "servizio PXE". Ciò che segue è un esempio di contenuto del file "menu.cfg" :
menu hshift 7 menu width 61 menu title Debian GNU/Linux installer boot menu include debian-installer/amd64/boot-screens/stdmenu.cfg include debian-installer/amd64/boot-screens/txt.cfg include debian-installer/amd64/boot-screens/amdtxt.cfg include debian-installer/amd64/boot-screens/gtk.cfg include debian-installer/amd64/boot-screens/amdgtk.cfg menu begin advanced menu label ^Advanced options menu title Advanced options include debian-installer/amd64/boot-screens/stdmenu.cfg label mainmenu menu label ^Back.. menu exit include debian-installer/amd64/boot-screens/adtxt.cfg include debian-installer/amd64/boot-screens/amdadtxt.cfg include debian-installer/amd64/boot-screens/adgtk.cfg include debian-installer/amd64/boot-screens/amdadgtk.cfg menu end label help menu label ^Help text help Display help screens; type 'menu' at boot prompt to return to this menu endtext config debian-installer/amd64/boot-screens/prompt.cfg include debian-installer/amd64/boot-screens/spk.cfg include debian-installer/amd64/boot-screens/amdspk.cfg include debian-installer/amd64/boot-screens/spkgtk.cfg include debian-installer/amd64/boot-screens/amdspgtk.cfg
Fare riferimento a questa pagina per ulteriori dettagli sui file di configurazione usati per creare menù e sottomenù per il "server PXE".
Un esempio di (sotto)menù è il seguente, questo viene usato per eseguire una distribuzione Live-USB di "GParted" :
menu background bootmenu/splash_gparted.png label GParted Live32 MENU LABEL GParted Live 32-bit kernel bootmenu/gparted32/vmlinuz append initrd=bootmenu/gparted32/initrd.img boot=live config components union=overlay username=user nosplash noprompt noswap noeject ip= vga=788 ethdevice-timeout=600 fetch=tftp://192.168.1.4/bootmenu/gparted32/filesystem.squashfs label GParted Live64 MENU LABEL GParted Live 64-bit kernel bootmenu/gparted64/vmlinuz append initrd=bootmenu/gparted64/initrd.img boot=live config components union=overlay username=user nosplash noprompt noswap noeject ip= vga=788 ethdevice-timeout=600 fetch=tftp://192.168.1.4/bootmenu/gparted64/filesystem.squashfs
Nel suddetto esempio, il file "filesystem.squashfs"
viene caricato dal "server TFTP". Ricordarsi di includere
l'indirizzo IP corretto del "server TFTP", in questo è "192.168.1.4".
Da notare che questi menù sono simili a quelli usati dalle distribuzioni Live-USB (che
includono il boot-loader "SysLinux"),
persino i file di avvio "vmlinuz"
e "initrd.img" sono gli stessi.
Un altro esempio di (sotto)menù è capace di avviare un'immagine ".ISO",
ad esempio un Live-CD. Questa è una particolare opzione da verificare caso-per-caso, non tutte le immagini
.ISO possono essere eseguite dal "servizio PXE". Solitamente
soltanto le immagini .ISO
di piccole dimensioni possono essere eseguite.
Un esempio di immagini .ISO sono le installazioni di rete delle distribuzioni Linux,
esse non includono tutti i pacchetti di Linux poiché sono scaricati da Internet.
Un esempio di menù di avvio per eseguire un'immagine .ISO è il seguente :
menu background bootmenu/splash_opensuse.png LABEL Opensuse install 32 bit text help Install OpenSuse 13.2 (32 bit) via Network Installer endtext MENU LABEL Opensuse 13.2 (NET Install 32 bit) LINUX bootmenu/memdisk INITRD bootmenu/linux/opensuse/openSUSE-13.2-NET-i586.iso APPEND iso vga=normal vmalloc=512M LABEL Opensuse install 64 bit text help Install OpenSuse 13.2 (64 bit) via Network Installer endtext MENU LABEL Opensuse 13.2 (NET Install 64 bit) LINUX bootmenu/memdisk INITRD bootmenu/linux/opensuse/openSUSE-13.2-NET-x86_64.iso APPEND iso vga=normal vmalloc=512M
Nel suddetto esempio, il "server PXE" usa il
"servizio memdisk"
per eseguire l'installazione di rete della distribuzione "openSUSE
Linux".
Per riassumere, se vogliamo eseguire un Live-CD o un Live-USB tramite il "server
PXE", abbiamo due possibilità :
Per verificare il "server PXE" bisogna avere un computer
che può avviarsi dalla rete o eventualmente usare una macchina virtuale
installata sul computer. La macchina virtuale deve essere configurata per
avviarsi dalla rete, rimuovendo tutte le altre opzioni di avvio.
Durante l'avvio da un "server PXE", l'interfaccia di rete proverà a
cercare un "server DHCP" e se trovato chiederà di eseguire il codice
principale del "server PXE". E' importante avere una veloce
connessione di rete durante tutte le fasi del procedimento di avvio da un "server
PXE", tutto il lavoro viene eseguito tramite la rete.
Ricordo che il procedimento di avvio del "service PXE" è simile al
procedimento di avvio del "servizio SysLinux",
quest'ultimo viene usato per creare unità disco multi-avvio gestite da menù.
Pertanto il "servizio PXE" userà direttamente i soliti file di avvio "vmlinuz"
e "initrd.img", mentre tramite il "server TFTP",
esso caricherà il file "squashfs". Quest'ultima fase risulterà lenta
se la velocità della rete non è adeguata.