Avanti Indietro Indice

20. Appendice C - Chip NeoMagic NM20xx

20.1 Introduzione

Dato che il chipset NeoMagic della serie NM20xx è uno dei chip grafici più usati sui laptop dei nostri giorni, ci spenderò sopra alcune parole. Per quanto per lungo tempo questo chip fosse supportato solo da server X commerciali, a partire dalla metà del 1998 RedHat ha fornito un server X binario prodotto da PrecisionInsight. A partire dalla versione 3.3.3 questo server X è disponibile anche per XFree86.

20.2 Modo testo 100x37

Questo capitolo è dovuto alla cortesia di Cedric Adjih < cedric.adjih@inria.fr >. Ho modificato solo alcune parti.

Un fatto apparentemente poco noto riguardo al chipset Neomagic NM20xx, è che lo si può lanciare in modalità testuale 100x37 (cioé 800x600). Questa modalità è molto piacevole (in confronto allo sgradevole 80x25). L'ho provato con un HP OmniBook 800 e suppongo possa funzionare anche con altri laptop che utilizzino il chip NeoMagic. Ciò che ho scritto sotto risulta più prolisso di quanto avessi preventivato, ovvero ho redatto una specie di mini-howto :-) :

Il problema principale è che la configurazione risulta un po' difficoltosa, e se ci si sbaglia con SVGATextMode/restoretextmode alcuni esisti sull'LCD possono essere terrorizzanti. Per quanto non sia arrivato a distruggere il mio LCD, neppure dopo veramente molti tentativi falliti, faccio questa LIBERATORIA: QUESTO PROCEDIMENTO POTREBBE DANNEGGIARE L'HARDWARE. SIETE STATI AVVERTITI. SEGUITE LE ISTRUZIONI SUCCESSIVE A VOSTRO RISCHIO E PERICOLO, IO NON SARÒ RESPONSABILE NEL CASO CAPITI QUALCOSA DI MALE.

Riassunto

È necessario effettuare tre passi principali:

  1. Fare in modo di avviare Linux in modalità testo 800x600. Il problema è che non si vedrà alcun testo prima che siano compiuti i due passi successivi.
  2. restoretextmode deve eseguirsi in automatico con i dati di registro corretti.
  3. SVGATextMode deve eseguirsi in automatico.

Maggiori dettagli

Tutti i file che ho modificato sono da ora disponibili su http://starship.python.net/crew/adjih/data/cda-omni-trick.tar.gz

Fare in modo che Linux si avvii a 800x600

I kernel recenti (2.2.x) devono essere compilati definendo CONFIG_VIDEO_GFX_HACK, che per impostazione predefinita è disattivato. (si guardi in /usr/src/linux-2.2.x/arch/i386/boot/video.S)

Ciò si ottiene passando il parametro vga=770 ai kernel più vecchi o vga=7 ai kernel 2.2.x. Esempio con lilo.conf:


image=/boot/bzImage-modif
label=22
append="svgatextmode=100x37x8_SVGA" #spiegato più
avanti
vga=7
read-only

Come far si che restoretextmode e SVGATextModevengano lanciati all'avvio

Bisogna fare in modo che restoretextmode <nome di qualche file textreg.dat> e SVGATextMode 100x37x8_SVGA vengano lanciati all'avvio.

Un textreg.dat di esempio per restoretextmode (ottenuto usando savetextmode) si trova nel mio archivio tar in tmp/, oltre ad un /etc/TextConfig di esempio.

Dato che sono pigro, ho semplicemente inserito SVGATextMode e restoretextmode nel file /etc/rc.boot/kbd del mio Debian/GNU Linux, un file che viene eseguito all'avvio (anch'esso disponibile nell'archivio tar).

Ora il punto cruciale

A video appariranno immagini fastidiose se non si usa SVGATextMode nella giusta modalità video testuale: per questo passo anche la variabile ambientale "svgatextmode=100x37x8_SVGA" (nome arbitrario) al kernel (usando append=xxx in lilo.conf) laddove imposto vga=7: lo script /etc/rc.boot/kbd verifica questa variabile e invoca restoretextmode e SVGATextMode SE E SOLO SE la trova impostata.

Lista delle operazioni da compiere

  1. Ricompilate il kernel 2.2.x con CONFIG_VIDEO_GFX_HACK
  2. Inserite restoretextmode con il parametro corretto nello script di inizializzazione, senza altre modifiche.
  3. Riavviate nella normale modalità testo (80x25) ma con restoretextmode: dovreste vedere lo schermo passare a 100x37, ma potendolo usare solo come 80x25. Non usate ancora SVGATextMode.
  4. È molto meglio vincolare a condizioni il proprio codice di inizializzazione come ho fatto io, per conservare la possibilità di avviare in entrambi i modi: ora è possibile testarlo con alcuni riavvii (avviando restoretextmode oppure no).
  5. Avviando in modo testo 100x37 con il parametro vga=7 (lilo.conf), dovreste vedere ad un certo punto uno sfondo bianco, ma i caratteri saranno nero su nero. È tutto a posto, sarà ora necessario riavviare alla cieca.
  6. Inserite il <percorso>/SVGATextMode 100x37x8_SVGA dopo il restoretextmode negli script di inizializzazione.
  7. Riavviate con vga=7 (lilo.conf)
  8. Ora dovrebbe essere tutto a posto. Buon divertimento.


Avanti Indietro Indice