Bitretro

 

Una Symbolics nel PC

Alla data in cui scriviamo questo articolo, noi dell’Associazione Culturale Bitretro ci accingiamo ad affrontare una serie di serate che ci accompagneranno sulle orme delle cosiddette “macchine Lisp”, affacciatesi sul mercato tra la fine degli anni ’70 e la prima metà degli anni ’90.

In particolare, ripercorreremo in dettaglio la storia della Symbolics e delle sue straordinarie workstation, dagli inizi fino all’epilogo e al tentativo di sopravvivere al nuovo mondo delle macchine personali a (più) basso costo con l’introduzione in extremis del sistema operativo Open Genera destinato alle macchine DEC Alpha.

Non anticiperemo qui alcun dettaglio sulle vicende che hanno segnato l’attività della Symbolics né il contributo che ancora oggi riecheggia nell’informatica contemporanea. Possiamo però dirvi che le serate non saranno solo a contenuto storiografico ma ci porteranno a vedere in funzione queste macchine molto particolari e, per i più curiosi e volenterosi, a emularne una sul proprio PC, potendo così toccare con mano ciò di cui parleremo.

Con questo articolo propedeutico, puntiamo infatti a guidare il lettore nella predisposizione dell’ambiente necessario per affrontare la parte più pratica dell’excursus che faremo nei prossimi mesi. In particolare, oggi installeremo Open Genera 2.0 su un computer dotato di sistema operativo Linux grazie a un software che ci permette di emulare una CPU Alpha della Digital.

Nelle puntate che seguiranno, entreremo nel vivo del sistema operativo e delle sue iconiche applicazioni integrate quali  il suo “browser” di ipertesti (Document Examiner) e il corrispondente sistema autore (Concordia) i cui effetti sono ancora rintracciabili nei concetti di fondo dei moderni browser e dell’idea stessa di “link preferito”.

Infine, se voi lettori ci gratificherete con il vostro interesse, inizieremo un percorso che ci porterà a scoprire il linguaggio Lisp e a mettere a frutto questa meravigliosa macchina ancorché virtuale e, forse, a comprendere come il linguaggio di programmazione in questione – uno dei più vetusti del panorama dello sviluppo – sia ancora vivo e vegeto, in molteplici e avanzate filiazioni.

La soluzione che vi illustreremo si compone di tre elementi:

  1. La macchina virtuale VLM che emula di fatto una CPU Genera su una macchina virtuale DEC Alpha;

  2. L’immagine dell’ambiente operativo Genera;

  3. Il filesystem contenente applicazioni, servizi e documentazione.

Abbiamo cercato di rendere questo tutorial quanto più dettagliato, documentato e descrittivo possibile nei limiti – speriamo – del non renderlo noioso o petulante. In caso, ci sono altre ottime risorse online che spiegano in modo sintetico come ottenere lo stesso risultato. Ad esempio:

  • https://gist.github.com/oubiwann/1e7aadfc22e3ae908921aeaccf27e82d

  • https://gist.github.com/oubiwann/1e7aadfc22e3ae908921aeaccf27e82d

e infine l’ottimo

  • https://www.cliki.net/VLM_on_Linux

Passaggio 1

I Requisiti di base

Per poter utilizzare la VLM, la macchina virtuale che useremo per il nostro esperimento, è necessaria un’installazione preliminare di una qualsiasi versione recente a 64 bit di Linux.

La nostra guida prende a riferimento la distribuzione Ubuntu in versione 20.04.02 (l’ultima distribuita alla data di stesura di questo articolo) ma non c’è ragione per la quale non dovrebbe funzionare anche su versioni successive o su altre distribuzioni di largo utilizzo come CentOS o Debian con piccoli adattamenti che potrete scoprire strada facendo da soli. Chi vi scrive l’ha provata su ogni versione di Ubuntu dalla 16.04 LTS in poi.

Inoltre, non è necessario che l’installazione avvenga su una macchina dedicata. Io ho utilizzato sia macchine dedicate sia macchine virtuali su Parallels (Mac) e VirtualBox (Windows), con grande soddisfazione e praticità.

In questa guida, assumeremo alcune condizioni di partenza e non ci occuperemo di come installare Linux su una data macchina o ambiente virtuale. Online troverete ottime guide e, in ogni caso, il processo di installazione di Linux è guidato e molto semplice.

Dicevamo che faremo alcune assunzioni per rendere più chiaro ciò che andremo a fare ma se non adotterete gli stessi accorgimenti, nulla sarà pregiudicato: semplicemente applicherete i nomi di file e di utenti che avrete scelto di utilizzare.

Noi abbiamo deciso di creare un utente chiamato genera al quale abbiamo assegnato la possibilità di acquisire permessi di amministrazione con il comando sudo. Se voi non avete esperienza pregressa, potete utilizzare il nome che la vostra versione di Linux vi ha proposto in fase di installazione.

Installare un sistema operativo di 30 anni fa su una macchina moderna e un sistema operativo ospite all’ultimo grido significa dover conciliare due mondi completamente diversi, spesso separati da decine di versioni di distanza di protocolli, applicativi e misure di sicurezza. Tanto più è recente il vostro sistema operativo e tanto più questo iato sarà ampio e l’installazione soggetta a tante piccole mancanze alle quali dover sopperire. Nulla di drammatico ma è bene sapere che qualcosa potrebbe andare storto con la prossima versione di Linux. Ad esempio, potreste avere necessità di installare i servizi offerti dalle internet utility del servizio inetd a seconda che la versione che utilizzate li abbia ancora (es. Ubuntu 16.04 LTS) o no (es. dalla Ubuntu 18.04 LTS in poi).

In sostanza, l’installazione di un sistema operativo vintage come Open Genera comporta in qualche modo di riattivare anche sul moderno sistema operativo ospite servizi che ormai appartengono al passato: è una specie di matrioska di retro-informatica.

Prima di iniziare, di che cosa avremo bisogno?

  • di una versione di Linux installata e funzionante (per questa guida partirò da Ubuntu 20.04.2) sulla quale siano presenti:
    • curl
    • inetd e le sue utility e tools
    • il sottosistema NFS
    • le user management utilities
    • le utility di rete
  • le immagini dell’eseguibile della macchina virtuale VLM
  • le immagini del filesystem Symbolics e altri piccoli file accessori

Se non sapete di cosa stiamo parlando non preoccupatevi: vi guideremo passo dopo passo.

Passaggio 2

Installiamo ciò che ci serve in Linux

Innanzitutto, installiamo tutte le componenti di Linux che ci servono e che potrebbero essere assenti per vetustà dalla nostra installazione. Nel mondo Ubuntu l’installazione di pacchetti di sistema fa uso del programma apt-get. Se aveste scelto di usare una distribuzione diversa, potreste dover utilizzare un programma diverso ed esplorare la sua sintassi cercando su Internet tra la miriade di tutorial disponibili.

sudo apt-get install inetutils-inetd inetutils-tools nfs-common nfs-kernel-server uml-utilities net-tools moreutils curl

Una sola riga, un bel po’ di installazioni.

Se tutto è andato per il meglio (per alcuni dei pacchetti Linux potrebbe chiedervi alcune conferme alle quali dovrete rispondere Y e premere invio), il nostro Linux ha tutto ciò che serve per poter proseguire con la configurazione. In caso di problemi, cercate su Internet supporto per una soluzione oppure contattateci!

Passaggio 3

Creiamo lo spazio di lavoro

 

Un ambiente organizzato è sempre un ambiente gradito.

Per dare ordine ai file necessari per questa installazione, avete diverse possibilità di organizzazione dello spazio di lavoro. Per praticità, quando abbiamo installato Linux noi abbiamo creato un utente chiamato genera con permessi di acquisire poteri di amministrazione e di conseguenza Linux ha creato una home directory per questo utente chiamata /home/genera

Voi potete utilizzare l’account che preferite; in tal caso dovrete solo sostituire il nome che riporteremo noi nel tutorial con quello scelto da voi e considerare la home directory che la vostra distribuzione di Linux avrà creato. In ogni caso, vi sconsigliamo vivamente di utilizzare l’account dell’utente root perché esporreste la macchina a rischi non necessari.

 

Per prima cosa, è sempre bene farci una cultura sulla macchina e sul sistema operativo sui quali stiamo per mettere le mani.

Creiamo una directory genera all’interno della nostra home directory.

Se non siete già in modalità a riga di comando ma vi trovate nell’ambiente grafico di Linux, aprite una finestra del terminale e digitate:

mkdir -p /home/genera/genera

Quanti di voi sono pratici di ambienti UNIX e Windows/DOS sanno che non è necessario riportare ogni volta l’intero percorso di un file o di una directory; specialmente se vi trovate già nel punto in cui volete crearli. Tuttavia, per facilitare chi ne è completamente a digiuno, abbiamo deciso di scrivere sempre per esteso il percorso di ogni file e directory, senza usare acceleratori o percorsi relativi che rischierebbero di confondere le persone interessate ma con estrazione non tecnica.

Adesso creiamo una directory documentazione all’interno della nostra directory genera appena creata.

mkdir -p /home/genera/genera/documentazione

Con il comando precedente abbiamo creato la directory documentazione nel percorso /home/genera/generaall’interno della home directory del nostro utente chiamato genera (se avete scelto un nome diverso, adattate il comando al vostro scenario).

Adesso entriamo nella directory che abbiamo creato e apprestiamoci a scaricare la nostra biblioteca di base.

cd /home/genera/genera/documentazione

quindi iniziamo a utilizzare uno degli strumenti che abbiamo installato durante il Passaggio 2: curl

curl è un programma utilissimo per scaricare file da riga di comando. Offre moltissime opzioni, ma noi lo useremo in modo molto semplice e limitato per scaricare file senza particolari necessità.

Il primo documento che scaricheremo nella nostra directory documentazione è un breve estratto a carattere generale del manuale di sistema che introduce la filosofia e l’organizzazione di Genera, il sistema operativo della Symbolics che useremo (25 pagine, per 180KB). Ne prenderemo una copia dall’Internet Archive impartendo il comando

curl -L -O http://bitsavers.trailing-edge.com/pdf/symbolics/software/genera_8/Genera_Concepts.pdf 

Attenzione, la riga qui sopra è una sola riga. Essendo molto lunga, probabilmente il vostro browser potrebbe dividerla in due o più parti ma, affinché funzioni, dovete digitarla come una singola, lunga riga di comando. E così per quelle che seguono.

 

Il secondo documento che ci procureremo è la Guida dell’utente del sistema operativo (190 pagine per 1,3MB). Un documento fondamentale per muovervi in sicurezza e per continuare ad apprendere ed esplorare al di fuori dei nostri tutorial per forza di cose brevi e superficiali.

curl -L -O http://bitsavers.trailing-edge.com/pdf/symbolics/software/genera_8/Genera_User_s_Guide.pdf

 

Il terzo ed ultimo manuale è un testo FONDAMENTALE per chiunque voglia utilizzare una macchina Lisp o anche solo approcciare questo straordinario linguaggio di programmazione: il libro “Lisp Lore: a guide to programming the Lisp Machine” di Hank Bromley, una vera e propria bibbia che in altri contesti sarebbe un po’ datata ma che sulla nostra Symbolics virtuale sarà attuale come non mai (274 pagine per 9,5MB)!

curl -L -O https://archive.org/download/lisploreguidetop00brom/lisploreguidetop00brom.pdf

Passaggio 4

Scarichiamo i file di sistema di Genera

 

Ci sono ancora molti passaggi e il percorso è articolato. Per non farvi perdere lo spirito di avventura, anticipiamo il procacciamento di tutti i file e i materiali del Genera vero e proprio. Speriamo così che la consapevolezza di avere sul vostro computer già i file di questo prezioso sistema operativo vi faccia procedere spediti e ansiosi di terminare.

Spostiamoci indietro di un livello, tornando nella nostra directory genera che conterrà tutti i nostri file:

cd /home/genera/genera

 

Lo ripeteremo ogni volta per non farvi sbagliare, quindi armatevi di pazienza: se in fase di installazione di Linux non avete seguito la nostra convenzione sui nomi e avete creato un utente con un nome diverso da “genera”, adattate il comando qui sopra per portarvi nella directory  effettivamente creata sul vostro Linux (dove troverete anche la directory documentazione che abbiamo creato e riempito poco fa, per intenderci).

Adesso che siamo tornati a casa, scarichiamo la macchina virtuale VLM vera e propria, il nostro ambiente DEC Alpha e Symbolics simulato. La macchina virtuale si presenta sotto forma di un file binario chiamato genera (ma va?!). Questo file è disponibile in due versioni, a seconda dell’architettura sottostante: una è compilata per macchine Intel core i5 (e si chiama genera-i5), l’altra per macchine Intel core i7 e superiori (chiamata semplicemente genera). In base alla vostra CPU, scegliete l’una o l’altra. Nel nostro caso, useremo la versione core i7 che ci procureremo con curl come segue.

curl -L -O https://archives.loomcom.com/genera/genera

 

Anche se è un file binario destinato ad essere eseguito, il file scaricato non è ancora effettivamente eseguibile perché manca dei permessi adeguati. Un problema risolvibile facilmente:

chmod a+x /home/genera/genera

 

Per tutto il resto di questa guida ci riferimento all’eseguibile utilizzabile come genera. Se nel vostro caso specifico dovete scaricare la versione di genera per architettura core-i5, vi conviene quindi rinominarla in genera. Seguirete meglio questa guida e, inoltre, è anche più pratico da scrivere!

In tal caso, potete scaricare il file direttamente cambiandogli nome usando il parametro -o di curl:

curl -L -O https://archives.loomcom.com/genera/genera-i5 -o genera

 

In questo modo, scaricherete il file genera-i5 salvandolo direttamente come genera. Potrete poi modificare i suoi permessi con lo stesso comando usato per la versione core i7.

Abbiamo la nostra virtual machine (VLM) ma non abbiamo ancora il sistema operativo in sé, il suo debugger e il filesystem che ne contiene dati e applicazioni. Rimbocchiamoci le maniche e proseguiamo.

L’installazione da zero di Open Genera richiederebbe un livello di competenza più alto di quello che abbiamo in questo momento (e probabilmente per i mesi futuri) ma per fortuna non abbiamo bisogno di diventare dei provetti sistemisti della Symbolics per farlo: possiamo scaricare un immagini complete di Open Genera e del suo filesystem già funzionanti.

Nel gergo del mondo Lisp, un ambiente completo e configurato si chiama world, un “mondo” all’interno del quale sono state stabilite alcune regole che lo caratterizzano. Una macchina Lisp può avere molti mondi, ognuno configurato in modo diverso e indipendente dagli altri. Per chi si destreggia con un po’ con il linguaggio Python, consideratelo come un virtual environment.

Una volta terminato il tutorial e presa confidenza con Open Genera, potrete costruire mondi separati per ogni genere di esperimento e progetto, sapendo che ognuno ha regole proprie che non interferiscono con quelle degli altri, mantenendo ordine e pulizia in qualsiasi contesto complicato vi verrete a trovare.

Procediamo! Assicuriamoci di essere nella cartella genera che conterrà tutti i nostri file:

 

cd /home/genera/genera

Quindi procuriamoci il Mondo che sarà la nostra base di partenza (si tratta di un file di circa 50MB di peso).

curl -L -O https://archives.loomcom.com/genera/worlds/Genera-8-5-xlib-patched.vlod

Quindi scarichiamo il debugger (un piccolo file di poco più di 300kB)

curl -L -O https://archives.loomcom.com/genera/worlds/VLM_debugger

e per finire il file di configurazione (di pochi byte)

curl -L -O https://archives.loomcom.com/genera/worlds/dot.VLM

Il file di configurazione è piuttosto delicato e per questo la macchina virtuale vuole che per convenzione sia “nascosto alla vista”. Rimanendo nella directory attuale digitate:

mv dot.VLM .VLM

Nel mondo UNIX, qualsiasi file il cui nome inizia con un “.” è invisibile al comando ls che mostra il contenuto di una directory, a meno di utilizzare un parametro apposito. Con il comando precedente abbiamo semplicemente rinominato il file “dot.VLM” in “.VLM” rendendolo a tutti gli effetti invisibile!

Adesso dobbiamo installare il filesystem di Genera. Per praticità scaricheremo il file direttamente nel suo luogo di destinazione, anche se questo farà storcere il naso (o peggio!) agli utenti più accorti e prudenti. Il file va scaricato e installato nella directory /var/lib.

Prima di tutto spostiamoci in quella directory:

cd /var/lib

Si tratta di una directory di sistema, quindi preclusa agli utenti “normali”. Dovremo quindi procurarci i permessi di amministrazione invocando il comando che ci serve facendolo precedere dal comando sudo:

sudo curl -L -O https://archives.loomcom.com/genera/var_lib_symbolics.tar.gz

Linux vi chiederà di inserire la password. Se avete creato l’utente genera come amministratore della macchina, la password è la vostra password di login.

Il file pesa circa 55 MB. Una volta completato il download, dovremo scompattarlo in loco con il comando

sudo tar xvf ./var_lib_symbolics.tar.gz

Anche in questo caso usiamo il comando sudo. Notate, però, che se non sarà trascorso troppo tempo da quando avete inserito la password in seguito al comando sudo precedente, Linux non ve la chiederà nuovamente ma eseguirà il comando in modalità amministrativa. All’interno della directory /var/lib dovrebbe esserne apparsa una chiamata symbolics.

 Ultimi passi e poi ci occuperemo della configurazione di Linux.

Dobbiamo modificare il proprietario e il gruppo di appartenenza della directory symbolics che è stata creata dal processo di decompressione. In particolare, dobbiamo assegnarla allo stesso utente e gruppo proprietario della directory in cui si trova l’eseguibile genera e che, verosimilmente, ne sarà l’utilizzatore. Anche in questo caso, casacca da superpoteri e…

sudo chown -R : symbolics

dove utente corrisponde allo UID (user id) dell’utente genera (nel nostro caso… o a quello corrispondente se avete creato un utente diverso) e gruppo al GID (group id) dello stesso utente.

Potete ricavare i due id rispettivamente con:

id -u genera

e

id -g genera

Nel nostro caso, l’utente genera che abbiamo creato sulla nostra macchina virtuale presso l’Associazione aveva UID 1001 e GID 1001. Quindi il comando che abbiamo impartito è

sudo chown -R 1001:1001 symbolics

Adesso torniamo nella nostra directory genera dove abbiamo messo i nostri file e modifichiamo il file .VLM per riflettere la nostra configurazione.

cd /home/genera/genera

quindi

vi .VLM

 

Qui assumiamo che sappiate usare un po’ l’editor vi. Se non è così, potete aprire il file con qualsiasi altro programma anche dall’interfaccia grafica di Linux avendo l’accortezza di salvarlo come file di testo semplice.

Modificate la riga

genera.worldSearchPath: /home/seth/genera

in

genera.worldSearchPath: /home/genera/genera

con il solito caveat di cambiare il nome della directory se non avete usato la nostra convenzione dei nomi.

Nella nostra configurazione, useremo un indirizzo IP locale identico a quello della configurazione di default e quindi non sarà necessario apportare ulteriori modifiche al file .VLM

Se invece avete deciso di configurare un altro IP per l’emulatore, modificate la riga

genera.network: tap0:INTERNET|192.168.2.2;gateway=192.168.2.1

in modo da riflettere la vostra configurazione di rete.

Urrà! Per quanto riguarda l’installazione preliminare di Genera abbiamo finito!!!

 Passiamo al nostro gentile ospite: Linux!

Passaggio 5

Linux, Linux delle mie brame… come puoi ospitare il sistema operativo vintage più bello del reame?

Da questo momento ci muoveremo nell’ambito della modernità, per toglierle un po’ della patina lucida delle cose nuove e riportarla ad un gusto più antico e desueto.

Per prima cosa, dobbiamo configurare la rete IP che metterà in comunicazione la macchina virtuale VLM con il suo sistema ospite Linux.

In questo tutorial manterremo le configurazioni standard, rispecchiando la classe di IP che abbiamo utilizzato al termine del passaggio precedente. Voi, però, potrete sempre scegliere IP diversi e nomi arbitrari per riflettere eventuali vostre configurazioni complesse. L’importante è che vi ricordiate quale nome e indirizzo avete assegnato a ciascuna delle due macchine – quella reale e quella virtuale perché sarà essenziale per configurare il tunnel di comunicazione tra le due e, successivamente, gli indirizzi del nostro world personalizzato.

Iniziamo a mettere le mani nel cuore di Linux. Spostiamoci nella directory di sistema /etc (useremo sudo e Linux potrebbe chiedervi nuovamente la password) e modifichiamo il file hosts con il comando

 

sudo vi /etc/hosts

 

per includere queste due righe:

192.168.2.1 genera-vlm

192.168.2.2 genera

 

Ve lo ripetiamo: potete modificarli se credete. Per le finalità di questa guida, rimarremo sugli stessi indirizzi già visti e vi suggeriamo di seguire la nostra convenzione.

Salviamo il file hosts e passiamo ad attivare due servizi di rete UNIX che raramente vengono utilizzati al giorno d’oggi (e che sono parte del pacchetto inetutils di inetd che abbiamo installato all’inizio della nostra avventura di oggi):

sudo vi /etc/inetd.conf

 

Nel file modificate (o inseriteli se non ci sono) i seguenti servizi per apparire esattamente come riportato qui sotto

 

time        stream      tcp   nowait      root  internal

time        dgram       udp   wait  root  internal

daytime     stream      tcp   nowait      root  internal

daytime     dgram       tcp   wait  root  internal

 

Salvate il file e quindi riavviate il servizio inetd

sudo systemctl restart inetutils-inetd.service

Per provare che i servizi siano attivi è sufficiente collegarsi le loro porte di riferimento con il comando telnet.

Verifichiamo l’attivazione del servizio time

telnet localhost 37

dal quale dovremmo ottenere una risposta del tipo

Trying 127.0.0.1…

Connected to localhost.

Escape character is ‘^]’.

�вConnection closed by foreign host.

Quindi verifichiamo l’attivazione del servizio daytime

 

telnet localhost 13

dal quale dovremmo ottenere una risposta del tipo

Trying 127.0.0.1…

Connected to localhost.

Escape character is ‘^]’.

Mon Mar  7 17:32:21 2022

Connection closed by foreign host.

Se tutto ha funzionato correttamente, dobbiamo far sì che il sistema Linux condivida e faccia vedere all’emulatore il filesystem symbolics che abbiamo installato nella directory /var/lib in uno dei passaggi precedenti. Per farlo, riesumeremo un altro grande classico un po’ caduto in disuso: il Network FileSystem (o NFS, per gli amici). Ricordate? Lo abbiamo installato all’inizio dell’articolo nell’ambito dei requisiti di base di Linux.

Se ne siamo usciti, spostiamoci nuovamente nella cartella /etc

cd /etc

e modifichiamo il file exports

 

sudo vi /etc/exports

 

andando a inserire la seguente riga:

/     genera(rw,sync,no_subtree_check, all_squash,anonuid=1001,anongid=1001)

ATTENZIONE: I due valori in rosso DEVONO corrispondere rispettivamente allo UID e al GID che abbiamo ricavato in precedenza e configurati come proprietari del filesystem var/lib/symbolics!!! Nel nostro caso i due valori erano entrambi uguali a 1001 ma i vostri valori potrebbero essere diversi!

Salviamo il file e riavviamo il servizio NFS:

sudo systemctl restart nfs-kernel-server

 

Assicuriamoci che il filesystem venga esportato correttamente lanciando il comando:

sudo exportfs -rav

 

Dovreste vedere una conferma dei filesystem esportati come segue:

exporting genera:/

Se state utilizzando una versione di Ubuntu successiva alla 16.04LTS, come nel nostro caso, è necessario forzare NFS a usare una versione molto vecchia del protocollo che era modernissima nel 1990…, la versione 2.

Per farlo (vi rammentiamo: solo se usate versioni di Ubuntu successive alla 16.04LTS) dovete modificare il file /etc/default/nfs-kernel-server:

sudo vi /etc/default/nfs-kernel-server

cambiando le due righe

RPCNFSDCOUNT=8

RPCMOUNTDOPTS=”–manage-gids”

affinché diventino

RPCNFSDCOUNT=”–nfs-version 2 8”

RPCMOUNTDOPTS=”–nfs-version 2 –manage-gids”

Quindi salvate e riavviate il servizio:

 

sudo systemctl restart nfs-kernel-server

Provate che l’export funzioni ancora:

sudo exportfs -rav

Adesso lo sharing del filesystem è pronto, la macchina virtuale è configurata, il filesystem symbolics è stato creato e non ci resta che fare una cosa: creare il tunnel di rete per permettere a Genera di accedere al filesystem esportato con NFS.

Un modo manuale per farlo è digitare manualmente la sequenza di comandi necessaria.

Torniamo nella directory che contiene il nostro eseguibile genera:

cd /home/genera/genera

Digitiamo quindi la seguente sequenza di comandi una sola volta dopo l’avvio di Linux e prima di lanciare genera:

sudo ip tuntap add dev tap0 mode tap

sudo ip addr add 192.168.2.1/24 dev tap0

sudo ip link set dev tap0 up

Si tratta di comandi che vanno a modificare un’impostazione generale di sistema. Per questa ragione li facciamo precedere dal comando sudo, avendo bisogno dei permessi amministrativi. Al solito, Linux potrebbe chiedervi la password per eseguire l’operazione richiesta.

Per rendere automatica questa configurazione, avete diverse opzioni a seconda della distribuzione di Linux che utilizzate. Un modo un po’ pratico e poco raffinato potrebbe essere quello di mettere la sequenza nel file /etc/rc.local

 

ATTENZIONE!!!  A partire dalla versione di Ubuntu 18.04LTS il file rc.local non esiste nella directory  /etc e va quindi creato e reso eseguibile. Se non sapete come fare, su Internet troverete molte guide per farlo (è semplice ma richiede qualche accortezza tecnica).

Che ci crediate o no, siete pronti per lanciare Genera e configurare il vostro primo mondo!

Passo 6: a un passo dal cielo

Se state utilizzando Ubuntu 18.04LTS o seguenti, adesso non dovete fare altro che tornare nella vostra home directory e lanciare genera! Se invece state usando Ubuntu 17.04LTS, dovrete fare un passaggio in più per far sì che la vostra distribuzione utilizzi per default X11 per la propria GUI. Ancora una volta, su Internet troverete facilmente le istruzioni per farlo.

Per avviare genera, spostiamoci nella directory in cui abbiamo messo l’eseguibile della macchina virtuale:

cd /home/genera/genera

quindi digitiamo

./genera

Dovreste trovarvi davanti a una finestra simile a quella che segue:

Per accedere, dovete loggarvi nel sistema. Dovreste vedere un prompt nero nel punto in cui digiterete l’utenza di ingresso. In Lisp, dovete dare voi i comandi quindi non vi sarà sufficiente digitare il nome dell’utente ma dire anche qual è l’operazione da compiere! Digitate:

login lisp-machine

Avete digitato correttamente e siete entrati? Se la risposta è no, non disperate: basta cancellare quello che avete scritto e ridigitarlo. Ma ATTENZIONE: per questioni di mapping della tastiera non usate il tasto BACKSPACE bensì il tasto CANC! Sulla mappatura dei tasti torneremo nelle prossime puntate, scoprendo di volta in volta le peculiarità della tastiera Symbolics.

Adesso che siete trionfalmente entrati nel sistema, dobbiamo configurarlo per i nostri scopi. Nel gergo della Symbolics questo si chiama “definire il sito”.

Senza indugio, digitate:

Define Site

e premete la barra di spazio (non “invio”). Genera interpreterà subito il comando e vi chiederà di inserire il nome da dare a questo “sito” (la vostra macchina nel mondo attuale): noi l’abbiamo chiamata bitretro ma voi potete chiamarla come volete. Nel mondo del Lisp, qualsiasi parola viene interpretata appena digitata e separata da uno spazio da qualsiasi cosa segue o seguirà. Nel vostro modo di interagire con Open Genera, digitere molti comandi da tastiera ma il sistema operativo vi guiderà nell’inserire i parametri necessari a mano a mano che digiterete. Solo quando il comando sarà sufficientemente completo potrete premere il tasto invio e l’interprete Lisp darà esecuzione alla vostra richiesta.

Come potete vedere, Genera ha scritto un po’ di testo in risposta alla vostra richiesta di definire il sito bitretro. In pratica vi sta chiedendo alcune informazioni sul sito presentandovi i valori attuali preimpostati. Per fornire le informazioni necessarie è sufficiente spostarsi sulle voci che volete modificare e fare click con il tasto destro .

Facciamolo subito: fate click con il tasto destro del mouse sulla frase “the name of the primary namespace server” sulla riga

Namespace Server Name: the name of the primary namespace server

Qui dobbiamo indicare il nome della macchina che ci ospita. Nel nostro caso il nome che abbiamo dato è genera (ricordate? Lo abbiamo configurato nel file /etc/hosts di Linux). Se ne avete usato uno differente usate il vostro purché coincida con quello che avete messo nelle configurazioni precedenti. Premete invio.

Adesso fate click con il tasto destro sulla frase “the name of the DEC-AXP host on wich Open Genera is running” della riga

Unix Host Name: the name of the DEC-AXP host on wich Open Genera is running

 

Vi facciamo notare che Open Genera è nato per macchine DEC Alpha e quindi, giustamente, vi sta chiedendo il nome della workstation Digital sulla quale sta girando questo sito. L’emulatore fa un ottimo lavoro e Genera è convinto di girare su una fantastica workstation DEC Alpha!

Nel nostro caso, il nome della macchina virtuale sulla quale sta girando il sistema si chiama genera-vlm (anche in questo caso, corrisponde al nome dell’host della macchina virtuale configurato precedentemente nel file di configurazione /etc/hosts su Linux!), quindi premete invio.

Fatto ciò, fate click sul pulsantino “END” o premete il tasto End della tastiera per salvare le modifiche.

CONGRATULAZIONI!!! Avete definito il vostro primo sito!

Genera vi accoglierà con un messaggio del tipo

The local host is now GENERA

Namespace on DIS-LOCAL-HOST; Reloading namespace bitretro

Recent servers contacted are DIS-LOCAL-HOST]

Namespace BITRETRO has become unloaded:

No longer server for this namespace.]

Step 7: siamo supereroi, dobbiamo salvare il Mondo!

Adesso che il nostro sito è definito, non vogliamo ripetere questa configurazione ogni singola volta! Anche perché l’ultimo messaggio di Genera qui sopra dovrebbe avervi fatto sorgere qualche dubbio sul corretto funzionamento del tutto! Come sarebbe a dire che il namespace è stato “unloaded” (smontato)? Semplice! L’indirizzo IP configurato per l’host genera (o come lo avete chiamato voi in /etc/hosts) è sbagliato! Per default viene configurato prendendo l’indirizzo reale esterno della vostra macchina Linux! Anche se per un caso fortuito l’indirizzo coincidesse, non starebbe utilizzando l’interfaccia corretta (probabilmente l’interfaccia ethernet o wifi ma non il tunnel che abbiamo creato noi con la sua interfaccia tap0): dobbiamo modificarlo per riflettere la nostra configurazione!

Come fare? Semplice… Lanciamoci di nuovo nel fantastico mondo degli oggetti di Open Genera. Quello che dobbiamo fare è modificare l’oggetto Host del Namespace che abbiamo chiamato genera (o come si chiama il vostro). Al prompt dei comandi digitate (ricordate di premere spazio per permettere a Genera di aiutarvi nel completamento dei parametri):

Edit Namespace Object Host genera

 

Sapete già come modificare una specifica voce facendo click sulla sua riga. In questo caso, modificate la voce

 

Address: INTERNET indirizzo_ip  (qualsiasi sia il valore assunto come indirizzo IP sulla vostra macchina)

 

cambiandone il valore in

 

INTERNET 192.168.2.2 tap0

 

Premete invio, quindi digitate:

 

Save Object

 

Premete ancora invio e rispondete Yes alla domanda. Quindi digitate

Quit

 

E premete invio.

Adesso tutto è pronto per salvare il mondo!

Salvare il mondo su una workstation Symbolics è molto più semplice che crearlo (al contrario del mondo reale, ahinoi). Digitate:

Save World

e premete la barra di spazio per permettere a Genera di auto-completare la riga scrivendo

Save World (on file [default GENERA-VLM:Genera-8-5-xlib-patched.vlod])

 

Fermiamoci un attimo a pensare e ad analizzare i parametri di questo comando. GENERA-VLM è l’host (la macchina) sul quale si trova l’eseguibile genera che abbiamo lanciato e al quale accediamo grazie a NFS. “Genera-8-5-xlib-patched.vlod” è il “World” di default che abbiamo scaricato all’inizio di questo tutorial e attivo in questo momento. Se non volete fare un’altra piccola modifica al file di configurazione potete confermare il nome di default digitando

Y

e premendo invio. TUTTAVIA, vi suggeriamo di cambiare il nome e preservare il file originale come base per creare altri mondi o per ripristinare tutto dopo un crash inatteso. A voi la scelta. Nel nostro caso, abbiamo cambiato il nome in GENERA-VLM:Genera-8-5-bitretro.vlod

Una volta salvato il mondo, Genera farà un po’ di configurazioni e di pulizia e si riavvierà.

Se, come noi, avrete cambiato il nome del Mondo, Genera non riuscirà a funzionare correttamente perché il suo file di configurazione (.VLM) punta ancora al vecchio mondo. Ciò che vedrete è solo una finestra bianca con un prompt dei comandi.

Non disperate e imparate subito una lezione importante: Genera va fermato in modo corretto. Fermiamo Genera dando il comando

Halt Genera

e premiamo il tasto invio. Genera vi chiederà una conferma alcune volte di volte alla quale è sufficiente rispondere con

Y

o

Yes

e premere invio.

Se tutto avrà funzionato bene, vi ritroverete nell’ambiente a riga di comando di Linux e, se non ci siete già dentro, tornate nella directory in cui si trova il file di configurazione della macchina virtuale

cd /home/genera/genera

e modificate il file .VLM

vi ./.VLM

andando a cambiare la riga che inizia con genera.world in

genera.world: Genera-8-5-bitretro.vlod

 

o con il nome con il quale avrete salvato il mondo nel caso in cui non vi siate attenuti al nostro.

Vi suggeriamo di non cancellare la riga precedente ma di commentarla facendola precedere dal simbolo “#”. Così l’avrete sempre pronta per far partire genera con il vecchio mondo (o altri mondi).

Salvate il file e… AVETE FINITO! Siete i fortunati proprietari di una macchina virtuale Symbolics perfettamente funzionante! Digitate

./genera

E godetevi il risultato delle vostre fatiche!

E adesso?

Adesso avete due scelte. Se siete lettori della prima ora e avete seguito questo tutorial appena è stato pubblicato o comunque prima della pubblicazione degli articoli successivi o delle serate dell’Associazione Culturale Bitretro durante le quali abbiamo parlato / parliamo di Symbolics, potrete sperimentare un po’ da soli leggendo la documentazione che vi abbiamo chiesto di scaricare per orientarvi nel nuovo sistema.

Se invece siete arrivati quando gli articoli successivi erano già a disposizione, seguite le puntate che sono seguite per un approccio soft e molto “mani in pasta”.

In ogni caso non sottolineeremo mai abbastanza l’importanza di leggere la documentazione per farsi un’idea generale di che cosa avete sotto le dita.

L’appuntamento con noi di Bitretro è alla prossima puntata nella quale esploreremo le applicazioni di base incluse nel mondo che avete appena installato, prima di concludere in una ulteriore puntata con un tutorial approfondito del sistema autore di ipertesti Concordia: una chicca nella chicca.

Vi aspettiamo!

Solo per i soci: dopo i saluti qui sotto, continuando a scrollare, troverete il link per scaricare un’immagine di macchina virtuale per Virtual Box, con l’ambiente emulato già pronto per le prossime avventure.

 

 

 

GRAZIE!

Questa sezione è visibile solamente ai soci!

Questa sezione è visibile solamente ai soci!