Eseguire tutti i sistemi operativi da un unico posto con PXE e Netboot.xyz

Cos'è Netboot.xyz e come può essere utilizzato per scaricare ed eseguire qualunque sistema operativo da un server residente in rete locale.

PXE (Preboot Execution Environment) è uno standard sviluppato da Intel che permette ai computer di avviarsi tramite una connessione di rete. Si tratta di una tecnologia è particolarmente utile negli ambienti in cui risulta necessario gestire molte macchine, come nei data center, nei laboratori informatici e nelle grandi aziende. Con PXE, infatti, è possibile eseguire qualunque sistema operativo effettuandone l’avvio attraverso la rete.

Ogni computer configurato per il boot via PXE, quando viene acceso, invia una richiesta DHCP locale per ottenere un indirizzo IP e individuare un server di avvio (TFTP, Trivial File Transfer Protocol). Quest’ultimo trasferisce al client un file chiamato bootloader, contenente le istruzioni su come avviare il sistema operativo. Una volta scaricato il bootloader, il computer lo esegue, e questo a sua volta può avviare un sistema operativo in modalità live o iniziare un processo di installazione.

Uno strumento come PXE è ampiamente supportato dalla maggior parte dei produttori hardware, cosa che lo rende uno standard de facto per il boot dei sistemi operativi in rete.

Di recente abbiamo visto come il boot da WinPE e PXE avrebbe potuto risolvere automaticamente la comparsa della schermata blu dopo l’incidente CrowdStrike.

Netboot.xyz: per avviare qualunque sistema operativo da un unico posto

Netboot.xyz è un progetto open source che permette di avviare attraverso la rete una vasta gamma di distribuzioni Linux, strumenti di sistema, immagini live, routine d’installazione di Windows e così via. Il tutto senza più la necessità di avere a disposizione supporti fisici come chiavette USB, CD/DVD.

Al centro dell’applicazione c’è appunto PXE e, in particolare, l’implementazione aperta iPXE. Questo bootloader di rete avanzato offre supporto per diversi protocolli di rete.

A differenza del tradizionale PXE, che utilizza solo TFTP per il trasferimento dei file, iPXE supporta una gamma più ampia di protocolli, tra cui HTTP, HTTPS, iSCSI, ATA over Ethernet (AoE), e Fibre Channel over Ethernet (FCoE). Così i trasferimenti dati possono essere più veloci e sicuri. Immagini ISO e kernel “ad hoc” memorizzati lato server possono essere avviati direttamente.

iPXE, inoltre, permette l’utilizzo di appositi script per automatizzare il processo di boot. In questo modo l’utente ha la possibilità di selezionare quale sistema operativo eseguire in rete sulla base di diversi parametri (ad esempio l’indirizzo MAC, il carico di lavoro corrente del server, impostazioni specifiche).

Il progetto iPXE include driver capaci di supportare una vasta gamma di schede di rete, rendendo la piattaforma compatibile con un più ampio ventaglio di hardware rispetto al PXE tradizionale.

Come funziona Netboot.xyz

Netboot.xyz è nato come un progetto per facilitare il processo d’installazione dei sistemi operativi sulle varie macchine. L’idea era di creare un’interfaccia che fungesse da menu principale per una serie di distribuzioni e strumenti di sistema (oltre che per gli installer di Windows), tutto accessibile tramite PXE.

Il cuore di Netboot.xyz consiste in una serie di script e configurazioni che, una volta caricati tramite PXE, propongono agli utenti un menu interattivo. In altre parole, quando un client effettua il boot via PXE/iPXE, un menu personalizzato permette di selezionare diverse opzioni di avvio, tra cui installazione di sistemi operativi, strumenti di recovery, test di memoria e molto altro ancora.

Avvio sistemi operativi rete PXE

Per utilizzare Netboot.xyz, è ovviamente dapprima necessario configurare un server PXE sulla rete locale. Questo server è responsabile della visualizzazione, lato client, del menu interattivo descritto in precedenza e dell’invio dei file necessari per il boot. Netboot.xyz può essere adoperato anche negli ambienti virtualizzati e nel cloud, offrendo un modo rapido per avviare sistemi operativi sulle macchine virtuali senza dover caricare manualmente le immagini ISO.

Il progetto è attivamente mantenuto e riceve aggiornamenti regolari per includere le ultime versioni dei software supportati, nuovi strumenti e miglioramenti alle funzionalità esistenti.

Vantaggi e applicazioni pratiche

Un software come Netboot.xyz, offre diversi vantaggi pratici. Innanzi tutto, spazza via la necessità di creare e gestire supporti di installazione fisici, risparmiando tempo prezioso.

Per secondo, supporta una vasta gamma di distribuzioni Linux come Ubuntu, Debian, CentOS, Fedora, Arch Linux e molte altre, i file ISO di Windows e include strumenti per la manutenzione, il ripristino e l’avvio di emergenza come Clonezilla, GParted, Memtest86+ e così via. Netboot.xyz si fa addirittura carico di scaricare da Internet le immagini dei sistemi operativi e dei software da avviare: non è necessario che siano disponibili in locale.

Negli ambienti aziendali e nei laboratori, inoltre, Netboot.xyz permette di centralizzare il processo d’installazione, garantendo coerenza nelle configurazioni e facilitando la gestione di grandi quantità di dispositivi.

Gli utenti avanzati possono personalizzare le opzioni del menu, aggiungere altre immagini ISO e configurare il sistema per effettuare un avvio in modalità automatizzata. Le opzioni di avvio possono essere modificate in qualunque momento semplicemente aggiornando le configurazioni del server PXE/iPXE.

Installazione e configurazione

Esistono diversi modi per configurare e avviare Netboot.xyz. Per evitare che il software si colleghi sempre con questo URL, il suggerimento è quello di usare il container Docker. Così facendo, il funzionamento di Netboot.xyz resta completamente in ambito locale (fatta eccezione per la possibilità di effettuare il download dei file ISO dai server remoti su richiesta dell’utente).

Supponendo di aver a disposizione una macchina Ubuntu (o comunque di derivazione Debian), si può dapprima installare Docker con il seguente comando:

sudo apt install docker.io

Per ottenere il container Docker di Netboot.xyz, è possibile scegliere tra GitHub Container Registry o Docker Hub. Eseguire quindi uno dei seguenti due comandi:

docker pull ghcr.io/netbootxyz/netbootxyz
docker pull netbootxyz/netbootxyz

Una volta scaricata l’immagine, è possibile avviare il container con il seguente comando:

docker run -d \
--name=netbootxyz \
-e MENU_VERSION=2.0.76 `# opzionale` \
-e NGINX_PORT=80 `# opzionale` \
-e WEB_APP_PORT=3000 `# opzionale` \
-p 3000:3000 `# porta per l'interfaccia di configurazione web` \
-p 69:69/udp `# porta TFTP` \
-p 8080:80 `# opzionale, porta per il servizio NGINX` \
-v /local/path/to/config:/config `# opzionale, per salvare configurazioni locali` \
-v /local/path/to/assets:/assets `# opzionale, per salvare asset locali` \
--restart unless-stopped \
ghcr.io/netbootxyz/netbootxyz

Parametri principali:

  • -p 3000:3000: Espone l’interfaccia web di configurazione.
  • -p 69:69/udp: Espone la porta TFTP.
  • -p 8080:80: Espone il servizio NGINX per il mirroring degli asset.
  • -v /local/path/to/config:/config: Monta una cartella locale per le configurazioni.
  • -v /local/path/to/assets:/assets: Monta una cartella locale per gli asset scaricabili (ISO, Live CD, ecc.).

Gli asset scaricabili sono da intendersi come i file necessari per avviare e installare sistemi operativi o eseguire utility direttamente dalla rete. Il mirroring degli asset corrisponde al processo di copia e mantenimento del materiale necessario per avviare un sistema (ad esempio file ISO) in ambito locale. Normalmente questi dati risiedono su server remoti e Netboot.xyz ne facilita la gestione locale.

Configurazione del server DHCP

Netboot.xyz richiede un server DHCP configurato correttamente per funzionare. Attenzione che non vi siano conflitti tra quello in uso, ad esempio impostato sul router, e il server DHCP eventualmente configurato sulla macchina Ubuntu Linux.

Il paragrafo DHCP Configurations, nella guida di Netboot.xyz, fornisce una configurazione pratica per un nuovo server DHCP da configurarsi su Ubuntu (sudo apt install isc-dhcp-server).

Per provare il funzionamento di Netboot.xyz, si può disattivare il server DHCP normalmente utilizzato e configurarne uno nuovo. Se si stesse configurando sia il server DHCP che il server che ospita Netboot.xyz sulla stessa macchina, in corrispondenza della direttiva “Change this to the address of your DHCP server” si deve specificare l’indirizzo IP privato della stessa macchina.

Accesso e configurazione del container

Una volta avviato il container, l’interfaccia di configurazione Web di Netboot.xyz risulta accessibile tramite l’indirizzo localhost:3000 mentre digitando localhost:8080 sempre nella barra degli indirizzi del browser, si ottiene l’elenco degli asset disponibili localmente.

Interfaccia Netboot.xyz boot PXE

Per accelerare i tempi di avvio, è possibile configurare Netboot.xyz affinché si serva del mirror locale degli asset. Basta modificare il contenuto del file boot.cfg in modo che punti al server locale. Ad esempio:

live_endpoint=http://192.168.0.50:8080

Conclusioni

Seguendo le istruzioni, dovreste essere riusciti a configurare un server locale di Netboot.xyz utilizzando Docker. In questo modo si possono avviare e installare sistemi operativi su macchine connesse in rete locale senza la necessità di supporti fisici.

Come accennato, è possibile personalizzare il menu interattivo e gli asset a seconda delle proprie esigenze. La configurazione iniziale del server di Netboot.xyz può richiedere un certo livello di competenza tecnica ma il risultato finale è davvero eccezionale.

Sia la rete locale che il collegamento Internet devono essere veloci, affidabili, non congestionati e privi di colli di bottiglia. Eventuali rallentamenti possono rendere più difficoltoso il processo di avvio dei sistemi operativi tramite Netboot.xyz.

Ti consigliamo anche

Link copiato negli appunti