Blog

Vicoretrò 2017

Unico evento del 2017 ho potuto partecipare, Vicoretrò 2017 è stata una bella giornata all’insegna del retrocomputing e della squisita accoglienza toscana.

L’evento si è svolto presso la sede dell’associazione Vicoretrò a Vicopisano (PI), grazioso borgo a pochi chilometri da Pisa.

Onestamente, non saprei dire se ci fossero più espositori (con relativi amici e familiari) o più visitatori, ma poco importa: la giornata è stata molto bella, nei tre aspetti espositivo, seminariale e gastronomico!

Queste le tre macchine con cui ho contribuito all’esposizione: una SPARCstation Voyager 146, una NeXTstation N1100 e una O2.

Purtroppo la SPARCstation Voyager ha manifestato un problema dell’ultimo minuto sul display, dunque non è stato possibile metterla in funzione.  È stata comunque esposta, poiché una macchina piuttosto rara e particolare. Al centro del trio la meravigliosa NeXTstation N1100, simile a quella mostrata al raduno di Roma, ma in questo caso si è trattato di un altro esemplare di provenienza tedesca e monitor in scala di grigi originale.

L’ultima macchina esposta è una Silicon Graphics O2, con in esecuzioni alcune animazioni eccezionali (per l’epoca) e un porting di Doom:

Per problemi logistici non è stato possibile portare il monitor originale CRT Silicon Graphics con schermo Trinitron. Peraltro, oltre al peso e alla difficoltà di conservazione durante l’anno, questi schermi sono piuttosto delicati e il rischio che si corre con trasporti frequenti è che l’elettronica o le plastiche subiscano dei danneggiamenti fatali. Per questo motivo, mi sto organizzando con dei TFT con form factor adeguato (4:3) a bassa risoluzione (1024×768 o 1280×1024 al massimo) e adattatori opportuni (solitamente DB13W3 verso VGA). Di seguito qualche altra foto della manifestazione, con alcune macchine interessanti. Tra tutte un bellissimo Apple II, una replica del mitico Apple I, l’intero set di macchine Atari e una bellissima Programma 101 Olivetti.

I sistemi operativi degli Anni 90

Mentre scrivo queste note (2016), l’informatica personale e professionale (non server) gravita attorno a due famiglie di microprocessori: x86 e ARM. I primi regnano da sempre su notebook e desktop (e server), i secondi su smartphone, tablet, wearable e set-top box.

Trent’anni fa la situazione era ben diversa! C’era un’ampia scelta di processori e architettureE il mercato dei microcomputer era diviso in personal computer e workstation, con queste ultime equipaggiate con processori RISC dalle prestazioni e dal prezzo stellari.

Le macchine NeXT, come tante altre piattaforme nate negli Anni ’80, erano basate su architettura Motorola 68K, in particolare sul 68040 a 25 o 33 MHz. Prima dell’arrivo della 68060, questa CPU era la più potente della famiglia, partita con lo storico 68000 a 16 bit (cuore di Macintosh, Amiga, Atari ST) e successivamente evoluta sui successivi 68020 e 68030. Fatto poco pubblicizzato nei dibattiti sul retrocomputing, il sistema operativo NeXTStep fu reso disponibile anche per altre architetture oltre alla m68K e, dunque, al NeXTCube e alle NeXTstation: Intel x86, HP PA-RISC e Sun SPARC. Merito del fatto che fosse basato su un kernel Unix, senza dubbio: Unix e il linguaggio C, infatti, sono stati progettati proprio con la portabilità in mente. Supportare diverse architetture, in realtà, non fu una caratteristica solo di Unix: anche le prime versioni di Windows NT vennero rese disponibili su diverse architetture (x86, DEC Alpha, MIPS R4000 per la 3.1, PowerPC e SPARC per la successiva 3.51). Anche BeOS apparve prima per PowerPC e poi per Intel. L’architettura x86 a 32 bit era ancora una scommessa e l’arena dei microprocessori RISC ad alte prestazioni era piuttosto affollata: probabilmente nessuno sapeva per certo quale (o quali) architettura sarebbe risultata vincente e non si voleva perdere il treno. Sono trascorsi oltre vent’anni da allora e la storia è scritta: in ambito PC è rimasta solo l’architettura Intel, oggi consolidata a 64 bit e multicore, la sforzo di IBM e Motorola su PowerPC si è arenato sul G5, i microprocessori RISC hanno perso il vantaggio di prestazioni, i microprocessori non x86 sono pressoché totalmente relegati al mondo dei server mission critical, come quelli delle compagnie telefoniche.

Del mondo delle workstation RISC parlerò prossimamente, mentre in questa sede vorrei sofferarmi sul mondo dei personal. È interessante, infatti, soffermarsi sulla architettura x86, guardando la situazione al 1993, anno in cui NeXT ha rilasciato NeXTStep versione 3.1 per la piattaforma Intel. La tabella qui sotto mostra la timeline dei sistemi operativi a 32 bit per piattaforma x86 (in grigio il sistema su architetture non x86, in verde la disponibilità sulla piattaforma Intel):

In quel periodo la stragrande maggioranza dei computer x86 faceva girare il DOS (con i suoi abbondanti 640K di memoria RAM!) che a sua volta faceva girare Windows. Tra i sistemi a 32 bit in grado di sfruttare appieno le caratteristiche dei processori 80386 e 80486 c’era OS/2. La versione 2.0 fu la prima realmente a 32 bit, mentre la successiva versione 2.1 migliorò prestazioni e compatibilità. Nel 1993, insieme a NeXTstep e OS/2, fece la sua comparsa Windows NT 3.1, il sistema operativo sviluppato da Microsoft in parallelo allo stream al 16bit. La release 1.0 di Linux arriverà nel 1994, mentre BeOS arriverà dopo qualche anno. Possiamo citare anche Solaris (che si chiamava SunOS) e Plan 9, uscito dai laboratori AT&T come il suo predecessore Unix.

Volendo abbracciare un quinquennio, tra il 1993 e il 1998, appare un mercato ricco che offriva ben 6 sistemi operativi (NeXTSTep, Solaris, BeOS, Windows NT, OS/2, Linux e Plan 9) più l’ibrido Windows 95 che aveva pezzi a 16bit e pezzi a 32bit. Volendo poi allargare al mondo della workstation RISC, c’erano anche VMS (DEC) e i vari Unix come Irix (SGI), AIX (IBM) e HP/UX (HP).

Torniamo al mondo x86. Il tempo è passato e una specie di selezione naturale ha lasciato in vita tre sistemi operativi e (di fatto) una sola piattaforma hardware: Mac OS X (nato dalle ceneri di NeXTStep), Windows 10 (evoluzione di Windows NT) e Linux. Esiste ancora Solaris per x86, ma credo di poter affermare che il suo utilizzo è per lo più in ambito server, mentre è sempre più raro trovarlo sulle workstation. Wikipedia, peraltro, ci ricorda che questa categoria di calcolatori non esiste più in tecnologia RISC: il 2009 ha segnato la fine della produzione delle ultime workstation IBM con tecnologia Power, mentre l’anno precedente terminò la produzione delle workstation Sun e HP. L’architettura x86-64 è l’unica oggi disponibile e la scelta si articola nella velocità e nel numero di processori, nel tipo e nella dimensione della RAM ed eventualmente nell’affidabilità complessiva dei componenti.

Un ultimo sguardo al percorso evolutivo: NeXTStep ha preso vita nel mondo delle workstation, evolvendo poi sui computer desktop per giungere su smartphone, tablet e wearable nelle varie declinazioni di Mac OS X e iOS. Linux è partito dal mondo desktop, ma oggi  domina il mercato dei server, degli smartphone (si pensi ad Android), dei sistemi embedded e degli appliance multimediali. Windows resta leader sui desktop, mentre in ambito mobile ed embedded ha quote di mercato pressoché invisibili.

Mi chiedo se vedrà mai la luce un nuovo sistema operativo, ma credo sia fortemente improbabile vista la complessità dei tre sistemi oggi esistenti. Inoltre, essendo Linux e il suo ecosistema totalmente opensource, forse non vale la pena partire da zero mentre è più conveniente partire da una base solida e robusta con 20 anni di codice alle spalle.

Networking su NeXTstation

Supponendo di aver appena ricevuto una macchina NeXT, fatte le prime doverose pulizie, se il sistema operativo è già installato, il primo desiderio è quello di connettere la macchina in rete. Questo è senz’altro una pretesa del nostro tempo: noi siamo connessi e altrettanto devono fare le macchine, nuove o vecchie che siano! Rispetto alle intrinseche deviazioni della piattaforma NeXT su video, tastiera e mouse, il networking è l’ambito dove almeno la parte hardware è facile: sul retro del case è presente una porta Ethernet 10Mbps (il Gigabit era ancora fantascienza) che consente di connettere immediatamente la macchina ad una rete locale “moderna”. Volendo, è presente anche un connettore BNC (per reti 10BASE2), ma di questi tempi è molto più facile trovare uno switch con una presa RJ45 libera piuttosto che un segmento di rete con cavo RG58 a cui agganciare un nuovo nodo. Dunque, connesso un tipico cavo patch, la configurazione hardware è risolta.

Lato software la configurazione è abbastanza semplice, ma richiede un minimo di guida rispetto ai pannelli di setup degli ambienti più moderni. Innanzi tutto è utile sapere che NeXTStep si aspetta di trovare un server che si occupi della configurazione della macchina (un DHCP ante litteral, visto che il Dynamic Host Configuration Protocol sarà introdotto solo nel 1993). Non ho dettagli su questo aspetto, non ho ancora letto a fondo i manuali dell’amministrazione di sistema dunque non so fornire dettagli in merito. Peraltro, per poter mettere in piedi un sistema client/server è necessario disporre di almeno due macchine, cosa non da poco  per la maggior parte di noi (la mia seconda NeXT sarà oggetto di restauro in autunno, dunque per ora anche io ho una sola workstation funzionante, ndr).

Ci occuperemo, dunque, della sola configurazione base del TCP/IP, per connettere una macchina con NeXTStep 3.3 alla rete di casa o dell’ufficio. Occorre tenere sotto mano:

  • l’indirizzo IP da assegnare alla NeXT
    • non essendo disponibile DHCP, onnipresente nei router moderni, occorre necessariamente attribuire un indirizzo statico alla workstation.
    • Solitamente i router assegnano gli IP dinamici all’interno di un intervallo stabilito (ad esempio, da 192.168.0.50 a 192.168.0.150). Si hanno, dunque, due possibilità: assegnare alla workstation un indirizzo IP all’interno di questo range (ad esempio, 192.168.0.123), avendo cura di indicare al router che tale indirizzo è riservato ad un certo MAC address (quello, ovviamente, della scheda di rete della NeXT) oppure assegnare staticamente un indirizzo fuori dal range (192.168.0.199) assicurandosi che non venga utilizzato da nessun’altra macchina sulla rete. Una nota: nel primo caso il router non riceverà mai la richiesta di attribuzione dell’IP da parte della NeXT, ma la configurazione salvata eviterà che il router assegni tale indirizzo ad un’altra macchina.
  • l’indirizzo IP del router
    • probabilmente il più classico dei 192.168.QUALCOSA.1, nell’esempio mostrato sopra 192.168.0.1. È sufficiente consultare il pannello di amministrazione del router o la configurazione dinamica di una macchina già connessa alla rete per scoprirlo.
  • la maschera della sottorete
    • in ambiente domestico la solita 255.255.255.0; valgono le considerazioni del punto precedente
  • l’indirizzo (o gli indirizzi) del server DNS
    • si possono utilizzare quelli dell’Internet Provider in uso, ma potrebbero cambiare nel tempo. Una soluzione potrebbe essere quella di utilizzare i DNS pubblici di Google, che hanno IP 8.8.8.8 e 8.8.4.4, o magari uno privato locale che poi inoltri la richiesta al server del provider. Insomma, come nel caso dell’indirizzo della workstation, occorre rendere statico anche il riferimento al server DNS.

Vediamo, dunque, come configurare NeXTStep 3.3 per accedere alla rete avendo a disposizione le informazioni di cui sopra. Prima di tutto, occorre accedere alla macchina con l’utente root ed avviare l’applicazione HostManager contenuta nella categoria (cartella) NextAdmin:

(ricordo che le immagini sono in scala di grigio perché si tratta di screenshot presi su una NeXTstation N1100, che è monocromatica)

Dal menù dell’HostManager è necessario selezionare la configurazione locale agendo sulla voce Local: si presenterà la finestra Local Configuration sulla quale è possibile impostare tutti i parametri.

Vediamoli nel dettagli:

  • NetInfo Binding
    • a meno che non abbiate un server di questo tipo, è consigliabile selezionare l’impostazione “Use local domain only”
  • Hostname
    • possiamo attribuire un nome alla macchina (nella migliore tradizione delle workstation Unix!). Nel mio caso, la macchina si chiama gerdanext, in onore del mio nick gerdavax.
  • NIS Domain Name
    • selezionare “None”
  • Internet Address
    • in questa posizione è necessario inserire l’indirizzo IP assegnato alla macchina (nell’esempio: 192.168.0.199)
  • Broadcast Address
    • è possibile lasciare il valore di default (che sarà 192.168.0.255 nell’esempio di configurazione finora seguito, ndr).
  • Time Standard
    • ho lasciato l’impostazione di default, ma non so se NeXTStep abbia un elenco di server NTP predefiniti. Probabilmente è una informazione che arriva dal server di configurazione. Finora l’impostazione di default non ha creato problemi, dunque ho lasciato così.
  • Netmask
    • ho specificato esplicitamente quella standard
  • Router
    • ho specificato esplicitamente l’indirizzo del router

A questo punto è sufficiente salvare per rendere operative le modifiche, previo reboot come richiesto dalla dialog mostrata di seguito:

Al riavvio la macchina avrà l’indirizzo IP assegnato. Sarà sufficiente eseguire un ping verso il router per assicurarsi che tutto funzioni correttamente. L’ultimo passo è impostare il server DNS. In questo caso non si può fare affidamento sull’interfaccia grafica, ma occorre passare alla shell di sistema. Sempre con l’utente root, è necessario modificare (o creare ex-novo, come nel mio caso) il file /etc/resolv.conf, analogamente a quanto avviene su altri sistemi Unix:

ed inserire una riga con la keywork nameserver seguita dall’indirizzo IP del server DNS (nel mio caso, proprio il server pubblico di Google con indirizzo 8.8.8.8):

È possibile inserire riferimenti a più server, ciascuno su una riga. In questo caso non è necessario un riavvio della macchina ed è sufficiente utilizzare l’utility nslookup per verificare la corretta risoluzione dei nomi:

Ultimo dettagli: l’indirizzo MAC della NeXT è visibile all’avvio della macchina, mostrato dalla BOOT ROM. Ad esempio, sulla mia NeXT è quello evidenziato nella foto qui sotto: