Intro
Sono di recente venuto in possesso di una “antica” SPARC Ultra1 headless e non dotata di lettore CD. Il sistema operativo preinstallato era un Linux, e insoddisfatto, mi sono detto: avrà mica speso questa manciata di euro per una “noiosa”, “solita” macchina Linux o BSD? Con le “tasche piene” (e anche quasi tutte le mie macchine) di sistemi Linux, ho deciso di soddisfare un desiderio che da troppo tempo turbava il mio subconscio, vedere Solaris, il sistema operativo di Sun, “girare” sulla sua architettura prediletta. Come installarlo se non via rete, con l’ausilio di una console seriale per riuscire nell’impresa?
Il Dilemma
Alla ricerca di informazioni in giro per la rete sono giunto davanti all’evidenza dell’inevitabilità di dovermi dannare l’anima prima di riuscire ad avere qualcosa di sano e funzionante. Le possibilità erano fondamentalmente due: – Usare il sistema di installazione da rete di Sun, incluso in Solaris; il che avrebbe richiesto un sistema Solaris già funzionante e molto poco lavoro e grattacapi, essendo il metodo composto di scripts preconfezionati per installare da rete – da e su – varie combinazioni di architetture e media disponibili. – Sfortunatamente e ovviamente, secondo Sun, non esiste altro metodo che il suddetto, e il pensiero che il server di installazione usato sia dotato di altro OS, non li sfiora minimamente. Quindi, sporadici e un pò incasinate guide all’installazione sparse per la rete, sono le uniche informazioni che sono riuscito a trovare, grazie a una ricerca estesa, molto molto estesa.
Naturalmente sono andato per la seconda scelta, e qual’ora le informazioni che cercate contemplino l’installazione da server Solaris, vi rimando al sito Sun e alla sezione apposita dove troverete tutta la documentazione necessaria. Qui.
Preparazione e Teoria
Il necessaire per questa installazione da server Linux/BSD è il seguente:
– Cavo Seriale null-Modem (praticamente lo standard su hardware Sun, con poche eccezioni)
Una macchina Linux/BSD dotata di:
– La DVD ISO di Solaris 8/9/10
– Minicom o simile
– Rarpd
– Tftpd
– BootParamd
– Nfsd
– Rpcbind
– Mettere SPARC e server Linux/BSD in rete (stessa subnet secondo questa guida)
In poche parole, questo è ciò che avviene:
la sparc boota, con un nostro “piccolo” aiuto, e tramite una richiesta a broadcast a cui darà risposta un demone Rarp, ottiene un proprio IP; a questo punto, dotata di indirizzamento logico è in grado di eseguire richiesta per il file di boot al demone tftp, chiamandolo con un nome che è l’equivalente in Hex del proprio IP. tftp glielo serve e inizia il boot. Questo file, inetboot, si occupa di caricare il kernel via rete. E’ l’equivalente per postazioni diskless del file ufsboot, che è invece in grado di avviare il kernel da disco. A questo punto son necessari due punti di mount NFS, contenenti rispettivamente un file system root minimale temporaneo e il contenuto del cd di installazione. Le informazioni necessarie alla SPARC per individuare questi due punti di mount, sono passati via BootParamd. A questo punto, viene caricato il sistema operativo temporaneo e poi viene fatto partire l’installer.
E il resto potete immaginarlo…
La Pratica: reperire il materiale
Sulla mia SPARC, ho dovuto installare Solaris9, in quanto la versione 10 richiede risorse minime al di fuori della portata del vetusto hardware di una Ultra1 (cpu =>250mhz); semplicemente Solaris10 rifiuta di installarsi (si, ci ho provato), quindi, dopo aver subito lo smacco ho deciso di prendere più sul serio la documentazione Sun e i requisiti minimi di sistema indicati, e son passato alla versione 9, non senza fastidio. Cercando informazioni, ho appreso che ci sarebbe la possibilità di installare comunque Solaris10 su Ultra1, facendo delle modifiche ai contenuti dell’installer, ma non ho approfondito, ne ha importanza ai fini di questa guida.
Se avete un hardware superiore installate Solaris10, questo è quanto. Al momento in cui scrivo è uscita la prima Update u1. Cominciate a scaricare il DVD, visto che ci metterà un pò anche se avete una connessione decente: Get Solaris10
Se non avete un lettore DVD, niente paura, non vi serve, tanto ci limiteremo a montare la ISO. Quindi registratevi, scaricate i 5 segmenti del DVD versione 01/06 e poi, dopo averli scompattati incollateli con cat.
Se siete fra i più intraprendenti, e volete deviare dalla guida, mi raccomando, di utilizzare comunque il DVD, in quanto i CD di installazione contengono componenti che ci sono necessari, “nascosti” in una slice che non sarete in grado di montare se non sotto Solaris (se qualcuno ha informazioni su questo, sono ben accette, magari qualche tool esiste). Questi componenti, nel DVD, sono accessibili senza problema alcuno nella directory Solaris_X/Tools.
Per la mia installazione mi sono appoggiato a due macchine, una Linux per servire i componenti di installazione, e un BSD per la connessione seriale con Minicom e poche altre cosette. Questa è stata una scelta dettata dalla comodità. Voi potete fare tutto senza problemi da un singolo sistema, o invertire usando BSD come server, insomma, fate vobis. Prenderemo come reference Debian GNU/Linux, tenendo conto che tutto si può adattare senza problemi a qualsiasi altra distribuzione o a *BSD. Detto questo:
apt-get install tftpd-hpa bootparamd rarpd nfs-kernel-server minicom
Configurazione del Server di installazione
I servizi appena installati vanno configurati per servire il necessario al boot del sistema minimo e all’installer. Io ho preferito avviare tutti i servizi in modalità debug, in modo da poter tracciare istantaneamente qualsiasi problema possa occorrere. Se uno dei servizi interessati dovesse essere mal configurato o avesse problemi legati a motivi terzi, sarebbe facile accorgersene. Se volete fare in questo modo, dovete necessariamente tener conto della eventuale gestione di questi servizi da parte di inetd andando a commentare nel file /etc/inetd.conf le righe interessate o modificandole, riavviando poi il demone inet. Inoltre montiamo la iso di Solaris, dalla quale dovremo prendere alcuni files e che naturalmente servirà per il resto dell’installazione:
mount -o ~/loop solaris-9-dvd.iso /vcdrom
Configurare rarpd
Cominciamo col demone Reverse ARP: esso fa riferimento al file /etc/ethers per dispensare indirizzi ip in base a chi fa la richiesta. La sintassi è semplicissima, un cat autoesplicativo:
wallbox:/films# cat /etc/ethers 08:00:20:86:af:87 10.0.0.10
Una richiesta pervenuta dal mac address 08:00:20:86:af:87 (l’unica eth della mia SPARC), vedrebbe rispondersi l’assegnazione dell’ip 10.0.0.10. Questo è appunto ciò che succede facendo partire il boot da rete di OBP. Avviamo il demone rarp dedicandogli un prompt:
wallbox:/films# rarpd -Avde
A voi il compito di scoprire cosa fa ciascuna opzione servendovi di man rarpd. Potete “scoprire” il mac address della scheda di rete digitando il comando “banner” all’ok prompt della SPARC.
Configurare tftpd
La scelta dell’indirizzo ip va a influenzare il nome del file di boot che la SPARC andrà a richiedere al prossimo servizio coinvolto: tftpd. Infatti, la prossima azione che la vostra SPARC andrà a svolgere, sarà richiedere a broadcast via tftp un file con nome l’equivalente esadecimale dell’indirizzo ip che ha appena ricevuto da rarpd. Prepariamo una directory /sol che farà da root per il server tftp, copiamoci dentro il necessario e avviamo il demone:
mkdir /sol cp /vcdrom/Solaris_9/Tools/Boot/usr/platform/sun4u/lib/fs/nfs/inetboot /sol cd /sol ln -s inetboot 0A00000A chown -R nobody:nogroup /sol (facoltativo se non usate inetd) /usr/sbin/in.tftpd -l -s /sol
l’immagine di boot viene copiata nella root del server tftp, e linkata al nome di file che la SPARC si aspetta di trovare, ovvero, come detto precedentemente, la trasposizione in esadecimale del proprio indirizzo IP. E’ necessario fare un chown in modo che i files siano leggibili e servibili dal demone tftp via inetd.
inetboot verrà caricato dalla SPARC e procederà con la prossima richiesta. Naturalmente dovrete sostituire “sun4u” nel path con l’architettura della vostra macchina, che nel mio caso è una Ultra1
Configurare Bootparamd
Bootparamd è appunto un servizio che passa i parametri di boot; fa riferimento a l file /etc/bootparams per sapere cosa passare o meno a chi fa richieste. La vostra SPARC ha bisogno di conoscere il path della root di un file system minimo bootabile, e successivamente dove trovare il contenuto del cdrom di installazione. Il tutto verrà poi servito via NFS. Il sistema minimo di boot si trova nel DVD; lo copieremo nella dir /sol
cp -R /vcdrom/Solaris_9/Tools/Boot /sol/
Inoltre dovremo fare l’advertisement con bootparamd di questa posizione e di quella del cdrom montato. Ecco /etc/bootparams:
sunbox root=wallbox:/sol/Boot install=wallbox:/vcdrom boottype=:in root_opts=:rsize=8192
bootparamd fa riferimento al file /etc/hosts per risolvere i nomi dei sistemi coinvolti nella configurazione:
wallbox# cat /etc/hosts 10.0.0.10 sunbox 10.0.0.50 wallbox
Avviamo Bootparamd:
bootparamd -d -r 10.0.0.50
Questo è quanto per quanto riguarda Bootparamd. Naturalmente c’è bisogno di un server nfs che serva i percorsi.
Configurare nfs server
La SPARC sa dove trovare la root del filesystem e anche il cdrom di installazione. Chiederà che gli vengano servite via nfs. Quindi aggiungiamo questi due percorsi nel file /etc/exports:
/sol/Boot 10.0.0.0/8(sync,ro,no_root_squash) /vcdrom 10.0.0.0/8(sync,ro,no_root_squash)
e avviamo il server nfs, che, se abbiamo scelto la versione kernel-space, necessita del solo:
/etc/init.d/nfs-kernel-server start
Se non dimentico qualcosa :), dovrebbe essere tutto pronto…
E via all’installazione
Possiamo accendere la nostra SPARC, premurandoci di metterla in rete, necessariamente nella stessa subnet del server di installazione. Ci sono un paio di variabili che potete impostare da OBP per aiutare il boot del vostro sistema. Potete digitare “help” al prompt per avere una descrizione dei principali comandi disponibili. Noi imposteremo:
setenv keymap=it (tastiera in italico!) setenv boot-file=kernel/sparcv9/unix (kernel 64bit)
Potete anche impostare boot-device a “net” ricordandovi che al boot da sistema installato dovrete poi reimpostarla al disco in cui avete installato Solaris, nel mio caso disk1.
Ora prompt ok potete digitare: boot net. Potete usare le options -rv per avere più informazioni.
ok boot net Boot device: /sbus/SUNW,hme@e,8c00000 File and args: kernel/sparcv9/unix Timeout waiting for ARP/RARP packet SunOS Release 5.9 Version Generic_118558-11 64-bit Copyright 1983-2003 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Configuring /dev and /devices Using RPC Bootparams for network configuration information. Configured interface hme0 Searching for configuration file(s)... Search complete.
Se tutto va come deve, vedrete apparire un output come quello qui sopra, o simile. Un problema che potreste incontrare è uno “stallo” del boot nel punto dove leggete “Configured interface hme0”. Dalle informazioni che ho reperito, dovrebbe essere un sistema di controllo o qualcosa del genere, dal momento che l’installazione continua inviando un echo request alla volta della SPARC dal server di installazione. Nel caso, nonostante il ping, il boot non dovesse continuare c’è una piccola operazione da fare. Nel file system root, c’è uno script, dal nome “get_netmask”, che è la causa del problema. E’ sufficiente rimuoverlo:
rm /sol/boot/sbin/get_netmask
e ripetere l’installazione premendo CTRL+A e poi F se state usando Minicom (che equivale al segnale di Break), e ripetendo il boot (net) al prompt ok
Epilogo
L’installazione avrà inizio con la scelta della lingua, schermata classica, che rassicurerà chi ha familiarità con l’installer di Solaris. Da lì in poi l’installazione è pressochè simile a quella da DVD, e quindi questa guida ha esaurito i suoi argomenti. Vi lascio, se ne sentite il bisogno, a una delle tante guide che coprono l’installazione di Solaris, comprese quelle ufficiali, reperibili qui
come al solito, vi invito a scrivermi per qualsivoglia chiarimento, aggiunta, correzione, estensione: insomma, tutto ciò che può giovare a questo articolo e migliorarlo. Il mio indirizzo: [email protected]
Alla prossima, sempre qui su AreaNetworking.