Ciao,
subito prima di andare in ferie ho deciso di lasciarvi un articolo interessante su come impostare il vostro server (va bene anche un laptop fà al caso nostro..) per avere un boot server PXE !
Come sarebbe "che vuol dire" ?
Uhm, mi sa che è meglio iniziare da lontano.
Vi è mai capitato dopo aver acceso il vostro Pc di aver visto dopo i vari messaggi del Bios uno relativo al boot da rete in cui c'e' scritto qualcosa tipo PXE e la marca della vostra scheda di rete ?
Se si vuol dire che avete una scheda di rete ;) , che nel vostro Bios la sequenza di avvio prevede il boot da rete prima di quello da Hard Disk, e in ultimo che la vostra scheda di rete è provvista della Eprom necessaria a farle eseguire questa procedura :D
Se no, che state leggendo a fare ? :p
Un po' di chiacchere chiarificatrici prima di passare alla pratica.
Il boot da rete è utile per vari scenari, da quello classico per installare una distribuzione Linux, al backup, o per l'avvio di terminali remoti.
Quello che che ci avviamo a realizzare è relativo alla installazione da rete di distribuzioni Linux (gli altri forse li tratterò in futuro).
Tenete presente che ci avvarremo di due diverse directory di lavoro, una serve al demone tftpd per avviare la procedura e conterrà pochi dati, l'altra directory invece, che chiameremo install, occuperà molto spazio perchè conterrà i dvd interi delle distribuzioni che intendiamo usare; è chiaro che è meglio metterla su una partizione che abbia parecchi giga liberi (se ad esempio vogliamo installare da rete solo Fedora 13 serviranno almeno 3Gb liberi).
La struttura delle directory sarà quindi questa:
/tftp/linux-install/
che contiene tante directory quante distribuzioni vogliamo installare da rete, la cartella msgs e la pxelinux.cfg, ed i files pxelinux.0 e menu.c32.
/tftp/linux-install/pxelinux.cfg
che contiene i files che servono a costruire il menu che vedremo una volta avviata la procedura, di solito è sufficiente il solo file default, ma nel nostro caso, visto che ci siamo, una serie di files perchè il menu che useremo sarà multi livello ;)
install
conterrà tante directory quante distribuzioni desideriamo avere disponibili per l'installazione via rete, e al loro interno il contenuto intero dei relativi dvd di installazione.
Create quindi la directory install nel percorso di vostra scelta:
mkdir /pathscelto/install
I componenti necessari al nostro scopo sono:
1) tftp
2) dhcpd
3) nfs
4) syslinux
Provvediamo quindi ad installare i pacchetti relativi col comando (da root):
yum -y install tftp-server dhcpd nfs syslinux
Fatto ? ;)
Bene, iniziamo col sostituire il file pxelinux.0:
mv /tftp/linux-install/pxelinux.0 /tftp/linux-install/pxelinux.0.old
cp /usr/share/syslinux/pxelinux.0 /tftp/linux-install/
poi copiamo il file menu.c32:
cp /usr/share/syslinux/menu.c32 /tftp/linux-install/
Adesso editiamo il file tftp col comando:
vi /etc/xinetd.d/tftp
e modifichiamo la riga
disable = yes
in
disable = no
Lo stesso risultato si ottiene scrivendo:
chkconfig tftp on
Inoltre penso dovremmo spostare la directory che il demone tftp serve modificando la riga:
server_args = -s /var/lib/tftpboot
in:
server_args = -s /tftpboot
Adesso editiamo il file exports che serve al demone nfs per montare le directory di installazione da remoto:
vi /etc/exports
e inseriamo:
/media/Extra/install/fedora32 *(no_root_squash,no_subtree_check,ro)
Attenzione: la parte /media/Extra è relativa alla mia installazione perchè ho usato il disco usb esterno montato in /media e di nome Extra per mettere il contenuto dei dvd di installazione, nel vostro caso invece dovrete sostituire il path relativo alla VOSTRA directory install (se ad esempio l'avete creata nella directory radice del vostro hard disk allora userete /install)
Create quindi la directory fedora 32 all'interno di /install:
mkdir /pathscelto/install/fedora32
Adesso popoliamo questa directory, se avete il dvd di fedora 32 provvedete a copiarne il contenuto all'interno della directory /pathscelto/install/fedora32, scegliete voi se farlo graficamente o da linea di comando; se avete invece il file .iso usate questi comandi:
mkdir /media/t
mount -o loop /pathdelfile/Fedora-13-i686-Live.iso /media/t
rsync -avSA /media/t/ /pathscelto/install/fedora32
Proviamo che la configurazione sia funzionante:
service nfs start
se è tutto ok proviamo anche da un pc remoto il comando:
showmount -e ipdelnostroserver
dovremmo vedere la condivisione messa in /etc/exports, in caso contrario provate a disabilitare sia selinux che il firewall e poi riprovate.
Se vogliamo che il servizio nfs parta anche ad ogni successivo riavvio digitiamo:
chkconfig nfs on
Adesso configuriamo il server dhcp per fornire al pc che tenta il boot da rete tutti i dati necessari:
vi /etc/dhcp/dhcpd.conf
e inseriamo:
ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
range 192.168.0.20 192.168.0.25;
default-lease-time 21600;
max-lease-time 43200;
#PXE-specific configuration directives...
if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
filename "linux-install/pxelinux.0";
next-server 192.168.0.166;
}
}
Precisazioni: la rete di classe C qui indicata (192.168.x.x) è arbitraria, dipende solo da come è configurata la scheda di rete del vostro server, nel mio caso ha ip 192.168.0.166.
E' quindi imperativo che scegliate la stessa classe di ip del vostro server e soprattutto che alla riga:
next-server 192.168.0.X
mettiate l'indirizzo IP del vostro server, pena il non funzionamento del tutto.
Bene, adesso scriviamo:
service dhcpd start
e assicuriamoci che il servizio parta correttamente, se poi vogliamo fare in modo che parta anche ad ogni successivo riavvio:
chkconfig dhcpd on
Adesso creiamo nel percorso /tftpboot/linux-install/pxelinux.cfg i files che creano i menu:
cd /tftpboot/linux-install/pxelinux.cfg
vi default
e inseriamo:
default menu.c32
prompt 0
menu title PXE Special Boot Menu
menu INCLUDE pxelinux.cfg/graphics.conf
MENU AUTOBOOT Starting Local System in # seconds
label bootlocal
menu label ^Boot Local System
menu default
localboot 0
timeout 80
TOTALTIMEOUT 9000
LABEL Fedora Menu
MENU LABEL ^Fedora Menu
KERNEL menu.c32
APPEND pxelinux.cfg/graphics.conf pxelinux.cfg/fedora.menu
LABEL RedHat Menu
MENU LABEL ^RedHat Menu
KERNEL menu.c32
APPEND pxelinux.cfg/graphics.conf pxelinux.cfg/redhat.menu
poi il file:
vi fedora.menu
inserendo:
MENU TITLE Setup Menu
LABEL Main Menu
MENU LABEL ^Return to Main Menu
KERNEL menu.c32
APPEND pxelinux.cfg/default
label fedora32
MENU PASSWD 123
menu label Fedora - ^32 bit
kernel fedora32/vmlinuz
append initrd=fedora32/initrd.img ramdisk_size=9216
method=nfs:192.168.0.166:/media/Extra/install/fedora32 ip=dhcp
label fedora64
MENU PASSWD 123
menu label Fedora - ^64 bit
kernel fedora64/vmlinuz
append initrd=fedora64/initrd.img ramdisk_size=9216
method=nfs:192.168.0.166:/media/Extra/install/fedora64 ip=dhcp
ed infine
vi redhat.menu
inserendo:
MENU TITLE Setup Menu
LABEL Main Menu
MENU LABEL ^Return to Main Menu
KERNEL menu.c32
APPEND pxelinux.cfg/default
label redhat32
MENU PASSWD 123
menu labelRedHat - ^32 bit
kernel redhat32/vmlinuz
append initrd=redhat32/initrd.img ramdisk_size=9216
method=nfs:192.168.0.166:/media/Extra/install/redhat32 ip=dhcp
label redhat64
MENU PASSWD 123
menu label RedHat - ^64 bit
kernel redhat64/vmlinuz
append initrd=redhat64/initrd.img ramdisk_size=9216
method=nfs:192.168.0.166:/media/Extra/install/redhat64 ip=dhcp
Attenzione: l'ip 192.168.0.166 andrà sostituito con quello del vostro server, come discusso sopra a proposito della configurazione dhcpd
Finito.
Provate da un pc remoto collegato alla stessa rete del vostro server (o da una macchina virtuale sullo stesso server che usi la rete in modalità bridge) ad effettuare il boot e forzate quello da rete (leggete i messaggi di Post del Bios).
Buona fortuna e...buone ferie !