Avanti Indietro Indice

3. Installazione di MGR

L'ultima distribuzione dei sorgenti può essere prelevata tramite FTP da ftp://bugs.nosc.mil/pub/Mgr/69 o tramite Mosaic da http://archimedes.nosc.mil/Mgr/69. Essa si può trovare anche presso ftp://sunsite.unc.edu/pub/Linux/apps/MGR ed i suoi mirrors. Versioni precedenti di questa distribuzione, curate da Haardt, si possono trovare in tsx-11.mit.edu, e probabilmente altrove. Versioni di MGR precedenti al port per Linux, di Uhler ed altri si trovavano in ftp://bellcore.com/pub/mgr, ma penso che ora non vi siano più. Io ho salvato una copia di ogni cosa riguardante MGR vista su Internet, ma non sono a conoscenza di nulla di una certa importanza che manchi da questa distribuzione per Linux e Sun. MGR è passato attraverso un bel po' di versioni e releases, ma la corrente versione *per Linux* è la 0.69. Essa passerà a 1.0 quando vi sarà del codice stabile per supportare la VGA a 256 colori sotto Linux (per più di una scheda grafica). I numeri di versione RCS sono saliti dal 4.3 della Bellcore al 4.13 attuale.

Per costruire questa distribuzione di MGR sono necessari i seguenti tools: m4 (GNU, o forse anche altri dotati dell'opzione -D), make (GNU, o forse anche altri che supportino gli include) e *roff per la documentazione. Ed anche sh e POSIX install. Le distribuzioni binarie spesso non vengono assemblate, cosicché è necessario un compilatore ANSI C, come per esempio gcc.

Una installazione Linux richiede Linux 0.99.10 o meglio (quello che io uso attualmente per il testing è la versione 1.2.13), una scheda grafica HGC, EGA, VGA o SVGA, e un mouse. Sono supportati i seguenti mouse: mouse seriale Microsoft, mouse seriale MouseSystems a 3 e 5 byte mouse seriale MMSeries, mouse seriale Logitech, mouse PS/2, oppure un bus mouse. Con le combinazioni Buckey (Meta) da tastiera, anche un sistema senza mouse potrebbe fare un po' di utile lavoro sotto MGR. Il modo grafico monocromatico VGA 640x480 è supportato senza bisogno di alcun intervento particolare, ed egualmente quello 640x350 e 640x200. Per supportare la modalità 800x600, o altre che il tuo BIOS può inizializzare e che non richiedono bank-switching, è necessario far girare sotto DOS, o un emulatore, un piccolo programma (src/vgamisc/regs.exe) per leggere i registri VGA e scrivere un file header da piazzarsi nella directory src/libbitblit/linux, cosicché possa venire #incluso dal file lì presente vga.c. Sono forniti anche degli esempi di tali file, ma per favore creati quelli specifici della tua particolare scheda. Alcune schede VGA possono usare modalità grafiche che richiedono 128k di RAM, e queste potrebbero supportare risoluzioni monocromatiche più elevate.

Il codice per la modalità a colori in Linux funziona senza problemi anche nella modalità policromatica VGA 320x200x256, poiché essa non richiede alcun bank-switching. Se pensi quanto pochi siano 64000 pixel, capirai che questa modalità è assai limitata. Nella versione 0.65 è stato aggiunto del codice per il bank-switching, non molto veloce, ma semplice: funziona con una scheda grafica Tseng ET4000 nelle modalità 640x480x256 e 800x600x256. Il codice per la S3 non funziona ancora nelle risoluzioni super VGA. Supportare nuove schede super VGA richiede la scrittura di una funzione per switchare i banchi, e quindi assicurare che la modalità desiderata possa venire inizializzata da un register dump, magari lavorandoci un po' sopra a mano. I servers a colori per Linux generalmente corrompono i font dello schermo, rendendo necessario l'uso di restorefont come in runx.

Sono supportati anche i Sun con SunOS 4.1.2+ e i frame buffer bwtwo, cgthree, o cgsix. La loro velocità lavorando nelle modalità a colori è buona. Le installazioni Coherent dovrebbero riferirsi al file README.Coh nella distribuzione dei sorgenti. Il porting della versione più recente di MGR ad un altro sistema POSIX-like, che supporti select, i pty e l'accesso diretto ad un frame-buffer a mappa di bit dovrebbe essere immediato, richiedendo solo l'implementazione della libreria libbitblt basandosi, per esempio, sul codice sunmono o colorport.

Per una installazione completa, occorrono 7 Mb di spazio su disco per i file binari, i font, le man-page etc. I file sorgente occupano circa 4.5 Mb, cui vanno aggiunti i file oggetto durante la compilazione.

Normalmente, la directory dove installare i file che MGR usa a runtime dovrebbe essere /usr/mgr, o almeno dovrebbe venire linkata ad essa. Scrivendo:

cd /usr/mgr; tar xvfz dovelohaimesso/mgrusr-0.69.tgz
e facoltativamente
cd /usr/mgr; tar xvfz dovelohaimesso/morefonts-0.69.tgz
si scomprimeranno questi file. I sorgenti possono venire installati ovunque, ad esempio scrivendo
cd /usr/src/local/mgr; tar xvfz dovelohaimesso/mgrsrc-06.9.tgz
per scomprimere i sorgenti prelevati da archimedes.nosc.mil.

L'albero dei sorgenti può venire compilato da un unico Makefile nella directory principale che chiama quelli nelle secondarie, ognuno dei quali "include" il file "Configfile" nella directory base. Configfile è creato dallo shell script interattivo Configure, che, tenendo conto delle tue risposte ad alcune sue domande, fa processare Configfile.m4 ad m4. Quindi si deve scrivere qualcosa di simile a questo:

chdir /usr/src/local/mgr
sh ./Configure
make first
make depend
make install
make clean

Potrebbe essere saggio, prima di far partire make, dare uno sguardo al Configfile generato dallo script Configure, controllando che sembri ragionevole. (Come minimo un m4 (il /usr/bin/m4 dei Sun) si ferma subito creando un Configfile cortissimo. Se accade questo, bisogna editare a mano una copia di Configfile.sun o Configfile.lx) Si può anche editare make all in ogni directory in cui sia stato creato un Makefile, non appena siano state compilate ed installate le librerie. Il server, le librerie, e alcuni client sono stati lintati, ma molti client sono scritti in K&R C, e fanno generare molti warning al compilatore.

Si possono aggiungere od omettere molti flag nella variabile MGRFGLAGS in Configfile per modificare alcune caratteristiche opzionali del server, ossia:

-DWHO

modifica il file utmp così da permettere il funzionamento di "who"

-DVI

inserisce del codice che permette di muovere il cursore con il mouse in vi

-DDEBUG

abilita la possibilità di selezionare con l'opzione -d un output di debug

-DFASTMOUSE

utilizza l'operazione XOR nel tracciamento del mouse

-DBUCKEY

abilita i comandi da tastiera, senza l'utilizzo del mouse

-DPRIORITY

usa uno scheduling diverso dal round-robin standard, dando una priorità più alta alla finestra attiva

-DCUT

abilita il supporto per il copia/incolla fra le finestre.

-DMGR_ALIGN

forza l'allineamento della finestra sul confine del byte, per una maggiore velocità di scrolling ( solo nelle modalità monocromatiche)

-DKILL

uccide le finestre nel caso che la tty riporti un errore di i/o

-DSHRINK

usa solo parte dello schermo ( pari al valore della variabile di ambiente $MGRSIZE)

-DNOSTACK

non permette lo stacking degli eventi

-DBELL

attiva il beep

-DKBD

nei Sun legge l'input di MGR dalla tastiera, invece che da stdin. Questo permette la redirezione a una finestra dei messaggi della console.

-DFRACCHAR

abilita il supporto per il movimento frazionale dei caratteri permettendo così l'uso di font proporzionali

-DXMENU

supporto esteso per i menu ( sperimentale )

-DMOVIE

estensione per fare moviole: tutte le operazioni vengono salvate su di un file per un successivo replay -- non del tutto funzionante su Linux

-DEMUMIDMSBUT

nei mouse a due tasti, emula il bottone di mezzo premendo insieme gli altri 2.

Non tutte le combinazioni di queste opzioni sono state testate su tutti i sistemi.

La macro BITBLITFLAGS deve contenere -DBANKED se si sta provando il supporto per la SVGA a colori.

Un convertitore genera il codice C per le variabili statiche contenenti le icone e i font dai file corrispondenti.

Non tutti i client vengono compilati ed installati dai Makefile. I client che si trovano sotto src/clients e che hanno i nomi capitalizzati, o che non vengono compilati dai Makefile forniti possono presentare problemi durante la compilazione o l'esecuzione, ma può essere interessante farci un po' di hacking. Molti dei driver video nella directory libbitblit sono di interesse soprattutto archeologico. Qualche volta rovistando nelle tombe può saltare fuori qualcosa di interessante.

A un certo punto controlla che i tuoi file /etc/termcap e/o terminfo contengano le entrate per i terminali MGR come quelli che si trovano nella directory misc. Se tutto il tuo software controlla $TERMCAP nell'ambiente , questo non è più necessario, finché fai partire eval `set_termcap` in ogni finestra.

MGR funziona meglio se gira setuid root, poiché cerca di cambiare le proprietà dei pty e scrivere nel file utmp. Questo aiuta il gestore di icone ify a lavorare meglio e il meccanismo di trasmissione degli eventi ad essere più sicuro. Su Linux sono necessarie le permissioni del root per l'input/output sullo schermo. D'altra parte, tu decidi se fidarti o no.

Nelle versioni intorno alla 0.62 c'erano problemi sul Sun usando la csh come shell di default. I programmi sembravano girare in un gruppo di processi diverso da quello del gruppo di processi di primo piano del pty della finestra, in contrasto alle man-page e alle specifiche POSIX. Non c'era nessun problema con bash, sh o rc. Qualcuno ha un idea del perché ?


Avanti Indietro Indice