MintNetInstall: differenze tra le versioni

Da MontelLUG.
Riga 59: Riga 59:
 
Potrebbe essere utile abilitare anche il wake on lan.
 
Potrebbe essere utile abilitare anche il wake on lan.
  
== RARP/BOOTP/PXE ==
+
== Qualche accenno di storia: RARP/BOOTP/PXE ==
 
Perché il pc possa partire, è necessario che carichi prendendolo da qualche parte il sistema operativo. Nel caso di boot da rete, sono necessarie due cose:
 
Perché il pc possa partire, è necessario che carichi prendendolo da qualche parte il sistema operativo. Nel caso di boot da rete, sono necessarie due cose:
 
* configurare l'indirizzo di rete;
 
* configurare l'indirizzo di rete;
Riga 88: Riga 88:
 
L'unica cosa da prestare attenzione è TFTP_DIRECTORY che è la directory dove andremo a posizionare tutti i file utili per il boot da rete.
 
L'unica cosa da prestare attenzione è TFTP_DIRECTORY che è la directory dove andremo a posizionare tutti i file utili per il boot da rete.
  
* Installazione dei pacchetti richiesti:
+
=== DHCP ===
** dhcp
+
Rispetto ad una configurazione standard di DHCP, sono stati specificati due parametri, '''filename''' e '''next-server''':
** nfs-kernel-server
+
* Modifica dei file di configurazione:
+
** /etc/dhcp/dhcpd.conf
+
 
<pre>
 
<pre>
 +
samuele-host:/# cat /etc/dhcp/dhcpd.conf
 +
<... resto del file>
 
subnet 192.168.1.0 netmask 255.255.255.0 {
 
subnet 192.168.1.0 netmask 255.255.255.0 {
 
       range 192.168.1.70 192.168.1.100;
 
       range 192.168.1.70 192.168.1.100;
Riga 103: Riga 102:
 
}
 
}
 
</pre>
 
</pre>
 +
* '''filename:''' è il nome del file contenente NBP
 +
* '''next-server:''' è il nome/ip del server dove si trova il file pxelinux.0, cioè del nostro server TFTP.
 +
 +
Attenti che se avete altri server DHCP in rete, potrebbero nascere dei conflitti.
 +
 +
=== Struttura delle cartelle nella root TFTP ===
 
* Copiare pxelinux.0 in /var/lib/tftpboot
 
* Copiare pxelinux.0 in /var/lib/tftpboot
 
* ./pxelinux.cfg/default  
 
* ./pxelinux.cfg/default  
<pre>
+
=== Configurazione di NFS ===
 +
=== File di configurazione per il boot di iso ===
 
DISPLAY boot.txt
 
DISPLAY boot.txt
  
Riga 118: Riga 124:
 
TIMEOUT 0
 
TIMEOUT 0
 
</pre>
 
</pre>
 +
 +
<pre>
 
* ./boot.txt  
 
* ./boot.txt  
 
<pre>
 
<pre>
Riga 127: Riga 135:
 
</pre>
 
</pre>
 
* Montare la iso di mint in /var/lib/tftpboot/mint
 
* Montare la iso di mint in /var/lib/tftpboot/mint
* ???
+
 
* Profit!
+
=== Configurazione per il netboot di una normale installazione linux ===
 +
 
 +
= Conclusioni =

Versione delle 13:57, 7 lug 2012

Procedimento per installazione di rete di Linux Mint (note di Samuele):


Disclaimer

Ora, qualcuno ha preso una mail mia di promemoria sparata in mailing list e l'ha copiata qui. Siccome c'è il rischio molto alto che queste pagine vengano indicizzate da un qualche motore di ricerca andando così ad incrementare l'entropia di istruzioni confusionarie e scarsamente utili che si trovano in rete riguardo ad un certo argomento, mi vedo costretto nonostante il mio profondo odio per la scrittura, per il linguaggio del wiki, e per gli how-to che non spiegano in modo impeccabile un certo argomento, a metterci mano per dare a questa pagina una parvenza di decenza e renderla un minimo utile a quel povero disgraziato che in preda ad una crisi isterica causata da n-mila tentativi andati a vuoto approda su questa pagina. Siccome l'argomento è lungo, non la finirò in un colpo solo e la riprenderò in mano soltanto quando riuscirò a sedermi davanti ad un pc senza aver passato la giornata a lottare con un branco di luser scassa cocomeri per i motivi più insignificanti. Il titolo riporta "installazione di rete di Linux Mint". In realtà il procedimento con qualche adattamento può essere adattato anche ad altre distro (spiegherò più avanti perché sarebbe bene ammazzare chi imposta il processo di boot delle varie distro).

Se qualcuno ha suggerimenti da dare o si accorge di castronerie da corregere è pregato di editare il wiki o mandare una mail a info (scioso) montellug (punto) it.

Chi, come, dove, quando e perché

Perché

Allora, partiamo dall'ultima domanda: perché. Esistono tanti bei metodi per installare linux, si può partire con il floppy, il cdrom, la chiavetta usb, la clonazione del disco, l'installazione manuale in stile Linux From Scratch, debootstrap, l'installazione da rete e qualche altro sistema che mi sono dimenticato di menzionare o non conosco. Quindi, perché uno sano di mente dovrebbe mettere su tutto l'ambaradam sottostante per installare linux?

  • l'installazione delle principali distribuzioni moderni è mortalmente noiosa (qualche settimana fà ho provato a fare l'installazione di una ubuntu 12.04. Mi ha chiesto solo il partizionamento, l'hostname, l'utente e la password. Un paio d'anni e ci leggeranno direttamente il pensiero);
  • fà sempre bene sperimentare qualcosa di nuovo;
  • si evita di dover masterizzare cd (solo questo punto vale tutta la fatica);
  • se avete una rete decente (o non provate ad installare 40 pc in contemporanea su una rete a 100 mbit, con 8 switch da 8 porte presi all'ipermercato collegati in cascata) l'installazione è più veloce;
  • applicate un metodo che il Luser 2.0 figlio del cugino del vicino di casa tutto iphone, ipad, isarca$$0 che sa tutti i programmi del mondo, che lui si che è bravo ecc. non sa;
  • vedere n pc che si installano in contemporanea, facendo tutto da soli (magari anche si accendono se supportano il wake on lan) premendo solo un bottone... non ha prezzo;
  • altri motivi a vostra scelta.

Quando

Quando è il caso di usare questo tipo di installazione? Sicuramente non se dobbiamo installare tre pc per ieri (cioè la norma) e non l'abbiamo mai provata prima. Se però vi installate il server (d'ora in poi la "supermucca" in onore di apt-get moo e del mio HP LH3000 che ha fatto da mirror dei repository in qualche linux day passato), anche sul vostro pc portatile (i pacchetti occupano poca roba, il resto sono le iso che normalmente scaricate) e lo avete a portata di mano, vi renderete conto che tenderete ad usarla sempre. In caso di installazioni di molti pc in contemporanea, beh, questa è la morte sua.

Dove

Ovvio: può essere usata dappertutto se avete a che fare con linux. Con windows, le cose si complicano un pochino e non ho avuto modo di provarle, né l'opportunità di poterle applicare e quindi la motivazione per rompermi i cocomeri a studiarla.

Chi

Inteso come chi può farla, beh, tendenzialmente si può dire che è abbastanza semplice e possono farla tutti. Usare il server già installato è idiot-proof quindi può veramente farlo chiunque. Per preparare il server è richiesto solo di essere un po' svegli, che se qualcosa non va essere in grado di ricercare la soluzione, e avere voglia di imparare un po' di basi di quei 4 protocolli/servizi in croce che vengono usati.

Inteso come chi sono i protagonisti della nostra storia, eccoli qui:

  • PXE (Preboot eXecution Enviroment);
  • DHCP (Dinamic Host Configuration Protocol);
  • TFTP (Trivial File Transfer Protocol);
  • NFS (Network File System);
  • Linux (la vostra distro preferita con forse qualche aggiustamento).

Come

Se non sono riuscito nel mio intento di farvi passare la voglia di leggere quanto segue e di farvi male... qui sotto è spiegato il come. Buon tedio a tutti!

Requisiti hardware & software

  • Hardware:
    • Un pc che faccia da server con scheda di rete;
    • Uno o più pc (per le prove vanno bene, anzi forse anche meglio delle virtual machine) sempre con scheda di rete; sua suprema tirannia IL PRESIDENTE ha provato a far fare il boot da rete al suo mac book senza esito (magari pretende che il server sia un i-coso, boh), quindi se avete un mac e non vi funziona, prima di suicidarvi, provate con un'altro pc;
    • In caso di più pc uno switch e relativi cavi;
  • Software; i seguenti software possono risiedere tutti su uno stesso pc o su diversi pc, cambia poco. Nel corso della guida farò riferimento ad uno stesso pc.
    • DHCP: con questo dovreste avere familiarità tutti. Qui useremeo qualche opzione in più di questo protocollo. E' molto probabile che il vostro router/firewall che fa da dhcp server in casa o al lavoro non abbia queste opzioni. In questo caso dovrete installare il software a parte;
    • TFTP server
    • NFS server
    • Il file iso di una distribuzione (per semplicità partiamo con una ubuntu (ho provato una 9.04 e una 10.04) oppure una mint (provato con una 12)).

Collegamenti hardware

Su questo punto siete in grado di arrangiarvi. Se non lo siete... vi mancano un po' troppe cose da conoscere. Imparatevi prima cos'è una rete locale, come è composta, come funziona, cos'è il TCP/IP, un file system, un kernel, un sistema operativo, un device, un disco, la ram, una tabella delle partizioni, una iso ecc. e poi tornate qui. Nei pc client dovete abilitare il boot da rete (PXE boot). Come si abilita dipende dal BIOS del pc in questione. In alcuni casi è già abilitato e basta solo impostarne la priorità al momento del boot (prima del boot da hard disk), in altri bisogna cercare una voce nel BIOS con la quale lo si abilita. Alcuni BIOS più vecchi non prevedono il boot da rete, in questi casi la cosa potrebbe essere delegata alla scheda di rete (se è una di quelle furbe). Nel caso non abbiate né il pc, né la scheda di rete che supporta il boot di rete, esistono delle iso in grado di fare il boot da cd o usb (es.: gpxe) che una volta caricate permettono di fare il boot da rete. Qualcuno qui potrebbe obiettare che a sto punto tanto vale masterizzarsi un cd. Allora, intanto questo cd lo potete riutilizzare più volte per qualsiasi distro, secondo, se avete tanti pc da installare, appena fatto il boot ed il s. o. comincia a caricarsi, potete togliere il cd ed usarlo su ogni una delle restanti macchine una alla volta, mentre con il normale cd dovete tenerlo dentro al pc fino al termine dell'installazione. Potrebbe essere utile abilitare anche il wake on lan.

Qualche accenno di storia: RARP/BOOTP/PXE

Perché il pc possa partire, è necessario che carichi prendendolo da qualche parte il sistema operativo. Nel caso di boot da rete, sono necessarie due cose:

  • configurare l'indirizzo di rete;
  • trovare il sistema operativo da qualche parte;

Nonostante sia integrato nella quasi totalità dei pc degli ultimi anni, la possibilità di fare il boot da rete risale a molti anni fà (1984). Inizialmente era il protocollo RARP (Reverse Address Resolution Protocol), protocollo tramite il quale un host, partendo dal MAC address riesce ad ottenere l'indirizzo ip associato. Se la richiesta è inviata in modalità broadcast, e vi è un server RARP questo fornirà un indirizzo ip all'host. Se la richiesta veniva fatta in fase di boot, poteva essere usata per fare l'avvio da rete. Questa funzionalità è stata resa obsoleta da BOOTP e DHCP. Il RARP è un protocollo a layer 2. Il BOOTP invece si basa su UDP il che permetteva di avere il server BOOTP anche in una sottorete diversa da quella del client. Inizialmente, per fare il boot tramite BOOTP era necessario l'uso di un floppy che facesse avviare il PC ed inoltrasse la richiesta BOOTP in rete. Poi sono state sviluppate delle schede di rete che implementavano nel loro firmware questo protocollo (nelle schede di rete di qualche anno fà è possibile vedere uno zoccolo vuoto dove inserire il chip per avere questa funzionalità). Nel 1999 da parte di Intel è stato definito il protocollo PXE, che è l'attuale standard. In breve, questo protocollo all'avvio ricerca un server DHCP, il quale server, oltre a fornire l'indirizzo ip del cliente fornisce anche il nome del programma da eseguire (NBP, Network Bootstrap Program) ed il server dove reperirlo. Poi, provvede tramite il protocollo TFTP a scaricarlo nella ram del client e ad eseguirlo.

Installazione del software

In linux esistono n sitemi diversi per installare il software, usate il sistema che preferite. L'importante è che riusciate ad installare un tftp server (nel mio caso tftpd-hpa), un dhcp server (isc-dhcp o dhcp3, anche qui, mi verrebbe da picchiare chi ha rinominato o sostituito su debian & co. dhcp3 con isc e spostato di posto i file di configurazione. No, non ho voglia di andarmi a leggere le mail sulle varie ml per capire le pippe mentali che hanno portato a ciò), un nfs server (nfs-kernel-server).

Configurazione del software

TFTP

Come detto sopra, ho usatto tftpd-hpa. Una volta installato nel mio pc, mi sono trovato il programma configurato per girare tramite inetd. Questo l'ho scoperto dopo almeno un'ora di imprecazioni perché il tftp non mi leggeva il file di configurazione come lo avevo impostato io. Per disabilitarlo basta editare /etc/inetd.conf. Se lo usate tramite inetd dovete modificare i parametri di lancio dentro al file /etc/inetd.con altrimenti, se lo usate in modalità demone stand-alone, dovete editare:

samuele-host:/# cat /etc/default/tftpd-hpa 
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

L'unica cosa da prestare attenzione è TFTP_DIRECTORY che è la directory dove andremo a posizionare tutti i file utili per il boot da rete.

DHCP

Rispetto ad una configurazione standard di DHCP, sono stati specificati due parametri, filename e next-server:

samuele-host:/# cat /etc/dhcp/dhcpd.conf 
<... resto del file>
subnet 192.168.1.0 netmask 255.255.255.0 {
       range 192.168.1.70 192.168.1.100;
       filename "pxelinux.0";
       next-server 192.168.1.50;
       option subnet-mask 255.255.255.0;
       option broadcast-address 192.168.1.255;
       option routers 192.168.1.50;
}
  • filename: è il nome del file contenente NBP
  • next-server: è il nome/ip del server dove si trova il file pxelinux.0, cioè del nostro server TFTP.

Attenti che se avete altri server DHCP in rete, potrebbero nascere dei conflitti.

Struttura delle cartelle nella root TFTP

  • Copiare pxelinux.0 in /var/lib/tftpboot
  • ./pxelinux.cfg/default

Configurazione di NFS

File di configurazione per il boot di iso

DISPLAY boot.txt

LABEL mint

      KERNEL mint/casper/vmlinuz
      APPEND root=/dev/nfs boot=casper netboot=nfs

nfsroot=192.168.1.50:/var/lib/tftpboot/mint initrd=mint/casper/initrd.lz ro splash --


PROMPT 1 TIMEOUT 0 </pre>

* ./boot.txt 
<pre>

- Boot Menu -
=============

mint 
  • Montare la iso di mint in /var/lib/tftpboot/mint

Configurazione per il netboot di una normale installazione linux

Conclusioni