Home
Repository 32bit  Forum
Repository 64bit  Wiki

Modifiche

Installazione driver ATI su Slackware GNU/Linux

4 746 byte rimossi, 05:26, 20 ott 2007
Configurazione della console in modalità frame buffer
All'avvio lilo passerà il parametro al kernel, che tenterà di settare la risoluzione con quella indicata.
Se il file lilo.conf non contiene la riga di cui sopra, significa che in fase d'installazione si è esplicitamente scelto di avere la console in modalità testuale. Per attivare la console in modalità grafica usando il driver VESA è sufficiente aggiungere la riga mancante e riavviare l'os.
E' possibile che il kernel tenti di avviare la console in modalità grafica anche in assenza di una riga "vga=..." dentro il file lilo.conf. Questo accade perchè la modalità video di default può essere (e viene) settata staticamente all'interno del file immagine del kernel in fase di compilazione.
Se si vuole alterare il parametro di default si può usare il comando ''rdev'', od il suo wrapper ''vidmode'', scelta che comunque sconsiglio caldamente salvo necessità particolari.
dopo ogni modifica al file lilo.conf, per far si che le modifiche siano effettive.
Nella sezione precedente, parlando della configurazione del kernel abbiamo detto di attivare il supporto alla console frame buffer Il parametro vga serve per impostare la modalità video solo ed il driver unicamente ''per schede radeon, disattivando ogni altra opzione, il che include il driver VESA(vesafb)''. Una volta fatto ciò, al successivo riavvio Se il Kernel tenterà kernel ha deciso di avviare la console in modalità grafica utilizzando l'unico usare un differente driver disponibile, ossia o non è stato compilato il supporto al driver radeonfbvesafb, il parametro vga verrà ignorato. Se si lasceranno Nella sezione di cui sopra abbiamo espressamente indicato di non usare altri driver attivati, all'infuori di radeonfb. Purtroppo però il kernel tenterà driver radeon non è in grado di caricarli nellgestire correttamente tutte le schede di questa famiglia (c'ordine in cui figurano era da dubitarne?). In questo caso, è necessario disattivare nel kernel, salvo diverse indicazioni. Per cui è molto probabile che lasciando attivato il supporto al driver radeon e ripiegare sul driver VESA venga utilizzato quello al posto , piuttosto che rimanere senza console grafica. In questo caso, è necessario conoscere le modalità d'utilizzo e configurazione del driver specifico per schede radeonvesafb. A tal scopo, rimando all'articolo [Framebuffer Console HOWTO] in questa stessa wiki.
Se la nostra scheda video non supporta la modalità inidicata da lilo.conf, il kernel tenterà di adattarla automaticamente ==Utilizzo della console con la modalità che ritiene ottimale interrogando la scheda video, operazione che non sempre può aver successo. Per cui, una volta riavviato il computer con il nuovo kernel, privo di driver vesa, potremmo arrivare a sperimentare veri e propri blocchi del sistema, nel casoin cui il driver radeon non riesca a gestire la nostra scheda specifica.Niente panico, nel caso succeda è possibile forzare il caricamento della normale console testuale specificando il parametro vga dal menù di lilo, aggiungendolo alla fine della stringa del kernel da caricare. La sintassi è:radeonfb==
vga=''modeNella sezione precedente, parlando della configurazione del kernel abbiamo detto di attivare il supporto alla console frame buffer ed il driver per schede radeon, disattivando ogni altra opzione, il che include il driver VESA. Una volta fatto ciò, al successivo riavvio il Kernel tenterà di avviare la console in modalità grafica utilizzando l'unico driver disponibile, ossia il driver radeonfb. Se si lasceranno altri driver attivati, il kernel tenterà di caricarli nell'ordine in cui figurano nel kernel, salvo diverse indicazioni. Per cui è molto probabile che lasciando attivato il driver VESA venga utilizzato quello al posto del driver specifico per schede radeon.
dove ''mode'' può essere "ask", "normal", "extended"Se la nostra scheda video non supporta la modalità inidicata da lilo.conf, o il codice numerico kernel tenterà di una adattarla automaticamente con la modalità vesa valida.Con "ask" vedremo visualizzato un menù che ci permetterà di scegliere fra le modalità rilevateritiene ottimale interrogando la scheda video, operazione che non sempre può aver successo. Per cui, una volta riavviato il computer con "normal" avvieremo il nuovo kernel in modalità testuale 80x25, con "extended" privo di driver vesa, potremmo arrivare a sperimentare veri e propri blocchi del sistema, nel caso in modalità testuale 80x50cui il driver radeon non riesca a gestire la nostra scheda specifica.I codici numerici delle modalità VESA valide Niente panico, nel caso succeda è possibile ottenerli tramite questa semplice tabellaforzare il kernel a non usare il driver per radeonfb, specificando a mano in fase di avvio il parametro
{| border vga=1 cellspacingnormal video=0 cellpadding=5|+Modalità standard VESA su Linux ! !320×200 !640×400 !640×480 !800×500 !800×600 !896×672 !1024×640 !1024×768 !1152×720 !1280×1024 !1440×900 !1600×1200 |- !16 color palette | | | | |770 | | |772 | |774 | | |- !256 color palette | |768 |769 |879 |771 |815 |874 |773 |869 |775 |864 |796 |- !15-bit (5radeonfb:5:5) |781 |801 |784 |880 |787 |816 |875 |790 |870 |793 |865 |797 |- !16-bit (5:6:5) |782 |802 |785 |881 |788 |817 |876 |791 |871 |794 |866 |798 |- !24-bit (8:8:8) |783 |803 |786 |882 |789 |818 |877 |792 |872 |795 |867 |799 |- !32-bit (8:8:8) | |804 |809 |883 |814 |819 |878 |824 |873 |829 |868 |834|}off
Già in fase di boot, quindi, è possibile fare alcuni tentativi con questo parametro per ottenere la modalità grafica desiderata, per poi inserirlo nel file lilo.conf in modo che venga settata automaticamente all'avvio dell'osaggiungendolo alla fine della stringa del kernel da caricare.
Difficilmente Se invece la configurazione del framebuffer va oltre questo, nella maggior parte delle distribuzioni odierne. Per ottenere console si avvia normalmente con il megliodriver radeonfb, comunqueanche se magari non alla risoluzione desiderata, l'unica cosa che dobbiamo fare è necessario andare un pocercare di rilevare i parametri ottimali della risoluzione che desideriamo usare e far si che vengano impostati di default all' oltre, cercando di scoprire quali risoluzioni specifiche la nostra scheda video supportaavvio del sistema.
==Rilevazione delle modalità vesa supportate==Esistono una quantità di tool per rilevare le modalità vesa supportate e le loro caratteristiche. Alcuni funzionano meglio, altri peggio, alcuni s'installano facilmente, altri richiedono un po' di lavoro. Ne esamineremo due.E' possibile che comunque non si riesca a rilevare tutte le risoluzioni disponibili per la nostra scheda video. In tal caso è necessario armarsi di pazienza e fare alcuni tentativi.Leggendo l'esperienza degli utenti su internet, appare evidente come a volte non ci sia modo di far funzionare il driver radeonfb per ottenere la console framebuffer con alcuni modelli di scheda. In tal caso, piuttosto che niente, è meglio ripiegare sul consolidato driver vesa. ===Rilevazione tramite vbetest===Il modo più semplice è utilizzare l'utility ''vbetest'', inclusa nel package ''lrmi'', reperibile presso [http://sourceforge.net/projects/lrmi il sito del progetto su SourceForge]. E' sufficiente scompattare il pacchetto in una qualsiasi directory e compilarlo, senza installarlo all'interno del sistema (ho avuto un messaggio di errore tentando di farlo e guardando sul forum del progetto sembra che non sia stato l'unico).  tar -zxvf lrmi-0.10.tar.gz cd lrmi-0.10 make ./vbetest Il comando interrogherà il bios della scheda video diretto per ottenere una lista delle risoluzioni supportate, producendo un output simile al seguente:  VBE Version 2.0 ATI MOBILITY RADEON 9600 [...] [259] 800x600 (256 color palette) [275] 800x600 (5:5:5) [276] 800x600 (5:6:5) [277] 800x600 (8:8:8) [290] 800x600 (8:8:8) [261] 1024x768 (256 color palette) [278] 1024x768 (5:5:5) [279] 1024x768 (5:6:5) [280] 1024x768 (8:8:8) [291] 1024x768 (8:8:8) [263] 1280x1024 (256 color palette) [281] 1280x1024 (5:5:5) [282] 1280x1024 (5:6:5) [283] 1280x1024 (8:8:8) [292] 1280x1024 (8:8:8) [...] A questo punto, una volta individuato il modo desiderato, sarà possibile utilizzarlo per l'opzione ''vga'' di lilo.conf, avendo l'accortezza di sommargli 512 (i motivi per cui questo viene fatto esulano dallo scopo di questo articolo).Per cui, ad esempio, volendo usare influenzare la risoluzione 1280x1024 a 16 bit, modificheremo lilo.conf nel seguente modo:  vga=794 # 282 + 512 ===Rilevazione tramite hwinfo===Il comando hwinfo fa parte di un package che ha visto i suoi natali su Suse, portata poi su Open Suse. Si tratta di un tool che interroga lall'hardware e crea un database abbastanza dettagliato, al punto che è la base per il rilevamento hardware di Yast, il noto tool di Suse.Il problema per ottenere hwinfo su Slackware è che bisogna necessariamente prelevare il pacchetto o dal repository di Suse o dal repository di un altra distribuzione, non esiste un sito principale da cui scaricare i sorgenti. Inoltre, hwinfo fa riferimento ad alcune estensioni avvio del kernel modificato di Suse.Il modo migliore per ottenere hwinfo su Slackware, da quel che ho potuto verificare, sistema è scaricare i sorgenti dal [http://packages.debian.org/unstable/admin/hwinfo sito Debian], inclusa la patch. Questi sono i link diretti alla versione corrente (alla stesura di questo articolo): http://ftp.de.debian.org/debian/pool/main/h/hwinfo/hwinfo_13.41.orig.tar.gz http://ftp.de.debian.org/debian/pool/main/h/hwinfo/hwinfo_13.41-1.diff.gz quindi procedere all'estrazione/patchamento/compilazione  tar -zxvf hwinfo_13.41.orig.tar.gz gunzip gunzip hwinfo_13.41-1.diff.gz patch -p0 < hwinfo_13.41-1.diff cd hwinfo-13.41 cat debian/patches/* | patch -p0 make make install L'operazione richiederà molto tempo, poichè durante la compilazione verrà anche costruito tramite il database con le specifiche dell'hardware.Una volta completato il tutto, sarà possibile ottenere le specifiche della scheda parametro "video digitando il comando:  hwinfo --vbe L'output sarà il seguente:  [...] Mode 0x0301: 640x480 (+640), 8 bits Mode 0x0310: 640x480 (+1280), 15 bits Mode 0x0311: 640x480 (+1280), 16 bits Mode 0x0312: 640x480 (+1920), 24 bits Mode 0x0321: 640x480 (+2560), 24 bits Mode 0x0303: 800x600 (+800), 8 bits Mode 0x0313: 800x600 (+1600), 15 bits Mode 0x0314: 800x600 (+1600), 16 bits Mode 0x0315: 800x600 (+2400), 24 bits Mode 0x0322: 800x600 (+3200), 24 bits Mode 0x0305: 1024x768 (+1024), 8 bits Mode 0x0316: 1024x768 (+2048), 15 bits Mode 0x0317: 1024x768 (+2048), 16 bits Mode 0x0318: 1024x768 (+3072), 24 bits Mode 0x0323: 1024x768 (+4096), 24 bits [...] A questo punto, una volta individuato il modo desiderato, sarà possibile utilizzarlo per l'opzione ''vga'' di lilo.conf come nell'esempio precedente. L'unico appunto è che il numero è in formato esadecimale, per cui va convertito in formato decimale (alcune versioni recenti di lilo supportano anche l'esadecimale). A questo scopo, è sufficiente usare la calcoatrice di un qualsiasi Desktop oppure digitare il comando:  php -r 'echo hexdec('VALORE') . "\n";' dove VALORE è la stringa esadecimale della modalità desiderata. Quindi, ad esempio, per la modalità 800x600 a 24bits, codice esadecimale 0x0315, digiteremo:  php -r 'echo hexdec('315') . "\n";' che darà come risultato 789. ==Fine Tuning della risoluzione video== Il kernel non accetta solamente il parametro ''vga'' con la modalità vesa, per il settaggio della risoluzione video. E' possibile utilizzare anche il parametro ''video'', il quale permette di settare risoluzione ed opzioni varie utilizzando direttamente il driver video desiderato.La sintassi è:la seguente
video=driver:[resx]x[resy]-[bpp]@[freq]
E' bene tenere presente che non tutti i driver supportano questa sintassi e non tutti i driver supportano le stesse opzioni. Per avere un elenco delle opzioni supportate è possibile guardare il file specifico nella directory ''Documentation/fb/'' all'interno dei sorgenti del kernel.
Ad esempioQuesto articolo comunque riguarda il driver radeon, nello specifico, per cui supponendo di voler utilizzare la modalità 1280x800 a 23bit a 60hz con il driver radeon, sarà sufficiente passare a lilo il parametro:
video=radeonfb:1280x800-32@60
Com'è ovvio, questa sintassi è molto più potente della forma "vga=...", poichè ci permette di accedere direttamente alle caratteristiche del driver della nostra scheda video specifica, tra l'altro in un formato decisamente più umano. E' bene fare un po' di prove per ottenere il settaggio ottimale, o più semplicemente consultare il manuale della nostra scheda video/monitor per ottenere un elenco delle combinazioni risoluzione/frequenza disponibili. Una volta trovata la modalità desiderata, è possibile forzare il settaggio automatico della risoluzione all'avvio aggiungendo al file lilo.conf la seguente riga:
append="video=radeonfb:1280x800-32@60"
e quindi aggiornando aggiornare lilo come al solito con il comando ''lilo'' privo di parametri.
Oltre a queste semplici impostazioniPurtroppo però, spesso il driver radeonfb non supporta correttamente ogni tipo di scheda/risoluzione in fase di avvio (ancora, c'era da dubitarne?) per cui non è possibile specificare parametri aggiuntivi per il fine tuning della settare la risoluzione videoottimale in fase di avvio ma solo una risoluzione che gli si avvicina molto.A questo scopoFortunatamente, è necessario modificare il file /etc/fb.modessu linux esistono una quantità di tool userspace per cambiare la risoluzione della console frame buffer a kernel avviato, fra cui spicca fbset.
===Personalizzazione manuale di della configurazione tramite fbset e fb.modes===fbset è un semplice programma che permette di cambiare a kernel avviato la risoluzione della console frame buffer. fbset utilizza Il file /etc/fb.modes è il file utilizzato per descrivere impostare i vari aspetti delle varie modalità video. E' fb.modes è utilizzato tanto dal frame buffer device (fbdev), quanto dall'utility comando fbset (che permette di visualizzare/cambiare dinamicamente la risoluzione) quanto da tutti gli altri tool/software di sistema e non che hanno a che fare con il frame buffer visualizzano grafica all'interno della console (ad esmepio mplayer e fbsplash).
Di default, il file fb.modes contiene una serie di modeline standard, ereditate dalle modalità vesa. Comunque, all'interno della directory /usr/share/doc/fbset-''versione'' è possibile trovare un file con le modeline specifiche per le schede ATI. Procediamo quindi con il sostituirlo a quello standard.
hsync high
vsync high
accel true
rgba 8/0,8/0,8/0,0/0
endmode
hsync high
vsync high
rgba 8/0,8/0,8/0,0/0
endmode
Come avrete notato, ho eliminato le righe "accel" e "rgba", in quanto fbset non comprende quel tipo di parametri. Prima di far ciò è possibile provare a cambiare parametri della modalità e vedere se è supportata. Ad esempio, per provare a cambiare la profondità in bit, si può digitare  fbset -depth 32 Se il comando ha successo, allora si può procedere a visualizzare la nuova modalità con fbset privo di parametri e ad aggiungere il risultato al file fb.modes (avendo l'accortezza di rimuovere le righe con i parametri non supportati).Una volta aggiunta una nuova modalità, si potrà utilizzare il suo nome per richiamarla con fbset, ad esempio:  fbset 1280x800-32@60 Il secondo metodo consiste nell'utilizzare il tool ''modetest''.
===Personalizzazione di fb.modes tramite modetest e configurazione del server X===
EndSection
Nel caso si disponga Può accadere che l'output visualizzato da modetest non corrisponda effettivamente alla risoluzione impostata dalla scheda video, in quanto il driver tenta sempre di adattare le richieste dell'utente per evitare di danneggiare l'hardware.In tal caso, usare fbset per visualizzare la modeline corrette già nel reale, aggiungerla al file /etc/fb.modes, è possibile come spiegato nel paragrafo precedente quindi convertirle nel formato di X con lo script ruby presente nella cartella dove avete estratto e compilato modetest (non viene installato dentro /usr con make install, quindi perciò va eseguito da li dentro). Ad esempio:
chmod +x fb2x.rb
414
contributi