Network Boot II - Windows boot
Dopo aver preparato il server tftp per i programmini tipo memtest e per le installazioni di GNU/Linux e Windows, può nascere la necessità di avviare un intero sistema da rete, magari su una macchina diskless (non parliamo di LTSP o simili, ma di vero e proprio avvio locale, con i dati in remoto).
Questa guida omette la configurazione di un sistema TFTP + DHCP, trattato nella guida precedente.
Piccola nota di supporto: funziona per Windows dalla versione 2000 in poi (32/64 bit)
Compilare gPXE
Di solito i boot loader di rete integrati (PXE, Intel Network Boot, ecc) non hanno il supporto a molte delle features che ci servono. Un modo per aggirare tale mancanza, ci viene in aiuto gPXE, un "firmware" che supporta tutto questo. Se non vogliamo flashare parte del nostro bios per inserire gPXE nella nostra scheda madre (comprensibile, un problema nella procedura e la scheda madre è da buttare), c'è la possibilitá di far caricare gPXE direttamente dal nostro client PXE, per poi far caricare a gPXE il nostro sistema operativo. Scarichiamo e compiliamo quindi gPXE (che possiamo trovare nel sito di etherboot:
$ wget http://kernel.org/pub/software/utils/boot/gpxe/gpxe-0.9.5.tar.bz2
$ tar xvf gpxe-0.9.5.tar.bz2
$ cd gpxe-0.9.5/src/
$ ./configure && make && make bin/undionly.kpxe
A questo punto troveremo dentro la directory bin/ il file undionly.kpxe, che possiamo utilizzare per far partire gPXE da rete. Spostatelo nella cartella del server TFTP, perché ci servirà più in là nella guida.
Installare e configurare Windows
Secondo la guida ufficiale, non si può installare il sistema operativo in diversi modi (tipo dentro una macchina virtuale), ma bisogna per forza installarlo su un disco (penna usb, ecc.) sulla macchina "target". Personalmente sono convinto che ci sia un modo per far funzionare l'accrocchino anche senza dover passare per l'installazione fisica, ma per ora non ci sono riuscito.
Premessa: considerate che poi dovremmo estrarre l'immagine dal disco, ergo se la fate di X giga, prevedete nella vostra SAN (Storage Area Network) lo spazio per quel disco.
Installiamo Windows con la classica procedura nella macchina client, facciamo quindi la configurazione, gli aggiornamenti necessari, ecc. Una volta che la vostra macchina è pronta, dobbiamo installare WinAOE, un driver opensource per l'uso di dispositivi ATA da rete (ATA-over-Ethernet). Scaricate e decompattate il pacchetto, in una cartella ci sono i binari da installare mediante il pannello di controllo (icona "Aggiungi nuovo hardware"), specificando che è un dispositivo già connesso ma che non è nessuno della lista (ergo, selezionare "Aggiungi un nuovo dispositivo"), NON facciamo cercare in automatico a lui (non lo troverà), selezioniamo la classe del dispositivo "Controller SCSI e RAID", selezioniamo il pulsante per recuperare i driver da un percorso specifico, impostiamo la directory contenente i driver AoE, li installiamo anche se non hanno la certificazione Microsoft e fin qui è finito.
Ora configuriamo la scheda di rete per avviarsi prima di tutte: apriamo Gestione Periferiche (Risorse del Computer (tasto destro) -> Gestione -> Gestione Periferiche), tasto destro sulla scheda di rete e selezioniamo "Proprietè", andiamo sulla scheda "Dettagli" e selezioniamo "Servizio" dal box di selezione di lista. Memorizziamoci il nome, perchè ci servirà per trovarlo nel registro di sistema (start -> esegui -> regedit.exe) sotto la chiave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services : cliccando sopra il nome del servizio apparirà di fianco alcune opzioni, una chiamata "Start", che va impostata a 0 (doppio click). Ora spegnamo il PC e siamo pronti per estrarre l'immagine di Windows dal disco fisso.
Estrarre Windows e configurare un server AoE (vblade)
Ora attacchiamo il disco fisso su un altro PC (mediante una scheda esterna o il cavo interno), avviamo un sistema Linux e digitiamo:
# fdisk -l /dev/sdX
Dove X è la lettera che rappresenta il "numero" del dispositivo, rilevato da udev. Apparirà una schermata simile:
Disk /dev/sdX: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdX1 * 1 1825 14659281 7 HPFS/NTFS
Ora prendiamo il numero di cilindri (in questo caso 8225280) che sar` il valore del parametro "bs", e prendiamo il valore di End della partizione come parametro "count".
# dd if=/dev/sdX of=./file.img bs=8225280 count=1825
Ora l'immagine è pronta, passiamo alla configurazione di un server AoE (vblade): installiamo vblade, ad esempio con debian e derivati:
# apt-get install vblade
Una volta installato il pacchetto troveremo il file di configurazione su /etc/vblade.conf . La sintassi è:
interfaccia_rete numero_scaffale numero_slot file mac[,mac[,mac]]
Dove interfaccia_rete è l'interfaccia dove invia e riceve comandi (ad es. eth0), il numero_scaffale e il numero_slot sono due numeri identificativi la cui combinazione è univoca, serve per identificare il disco in rete. Il "file" e il mac sono rispettivamente il file immagine estratto e il/i mac della macchina/e di destinazione (ho notato che si può anche omettere, per dare a tutti la possibilità di accedere a quella risorsa).
Facciamo partire vblade e il nostro disco è sulla rete.
Configurare il server DHCP
Ora, se voi avete già una macchina che fa il boot con gPXE, allora non c'è problema e non avete bisogno di configurare molto, viceversa se volete utilizzare l'avvio di rete gPXE con i boot loader di rete integrati (PXE, NBI, ecc.) avete bisogno di apportare le seguenti modifiche al vostro file di configurazione del server dhcp (ammesso che sia ISC DHCPd):
- Passiamo il percorso di avvio di rete AoE inserendo:
option root-path "aoe:e0.0";
filename "";
if not exists gpxe.bus-id {
filename "undionly.kpxe";
}
direttamente nella config specifica di un MAC/IP, oppure di una sottorete. 0.0 sono i due numeri di cui sopra ("scaffale" e "slot"). La parte dell'"if" serve per evitare di dare il firmware gPXE ad un client con già gPXE (quando gPXE viene eseguito, fa una nuova richiesta, e senza questo if il gPXE scaricherebbe una nuova copia di se stesso, la eseguirebbe, e la nuova copia scaricherebbe una nuova copia, la eseguirebbe, e la [...])
- Inseriamo il seguente codice all'inizio del file di config:
option space gpxe;
option gpxe-encap-opts code 175 = encapsulate gpxe;
option gpxe.bus-id code 177 = string;
affichè dhcpd possa capire se si tratta di gPXE che chiede l'IP o il PXE integrato.
Riferimenti
Dalla guida originale in inglese:
|
|
Tutte le "trascrizioni" sono le mie "esperienze" che ho acquisito facendo di tutto nel tempo libero.
I contenuti di questo sito sono stati prodotti da me, e possono essere ridistribuite sotto licenza Creative Commons BY-NC-ND 3. In qualsiasi caso gradirei essere contattato...
La grafica è liberamente ispirata a soft-land.org. |