I sistemi operativi su x86 negli 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 architetture. E 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):

Screen Shot 2016-05-11 at 07.54.09

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

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:

1_HOST(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.

2_LOCAL1Vediamoli 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:

5_ALERTAl 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:

6_TERM1ed 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):

7_TERM2È 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:

8_NSLUltimo 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:

MAC2

Primo browser e primo sito web italiano su NeXT

(questo non è un pesce d’aprile)

Domani e dopodomani, 2-3 Aprile 2016, si svolgerà a Roma il Primo Raduno Nazionale del Retrocomputing Club Italia, di cui ho già scritto qualche settimana fa.

Al raduno porterò la NeXTStation N1100, con la SoundBox e (purtroppo!) un triste monitor LCD Philips. Dico purtroppo perché non mi è stato possibile trasportare il grosso monitor NeXT MegaPixel Display da 17″ dal caveau in Sardegna sino alla Capitale.

In occasione dell’evento, per rendere più ricca la condivisione con coloro che visiteranno la mostra, ho installato sulla N1100 il browser Nexus (che inizialmente si chiamava World-Wide Web) scritto da Tim Berners-Lee… mentre inventava il web! Ovviamente il Nexus non è in grado di visualizzare i siti moderni (ma neppure quelli piuttosto datati), sia per complessità delle pagine, sia per la presenza di componenti ignote ai quei tempi (CSS, Javascript), sia per il supporto al solo HTTP 1.0, che rende pressoché impossibile (salvo intervenire con un proxy nel mezzo, ndr) accedere ai moderni siti virtualizzati su una singola istanza di Apache.

L’ideale sarebbe stato avere il primo browser della storia con il primo sito web italiano della storia…

Ho dunque contattato gli ex-colleghi del CRS4 (Andrea Mameli, Gavino Paddeu, Paolo Sirigu, Pietro Zanarini e Antonio Concas per l’indispensabile supporto sistemistico), i quali hanno riesumato a tempo record l’homepage del CRS4 di quegli anni (credo si tratti della home del 1993) che si vede perfettamente. Ecco qui di seguito uno screenshot del Nexus che mostra la pagina del CRS4 raggiungibile all’indirizzo http://history.crs4.it/

crs4Una curiosità: nel pannellino informativo del Nexus, Tim Berners-Lee definisce il proprio lavoro “An exercise in global information availability”. Un esercizio che, davvero, ha cambiato il mondo.

Da dove cominciare

English translation follows

Io credo che esistano sostanzialmente tre tipi di oggetti nell’ambito del retrocomputing: i pezzi normali, i pezzi impossibili e le trappole. I pezzi normali sono quelli che, a prescindere dalla rarità, possono ragionevolmente essere rimessi in funzione con un po’ di attenzione e pochi attrezzi a corredo. Pensiamo, ad esempio, ad un qualsiasi Commodore oppure ad un Sinclair o ad un Tandy Radio Shack: se l’oggetto funziona, è sufficiente procurarsi una TV o un monitor con ingresso video composito e il gioco è fatto. Se non funziona, si possono trovare pezzi di ricambio. Ci sono poi i pezzi impossibili, quelli totalmente fuori standard, per i quali occorre procurarsi tutta la postazione di lavoro altrimenti non ci si fa nulla. Pezzi, peraltro, che è difficile trovare sia in buono stato che per recupero pezzi.

E poi ci sono le trappole: io credo che i sistemi NeXT siano in questa categoria.

Tecnicamente sono macchine piuttosto recenti (ricordiamo la recensione di MC Microcomputer del 1992) e dotate di hardware ben noto: CPU Motorola 68040, dischi SCSI, porta Ethernet. Teoricamente riesumare la macchina economica della serie (la NeXTStation N1100) dovrebbe essere più o meno equivalente a recuperare un vecchio 486: non possiamo aspettarci di usare le schede video di oggi o le porte USB, ma pian piano ce la si fa. Quantomeno, il monitor VGA sarà sufficiente. Con la NeXT le cose cambiano.

Nell’iniziare il recupero della mia NeXTStation ho fatto una lista delle criticità da affrontare, seguendo un ordine mentale banale ma funzionale: ammesso che l’hardware sia ok, occorrono i dischi di sistema.

  • DISCHI DI INSTALLAZIONE. La maggior maggior parte delle macchine NeXT che si trovano su eBay (o altrove) arrivano con sistema operativo preinstallato. Spesso il venditore consente anche la scelta della versione di sistema (solitamente NeXTStep 3.3 o OpenStep 4.2). Qualcuno fornisce una copia dei dischi di installazione, ma non è  così frequente (e non ho mai visto qualcuno che fornisca i dischi originali). Ammesso, dunque, di aver recuperato da qualche parte una macchina NeXT, prima di fare qualche prova potenzialmente distruttiva, è meglio procurarsi i dischi di installazione del sistema operativo. Qualsiasi errore sul sistema preinstallato o – peggio ancora! – la rottura del disco rigido renderebbero la macchina irrimediabilmente inutilizzabile. Io ho trovato un pacchetto CDROM + floppy originali (e sigillati!) di NeXTStep 3.0. Da questi ho iniziato l’avventura.
  • BACKUP. Recuperati i dischi di installazione, ho pensato fosse opportuno farne una copia fisica di sicurezza e una copia immagine su un disco “moderno”. Trattandosi, infatti, di supporti che hannno una ventina d’anni, è consigliabile non farci troppo affidamento, specie pensando ai floppy che si basano su una tecnologia magnetica e su un supporto non esattamente robusto. Se fare la copia di un CD non è un problema, lo stesso non avviene per i floppy: essendo i PC moderni privi di lettore per floppy disk, è consigliabile procurarsi un floppy disk drive USB, con cui effettuare immediatamente una copia immagine del disco.
  • CDROM DRIVE. Supponendo di aver trovato workstation e dischi originali del sistema operativo (opportunamente protetti su una copia di sicurezza), occorre equipaggiarsi di lettori opportuni. Come detto, il sistema operativo si installava da floppy e CD. Mentre il drive per floppy disk è presente in tutte le macchine NeXT, il lettore CD è presente solo nel costosissimo NeXT Cube ed assente nelle NeXTStation. Occorre, dunque, trovare un lettore CDROM SCSI da connettere alla workstation. Non è cosa banale nel 2015. Agli inizi degli anni ’90, infatti, avere dei lettori CD e per di più SCSI non era così comune. Nello stesso periodo, giusto per fare un confronto, DOS e Windows si installavano da floppy, idem OS/2. Il drive deve essere di tipo SCSI2, compatibile con la porta posteriore della NeXTStation. Se il CDROM drive è stato poco usato e trattato bene, c’è da augurarsi che continui a funzionare per molti anni. Al massimo potrebbe essere necessario aprirlo per pulire la lente, ma non dovrebbero esserci problemi macroscopici (e irrisolvibili) di lubrificazione tipici degli hard disk.
  • STORAGE LOCALE. Si arriva al terzo scoglio: la memoria di massa locale. Le macchine NeXT montano dischi SCSI 50pin, con taglio massimo (di fabbrica) da 400MB e possibilità di gestire dischi con dimensione massima di 4GB. Se non è impossibile trovare dei dischi SCSI (non SAS, ovviamente), più difficile è trovarli di tagli piccoli. Ammesso di trovarli, poi, occorre augurarsi che la meccanica non ceda in poco tempo. È dunque necessario fare una certa scorta di hard disk dell’epoca e possibilmente attrezzarsi con dei cloni (periodici?) su storage recente, da utilizzarsi per ricreare il sistema su dischi sostitutivi.

Nel prossimo articolo parlerò dei supporti originali e della realizzazione delle copie di sicurezza.

 


I think there are three kind of objects in the retrocomputing world: [TO BE COMPLETED]