--- Nota per l'impaginatore: le parole racchiuse tra "/" devono essere in italico, quelle con "*" devono essere in bold e quelle con "_" devono essere sottolineate. --- NetBSD Un sistema UNIX multi-piattaforma di Bernardo Innocenti 0. Abstract Amiga e' un computer estremamente versatile, sopratutto grazie al suo sistema operativo unico. Molti sanno che con Amiga e' possibile emulare molti altri computer, primi tra tutti i Macintosh ed i PC, accedendo cosi' a tutto il software disponibile per queste piattaforme. Tuttavia, e' anche possibile /usare/ (non /emulare/) un sistema operativo del tutto diverso da quello nativo. Questo articolo descrive NetBSD, un sistema UNIX che per alcuni utenti potrebbe rappresentare un una valida alternativa ad AmigaOS. 1.Introduzione UNIX e' per molti aspetti il sistema operativo piu' singolare che esista. Per prima cosa, e' di gran lunga il piu' vecchio tra quelli che vengono tuttora utilizzati e sviluppati attivamente. Eppure, nonostante questa apparente vecchiaia, e' senz'altro il piu' versatile e innovativo dei sistemi operativi moderni. Il successo di UNIX e' stato determinato da un insieme di fattori, primo tra tutti l'uso del linguaggio C, che venne sviluppato da Brian Kerningham e Dennis Ritchie appositamente per questo scopo. UNIX e' da sempre un sistema operativo aperto, facilmente portabile e totalmente slegato dall'architettura dell'hardware sottostante, ed e' proprio per questi motivi che in venti lunghi anni UNIX si e' potuto evolvere senza alcun limite imposto dalle esigenze di compatibilita' verso il basso. Oggigiorno sono molti gli ambienti che offrono un multitasking reale, ma pochi sono quelli che supportano la multiutenza ed un'adeguata protezione della memoria, e nessuno di questi, eccetto UNIX, viene distribuitto gratuitamente con i sorgenti completi del kernel e di tutte le utility di sistema. Quando UNIX venne ideato, non esistevano ancora i terminali CRT, ed il concetto di personal computer era un sogno cosi' lontano che neppure la letteratura fantascientifica lo prendeva in considerazione. Per questo motivo UNIX conserva ancora oggi alcune peculiarita' che sono tipiche di un sistema che veniva usato tramite una telescrivente. Gia' allora molti utenti potevano collegarsi contemporaneamente ad un solo mainframe, ed ognuno poteva lanciare piu' processi contemporanei per minimizzare il tempo di collegamento all'host. L'uso di UNIX con le telescriventi spiega perche' molti dei comandi storici di UNIX generano un output cosi' compatto (talvolta anche piuttosto criptico), in modo da non sprecare troppa carta. La console di sistema ed i terminali si chiamano ancora "tty", abbreviazione di teletype, e supportano vari parametri di configurazione, tra cui il baudrate del collegamento seriale. Un altro fatto curioso che vale la pena di citare e' che le man pages formattate per la visualizzazione sui terminali utilizzano tuttora un sistema molto singolare per evidenziare in neretto i titoli: per fare un esempio, la parola "SYNOPSIS" e' scritta "S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS" (*), dove ^H e' il carattere BACKSPACE. In questo modo, la testina di una stampante torna indietro e riscrive due volte ogni carattere, producendo cosi' un nero piu' marcato! --- (*) Nota per l'impaginatore: utilizzare un font diverso per mettere in evidenza i ^H rispetto agli altri caratteri. --- In un'epoca in cui i produttori di software si sforzano solamente di creare interfacce utente sempre piu' belle e colorate e di renderne l'utilizzo sempre piu' intuitivo anche per chi riesce a malapena ad usare il mouse, UNIX sembra essere totalmente controtendenza. Eppure, gran parte dei concetti piu' innovativi dell'informatica moderna sono nati con UNIX e solo in seguito sono stati `presi in prestito' o portati anche su altri sistemi operativi. Per fare solo un piccolo elenco dei piu' celebri, basta ricordare il multitasking, la multiutenza, la shell, il filesystem gerarchico, l'e-mail, il sistema UUCP, l'utility make, gli archiviatori, il protocollo TCP/IP (e quindi Internet), X Window, il software GNU (e quindi anche il gcc), il sistema di impaginazione TeX, il World Wide Web (ed in seguito Java). In teoria con un minimo sforzo e' possibile portare un ambiente UNIX su una nuova architettura hardware. E' sufficiente riscrivere o modificare solo le parti di codice che interagiscono a basso livello con l'hardware e alcuni driver dei dispositivi di I/O. Per questo motivo UNIX esiste in una varieta' incredibile di distribuzioni diverse, ognuna delle quali a sua volta puo' supportare molte architetture. UNIX e' oggi il sistema operativo di elezione in molti ambienti dove la compatibilita' MS-DOS non e' ne' necessaria, ne' desiderabile. Le universita', gli istituti di ricerca e gli enti governativi americani costituiscono gran parte dell'utenza UNIX. Anche i sistemi operativi usati sulle workstation Sun, SGI e HP sono in realta' degli UNIX proprietari. Oggi i personal computer, Amiga incluso, sono divenuti abbastanza potenti da poter utilizzare un sistema operativo delle dimensioni di UNIX. La potenza, la flessibilita' e la compatibilita' di UNIX si paga con un uso abnorme di CPU, RAM e memoria di massa. Il file docs/INSTALL.amiga fornisce un'indicazione dei requisiti minimi necessari per utilizzare con soddisfazione OpenBSD su Amiga (1). --- Footnotes: (1) in realta' i requisiti riportati nel file INSTALL.amiga sono a mio parere troppo ottimistici. Per utilizzare comodamente OpenBSD consiglio vivamente un Amiga con almeno un 68030 ed almeno 8MB di memoria. Lo spazio richiesto su hard disk dipende essenzialmente da quali applicazioni volete installare, tuttavia un sistema tipico con X11 e tutti i file necessari per poter ricompilare il kernel occupa oltre 300MB. Inoltre, il file INSTALL.amiga non cita il 68060 tra le CPU supportate, che invece e' utilizzabile senza problemi. --- 2. NetBSD e OpenBSD BSD e' l'acronimo di Berkeley Standard Distribution. L'universita' di Berkeley, in California, sviluppa ormai da molti anni un ambiente UNIX-like che si contrappone allo UNIX AT&T (2), meglio conosciuto con il nome System V Release 4 (SVR4). BSD e SVR4 sono i due rami principali dell'evoluzione di UNIX e differiscono in alcuni aspetti secondari, come ad esempio la struttura del filesystem, i nomi e le opzioni di alcuni comandi di sistema e anche in alcune caratteristiche interne del kernel. La compatibilita' pressoche' totale a livello di sorgente esiste comunque, in parte perche' la maggior parte delle applicazioni viene provata su entrambi, ma sopratutto perche' ogni volta che viene aggiunta una nuova caratteristica nel SVR4 o nel BSD, quasi subito viene implementata anche sull'altro sistema. NetBSD deriva dal BSD 4.4 Lite, ed ha due peculiarita' interessanti. La prima e' che, come suggerisce il nome, e' stato sviluppato coordinando il lavoro di decine di programmatori attraverso Internet. La seconda, e forse la piu' importante, e' il supporto di un gran numero di architetture, tra cui Amiga, Archimedes, Atari, HP-300, HP-PA, IBM PPC, Mac 68k, PC-IBM, SGI, Sun3 e Sun Sparc. In futuro e' previsto il supporto per molte altre architetture. OpenBSD e' un cugino di NetBSD che viene sviluppato da un team di programmatori che per ragioni prettamente `religiose' si e' distaccato dal gruppo originario. Entro pochi giorni da ogni nuova release di NetBSD, i sorgenti del kernel e delle utility di sistema vengono prelevati dal team che sviluppa OpenBSD e modificati per aggiungervi una grande quantita' di features, alcune delle quali provengono da altri sistemi operativi gratuiti. Diversamente da NetBSD, OpenBSD non e' soggetto alle restrizioni sull'esportazione di software che utilizza tecniche di crittografia "forte", perche' il gruppo che lo distribuisce si trova in Canada anziche' negli Stati Uniti. Per questo motivo, il package di utilities "security" di NetBSD e' stato incluso direttamente nella distribuzione standard di OpenBSD. OpenBSD e' percio' a tutti gli effetti un NetBSD con molte cose in piu'. Ulteriori dettagli sulla storia degli UNIX derivati dal BSD sono contenuti nel file "complete.faq", che troverete nel CD. --- Footnotes: (2) Le prime versioni di UNIX vennero sviluppate appunto negli AT&T Bell Laboratiries. In realta', UNIX e' un marchio registrato di AT&T, percio' tutti gli altri sistemi operativi derivati da UNIX, siano essi commerciali o liberamente distribuibili, non possono fare uso della parola UNIX. Per questo motivo molti OS UNIX-like ricorrono alla forma censurata `UN*X', e spesso hanno dei nomi che /suonano/ come `UNIX', per esempio HP-UX, Amix, Ultrix, Linux... --- 3. Differenze ed analogie con AmigaOS UNIX ha da sempre la fama di essere un sistema poco user friendly, e non si puo' negare che sia vero. Un utente Amiga che desidera imparare ad usare UNIX parte senz'altro avvantaggiato rispetto ad un utente Macintosh, perche' AmigaOS ha molti punti in comune con UNIX. L'ostacolo piu' grande da superare quando si inizia ad usare UNIX e' convincersi che prima di fare qualunque cosa e' necessario leggere la documentazione. L'utente Amiga medio scompatta un nuovo programma e lo lancia senza neanche leggere i README che l'accompagnano. Su UNIX questo atteggiamento porta inesorabilmente ad un totale insuccesso e grande frustrazione. Di norma, prima di ottenere una discreta padronanza di UNIX, si devono leggere tonnellate di documentazione. Un buon testo su UNIX e' un ottimo punto da cui partire, perche' la documentazione disponibile on-line (man pages) presume che siate gia' esperti, e comunque prima di poterla leggerea dovete gia' essere in grado di installare e configurare il sisteama. La conoscenza del C puo' risultare molto utile, ma non e' indispensabile. E' possibile compilare un'applicazione scritta in C senza per questo dover conoscere il linguaggio, ma in certi casi puo' capitare di dover modificare qualche sorgente per adattarlo al proprio sistema. Dal momento che mi rivolgo ad un pubblico costituito essenzialmente da sviluppatori, non insistero' oltre nel tentativo di spaventarvi. UNIX non e' ne' facile, ne' difficile. E' solo diverso da AmigaOS, da Windows e da MacOS. L'importante e' non rinunciare subito dopo aver visto che il comando dir non funziona come pensavate. A questo punto sara' utile descrivere alcuni dei vantaggi di OpenBSD che compensano il tempo e le energie impiegato ad apprenderne il funzionamento. La multiutenza e' forse la caratteristica piu' conosciuta di UNIX. Piu' utenti possono accedere contemporaneamente al sistema, condividerne le risorse. Il sistema si occupa di garantire che nessun utente (eccetto il system administrator) possa interferire con l'attivita' degli altri utenti. Il filesystem impedisce che un utente non autorizzato possa leggere o scrivere i file di un altro utente (3), ed il kernel utilizza la MMU per impedire ai processi di accedere alla memoria non allocata. E' perfino possibile permettere agli utenti di compilare ed usare qualsiasi applicazione, perche' non esiste alcun modo per aggirare le protezioni del kernel (4). Se un processo tenta di accedere ad una locazione di memoria non valida, il kernel lo interrompe immediatamente e libera tutte le risorse che ha allocato (resource tracking). Il kernel gestisce anche la memoria virtuale in modo completamente trasparente alle applicazioni. Una o piu' partizioni possono essere destinate a contenere le pagine di memoria che non possono essere mantenute nella memoria fisica, ed il kernel si occupa di ricaricarle quando un processo tenta nuovamente di accedervi. Il TCP/IP e' supportato direttamente dal kernel e molti programmi di sistema lo utilizzano anche per le comunicazioni locali tra i processi. Dal momento che AmiTCP e' un porting del TCP/IP Berkley, scoprirete che la maggior parte delle utility e dei file di configurazione che riguardano la rete sono identici a quelli per Amiga. Molti pacchetti GNU sono integrati nella distribuzione standard BSD, e molti altri possono essere compilati ed installati con uno sforzo minimo. Se su Amiga utilizzate abitualmente alcuni programmi GNU, potrete continuare ad utilizzarli su UNIX esattamente nello stesso modo. Lo stesso vale per molti programmi per Amiga che sono stati portati da UNIX, tra cui anche Executive, SysLog, vi, csh e molti altri. --- Footnotes: (3) il funzionamento e' analogo a quello del MultiUserFileSystem per Amiga. (4) a meno di eventuali buchi di sicurezza non ancora individuati :-) --- 4. Installazione di OpenBSD-Amiga La distribuzione fornita su CD e' aggiornata al 4 Ottobre 96, ma e' probabile che nel momento in cui state leggendo sia gia' disponibile una versione alpha della release successiva. Il file docs/INSTALL.amiga mostra come installare OpenBSD sul vostro computer. Conviene stamparlo (5) e leggerlo per intero prima di iniziare ad eseguire le operazioni. La procedura di installazione e' tutt'altro che semplice, ma potete considerarla come una specie di "test di ammissione" all'uso di OpenBSD. In altre parole, chi riesce ad installare e configurare il sistema, molto probabilmente sara' anche in grado di usarlo. Prima di iniziare a preparare il vostro hard disk, potete provare a caricare il kernel per assicurarvi che funzioni correttamente sul vostro computer: loadbsd -b L'Amiga dovrebbe resettarsi e subito dopo vedrete apparire la console di OpenBSD. La sequenza di bootstrap del kernel dovrebbe proseguire con la configurazione di tutte le periferiche supportate. A questo punto OpenBSD chiedera' di scegliere la partizione da cui effettuare il boot, ma dal momento che non avete ancora preparato il sistema, resettate semplicemente il computer. Se invece il kernel dovesse bloccarsi, leggete l'help del comando loadbsd (opzione -h) e riprovate di nuovo. Se non riuscite in alcun modo ad avviare OpenBSD, provate a leggere le FAQ oppure, come ultima speranza, chiedete aiuto nel newsgroup comp.unix.amiga. Procedete seguendo le istruzioni ed installate il vostro sistema. Dal momento che gli archivi di OpenBSD si trovano sul CD di IPISA, e' probabile che vorrete utilizzarli direttamente senza doverli prima copiare su una partizione Amiga. Per montare il CD nella directory "/mnt/cdrom/" scrivete: mkdir /mnt/cdrom mount_cd9660 -o ro /dev/cd0a /mnt/cdrom e quindi procedete con l'installazione come se si trattasse di una normale partizione Amiga. Subito dopo l'installazione, potrete iniziare ad usare OpenBSD. Per liberare un po' di spazio in /usr conviene eliminare tutte le manpages che non riguardano l'architettura Amiga: find /usr/man/ -type d | grep -v -i amiga | awk '{print "rm -r " $0}' | sh (6) --- Footnotes: (5) Durante l'installazione non potrete leggere il file se non lo avete stampato su carta, a meno che non abbiate un altro computer a portata di mano. (6) e' interessante analizzare il funzionamento di questa linea di comando: `find' cerca in /usr/man/ tutte le directory (type -d), e ne stampa in output il path completo. `grep' legge l'output di `find' e lo copia in output, escludendo (-v) tutte le linee che contengono la parola "amiga". `awk' esegue il programma sulla linea di comando che permette ad aggiungere "rm -r " davanti ad ogni linea. Infine, `sh -s' esegue i comandi che riceve in input e rimuove in questo modo le directory che volevamo eliminare. Fate riferimento alle manpages di `find', `grep', `awk' e `find' per ottenere ulteriori dettagli. --- 5. Installare altre applicazioni La directory "contrib/" contiene un piccolo repertorio di "must-have" da installare nel vostro sistema. Alcune di queste sono gia' state compilate per NetBSD-Amiga 1.1, altre devono essere compilate appositamente sul vostro sistema. Per visualizzare il contenuto di un archivio potete scrivere: zcat foobar42b.tar.gz | tar tvpf - => foobar-4.2beta/README => foobar-4.2beta/INSTALL => foobar-4.2beta/Makefile => foobar-4.2beta/foobar.c => foobar-4.2beta/foobar.h => foobar-4.2beta/install/install.sh => ... oppure, dal momento che il comando tar di NetBSD supporta l'opzione `z', e' possibile usare questa forma abbreviata: tar tvpzf foobar.tar.gz Prima di estrarre l'archivio vorrete probabilmente entrare nella directory appropriata. Per esempio: cd /local/src/ tar xvpzf foobar.tar.gz cd foobar-4.2beta/ A questo punto e' buona norma dare un'occhiata al file "README" (oppure "INSTALL"), che spiega le operazioni da compiere per installare il programma. Alcuni programmi hanno uno script di installazione che puo' essere eseguito in questo modo: cd install sh install.sh Se invece dovete prima compilare i sorgenti, spesso bastera' scrivere: make all Alcuni programmi invece utilizzano uno script che genera un Makefile specifico per il vostro ambiente: ./configure make In ogni caso, attenetevi alle istruzioni contenute nei file "INSTALL", "README", etc. Qualche volta portra' capitarvi di dover editare manualmente il Makefile, un header, o un sorgente C per adattarlo al vostro sistema, ma si tratta comunque di casi piuttosto rari. Il software GNU e' quasi sempre autoconfigurante ed e' difficile che si verifichino problemi. 6. X11 X11 e' un'abbreviazione per "X Windowing System version 11". Si puo' chiamare anche "X", "X Window", "X11R6" o "X Windowing System", ma *non* "X Windows" (7). Si tratta di un ambiente a finestre freeware basato su una architettura client/server. Il server X e' un programma che esegue i comandi ricevuti dai client e ne mostra i risultati utilizzando un dispositivo di output grafico (framebuffer device). Il protocollo di comunicazione tra client e server e' indipendente dall'architettura hardware, dal sistema operativo e dal mezzo di comunicazione utilizzato per collegare i client al server X. Difatti, oltre al caso piu' comune in cui i client ed il server vengono eseguiti dalla stessa macchina e comunicano attraverso un pipe, e' anche possibile far eseguire un client X11 da una macchina ed utilizzarlo sul terminale X di un secondo computer, collegato in rete con il primo. Un client speciale, il window manager, consente di aggiungere alle finestre dei "bordi decorativi" che permettono all'utente di spostale, ridimensionale e manipolarle come in tutti gli ambienti a finestre. Anche il window manager comunica con il server come un normale client X11, percio' potrebbe essere eseguito da un computer diverso da quello che ospita il server, sebbene in molti casi si preferise eseguirlo localmente perche' altrimenti il calo di prestazioni sarebbe eccessivo. Esistono molti window manager diversi, ognuno con capacita' e aspetto differenti. Gli utenti Amiga potrebbero voler usare amiwm, un window manager con lo stesso look & feel di Intuition, che riproduce perfettamente le finestre, i menu, le icone e perfino gli schermi di Amiga. Si possono usare inoltre FVWM, un window manager che supporta schermi virtuali e molte altre comode funzioni, FVWM-95, una versione di FVWM che somiglia all'interfaccia utente di Windows 95, Bowman, un window manager GNU che somiglia molto al NeXT, olwm, il window manager utilizzato dalle workstations Sun, MWM, il window manager di Motif, GWM, un window manager "generico", il cui comportamento puo' essere modificato dall'utente scrivendo delle procedure Lisp per ogni azione. Per installare X11 su OpenBSD, fate riferimento al file README contenuto nella directory X11. Il server Xamiga supporta il chipset nativo e le schede grafiche CyberVision, Picasso II, Piccolo, Piccolo SD64, Spectrum, RetinaZ3, oMniBus, Domino e Merlin. E' anche possibile utilizzare _contemporaneamente_ due o piu' monitor, per esempio collegandone uno all'uscita video di Amiga ed un secondo monitor ad una scheda grafica come la CyberVision. --- Footnotes: (7) Se malauguratamente dovesse scapparvi la "s" finale in un articolo postato in un newsgroup di Usenet, potete essere certi che qualcuno ve lo fara' notare, piu' o meno educatamente. --- 7. Compilare il kernel La directory "src/ksrc20/" contiene i sorgenti completi del kernel di OpenBSD. Potete scompattarli nel vostro sistema in questo modo: cd / zcat /cdrom/OpenBSD/src/ksrc20/ksrc20.?? | tar xvpf - (*) (*) Nota per l'impaginatore: correggere il path nel caso che la directory di OpenBSD non si trovi nella root del CD-ROM di IPISA. Per risparmiare spazio in /usr, potete eliminare alcune delle directory che riguardano altre architetture, facendo attenzione a non eliminare anche i file che servono per le opzioni di compatibilita' verso altre architetture. La configurazione del kernel puo' essere alterata editando un file in "/usr/src/sys/arch/amiga/conf/". In questa directory troverete alcune configurazioni che potrete utilizzare come base di partenza per creare un kernel su misura per il vostro sistema. Per alleggerire il kernel, potete eliminare tutte le opzioni di debug, di compatibilita' con le versioni precedenti di NetBSD e con gli altri sistemi operativi, i filesystem che non vi interessano, le periferiche che non utilizzate ed il supporto per i microprocessori diversi dal vostro. Prima di sperimentare le opzioni piu' oscure e operare cambiamenti drastici nei sorgenti, e' consigliabile provare a compilare un kernel con poche modifiche rispetto a quello generico. Una volta editato il file di configurazione, salvatelo con un nome qualsiasi e lanciate il comando config Verra' creata una directory in "/usr/src/sys/arch/amiga/compile/" con lo stesso nome del file di configurazione. Entrate in questa directory e scrivete: make depend per generare le informazioni sulle dipendenze tra i sorgenti del kernel. Questa operazione deve essere ripetuta ogni volta che si modifica il file di configurazione, ma non e' necessaria quando modificate i sorgenti senza aggiungere nuovi file. Prima di iniziare a compilare, potete editare il Makefile per cambiare qualche opzione. Se avete il coprocessore matematico, togliete "-fsoft-float" dalle opzioni per il gcc ed avrete un kernel leggermente piu' veloce e compatto. Potete anche specificare -m68030 o -m68040 per generare codice specifico per questi microprocessori. Come spiega la FAQ di NetBSD, la compilazione del kernel richiede molte ore di tempo ed alcune tazze di caffe' per sostenervi durante l'attesa. Ovviamente, non siete obbligati a guardare lo schermo senza far niente mentre il gcc lavora. Se usate l'accortezza di lanciare il make preceduto dal comando nice e se avete abbastanza memoria e swap space, il carico del sistema dovrebbe rimanere piuttosto contenuto, e potrete fare qualcos'altro mentre il kernel viene compilato in background. Se necessario, potete anche interrompere la compilazione in qualsiasi momento e riprendere da dove eravate rimasti. Se la compilazione dovesse interrompersi a causa di un errore, riprovate cambiando le opzioni nel file di configurazione. Se conoscete il C potete provare anche a risolvere il problema modificando i sorgenti. Una volta terminata la compilazione, troverete il nuovo kernel nella directory di compilazione, con il nome "netbsd". Provate a rebootare con questo kernel prima di copiarlo definitivamente nella root. A questo proposito potete anche utilizzare il device reload, che consente di eseguire un reboot con un kernel diverso da quello corrente: cp netbsd /dev/reload E se non vi accontentate di aver compilato un kernel tagliato su misura per il vostro sistema, sappiate che sui siti che distribuiscono OpenBSD sono disponibili anche tutti i sorgenti delle utility di sistema, delle librerie dinamiche e del compilatore. Buon divertimento! 8. Riferimenti Siti FTP -------- ftp.netbsd.org:/pub/NetBSD-Amiga/ HQ di NetBSD-Amiga ftp.openbsd.org:/pub/OpenBSD/ HQ di OpenBSD ftp2.ft.openbsd.org:/pub/OpenBSD/ Mirror completo, piu' veloce ftp.x.org:/ Distribuzione di X11 e vari client irisa.irisa.fr:/pub/mirrors/gnu/ Distribuzione software GNU Pagine Web ---------- http://www.netbsd.org Homepage di NetBSD http://www.openbsd.org Homepage di OpenBSD http://www.gnu.org Homepage del software GNU CD-ROM ------ Gateway CD I Distribuzione di NetBSD 1.0 Gateway CD II Distribuzione di NetBSD 1.1 vari CD-ROM Walnut Creek Distribuzione Free/NetBSD . HELP