LKN: Requisiti per Compilare ed Utilizzare il Kernel: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
m (aggiunto link pdf originale)
Riga 1: Riga 1:
== Introduzione ==
''Torna all'indice: [[Linux Kernel in a Nutshell]]''


Questo how-to spiegher� come installare i driver proprietari forniti da ATI per generare il modulo <tt>fglrx</tt> necessario al funzionamento del motore 3d delle schede grafiche.
Questo capitolo descrive i programmi necessari per configurare un kernel, compilarlo e fare il boot con successo. &Egrave; utile consultare il file ''Documentation/Changes'' per verificare esattamente quale sia la versione richiesta di ogni programma descritto. Qui vengono riportate le versioni dei programmi che funzionano con il kernel 2.6.18, su cui si basa la trattazione. Chi sta usando un kernel diverso verifichi di avere installate le versioni richieste, come riportato nel file sopra specificato, altrimenti qualcosa potrebbe non funzionare correttamente e potrebbe essere estremamente difficile capire cosa è andato nel modo sbagliato.


Come noto i driver ATI soffrono di una difficile installazione e configurazione. Sfortunatamente (o forse no) esistono molteplici configurazioni hardware che ostacolano l'installazione dei driver. Spesso, anche seguendo un guida perfetta, non si riesce ad attivare l'accelerazione 3D al primo colpo (molto raramente si hanno anche problemi di visualizzazione nel desktop). Solamente con i successivi tentativi (variando anche il metodo, o la guida) solitamente si raggiunge lo scopo prefisso. Il modesto consiglio di non disperarsi, magari tirare cazzotti pesanti al case, ma provare finch non si riesce.


== Software richiesto ==
=='''Strumenti per compilare il kernel'''==


Sebbene i pacchetti per la generazione del modulo <tt>fglrx</tt> siano disponibili nel repository di Debian, il consiglio � quello di utilizzare l'installer fornito da ATI in quanto pi� aggiornato.
La maggior parte delle distribuzioni prevede la possibilità di installare una raccolta di pacchetti per lavorare con il kernel. Qualora la distribuzione offra questa possibilità è consigliabile sfruttarla, piuttosto che tentare di rintracciare ogni singola applicazione necessaria allo scopo.
Oltre a questo, nel caso in cui si voglia compilare il modulo senza sfruttare l'installer, sar� necessario disporre dei sorgenti del kernel (o gli header), quindi del pacchetto linux-source e di tutti i pacchetti correlati a questo e necessari per la compilazione (<tt>build-essential</tt>).


{{ Warningbox | Prima di far partire l'installazione di nuovi driver:
Per compilare un kernel servono solo tre pacchetti: un compilatore, un linker e un'utility ''make''. Questa sezione descrive il contenuto di ognuno di questi pacchetti.


* Salvate una copia di <tt>/etc/X11/xorg.conf</tt> , che in caso di problemi andra' sostituita a quella nuova (creata dal configurer).
==='''Compilatore'''===
* Verificate che non sia presente la cartella <tt>/usr/share/fglrx/</tt>. Se � presente, significa che sono installati dei vecchi driver fglrx. Per rimuoverli:
<pre># cd /usr/share/fglrx/
# sh ./fglrx-uninstall.sh</pre>
e seguite le istruzioni.
* Fate un '''<tt>aptitude purge</tt>''' di vecchi pacchetti di vecchi driver, se sono installati. Per esempio (i nomi dei pacchetti potrebbero essere diversi):
<pre># aptitude purge fglrx-driver fglrx-kernel-src fglrx-control fglrx-kernel-2.6.17-2-686</pre>
}}


== Metodologie di installazione ==
Il kernel Linux è scritto in linguaggio C, con alcune piccole sezioni scritte in assembly. Per compilare un kernel è necessario utilizzare il compilatore per C gcc. La maggior parte delle distribuzioni comprendono un pacchetto di nome ''gcc'' che dovrebbe essere installato. Se volete scaricare il compilatore e compilarlo da soli, potete trovarlo all'indirizzo http://gcc.gnu.org .


Per quanto riguarda l'intallazione di quelli nuovi, esistono essenzialmente <u>3 metodi alternativi</u>:
Per quanto concerne la release 2.6.18 del kernel, la versione 3.2 di ''gcc'' è la più vecchia tra quelle che possono compilare correttamente un kernel funzionante. Occorre fare attenzione che utilizzare l'ultima versione di ''gcc'' non è sempre una buona idea. Alcune delle versioni più recenti non compilano correttamente il kernel, quindi, a meno che non si voglia aiutare nel lavoro di debug del compilatore, ne è sconsigliato l'utilizzo.
# usare l'eseguibile Ati
# creare i pacchetti ''.deb'' partendo dall'eseguibile Ati
# installare i driver dai repository


=== Intallazione attraverso l'installer ATI ===
Per scoprire quale versione di ''gcc'' avete installata usate il seguente comando:


Da un terminale spostatevi nella cartella dove avete scaricato il file e date i permessi di esecuzione:
<pre>$ gcc --version</pre>
<pre>$ chmod +x ati-driver-installer-8.26.18-x86.run</pre> quindi, da root:
<pre># sh ./ati-driver-installer-8.26.18.x86.run</pre>
e seguite le istruzioni.
Poi, sempre con i permessi di root, aggiornate il file di configurazione <tt>xorg.conf</tt>:
<pre># cd /etc/X11/
# aticonfig --initial
# aticonfig --overlay-type=Xv</pre>
e se volete settare meglio la configurazione:
<pre># aticonfig</pre>
il quale ci dar� un lungo output con la descrizione di tutte le opzioni che possiamo usare con <tt>aticonfig</tt>.


A questo punto non ci resta che compilare il modulo del kernel fglrx. I metodi possono essere 2:
==='''Linker'''===


1) Usare module-assistant un pacchetto fornito per compilare moduli contenenti nel kernel-headers
Il compilatore C, ''gcc'', non compie il lavoro di compilazione interamente da solo, ma ha bisogno di alcuni strumenti, chiamati ''binutils'', per effettuare il collegamento (linking) e l'assemblaggio dei file sorgente. Il pacchetto ''binutils'' contiene anche altre utili applicazioni che permettono di intervenire sui file oggetto (''object files'', prodotti dal compilatore ma non ancora collegati, dal linker, alle librerie e/o ad altri file oggetto necessari per l'esecuzione, N.d.T.) in molti modi, ad esempio per vedere il contenuto di una libreria.
2) Compilare a mano il modulo.


Preferendo la seconda via perch� non richiede il pacchetto kernel-header e perch� applicabile a qualsiasi tipo di kernel sia quello distribuito dai debian repository che i kernel vanilla di www.kernel.org il metodo � il seguente:
''binutils'' si trova di solito all'interno di un pacchetto di nome... ''binutils'' in ogni distribuzione. Se volete scaricarlo e installarlo da soli, potete trovarlo all'indirizzo http://www.gnu.org/software/binutils .


Spostarci nella directory /lib/module/fglrx/build_mod da utenti root:
La versione più vecchia di ''binutils'' che può essere utilizzata per collegare il kernel 2.6.18 è la 2.12. Per scoprire quale versione di ''binutils'' avete installata nel vostro sistema eseguite il comando seguente:


In questa directory adesso basta lanciare
<pre>$ ld -v</pre>


./make.sh
==='''Make'''===


Accertarsi che tutto sia andato a buon fine con una scritta "done" e poi spostarci nella directory precedente a build_mod ovvero /lib/modules/fglrx
''make'' è uno strumento che cerca nei sorgenti del kernel quali file devono essere compilati e successivamente chiama il compilatore e gli altri strumenti necessari per costruire il kernel. Il kernel necessita della versione GNU di ''make'', che solitamente si trova in ogni distribuzione in un pacchetto chiamato ''make''.
A questo punto lanciare il comando


./make_install.sh
Se volete scaricare e installare ''make'' da soli potete trovarlo all'indirizzo:
http://www.gnu.org/software/make .


Se tutto � andato a buon fine avete compilato il vostro bel modulo fglrx e per evitare di riavviare il sistema basta semplicemente entrare in linea di comando con CTRL + ALT + F1, effettuare il login come utente root e poi digitare
La release più vecchia di make che può essere utilizzata con un kernel 2.6.18 è la 3.79. Vi consiglio di installare la versione stabile più recente, perché le versioni più recenti lavorano più velocemente nel processare i file di compilazione.
Per verificare quale versione di make avete installata usate il comando:


  /etc/init.d/gdm o kdm stop
<pre>$ make --version</pre>


montare il modulo fglrx con
=='''Strumenti per utilizzare il kernel'''==


modprobe fglrx
Anche se solitamente la versione del kernel che sta funzionando in un sistema non influisce su alcuna applicazione a livello utente, ci sono alcuni programmi per cui invece è importante. Questa sezione descrive alcuni strumenti che probabilmente sono già installati nel vostro sistema Linux: se aggiornate il kernel ad una versione diversa da quella inclusa nella vostra distribuzione, potrebbe essere necessario aggiornare anche alcuni di questi pacchetti, per permettere al sistema di funzionare correttamente.


e riavviare il sistema
==='''util-linux'''===


/etc/init.d/gdm o kdm restart
Il pacchetto ''util-linux'' è una raccolta di piccole utilità che assolvono ad un'ampia gamma di compiti; la maggior parte di queste utilità si occupa del montaggio e della creazione di partizioni su disco e della gestione dell'orologio di sistema.


Per controllare che la vostra accelerazione 3D funzioni basta digitare da shell come utente normale
Se volete scaricare ed installare questo pacchetto da soli lo trovate al seguente indirizzo: http://www.kernel.org/pub/linux/utils/util-linux .


fglrxinfo
La versione più vecchia di ''util-linux'' compatibile con il kernel 2.6.18 è la 2.10. &Egrave; consigliabile installare la più recente versione disponibile di questo pacchetto, perché le ultime versioni supportano le nuove caratteristiche implementate nel kernel. I ''bind mounts'' sono un esempio di un'opzione inclusa nei kernel più nuovi, che necessita della versione più recente di ''util-linux'' per poter funzionare correttamente.


glxinfo | grep rendering  N.B.: Se non avete glxinfo installare il pacchetto mesa-utils
Per scoprire quale versione di ''util-linux'' avete installata nel vostro sistema usate il seguente comando:


e aspettare che vi dia come output
<pre>$ fdformat --version</pre>


direct rendering: Yes
==='''module-init-tools'''===


Questo metodo risulta pi� semplice ed efficace della pacchettizzazione. Se usate kernel vanilla la procedura � la medesima. Attenzione ad usare i kernel 2.6.20 poich� hanno un bug e quindi viene corretto da una patch al modulo fglrx.Tale patch � possibile trovarla in rete.
Il pacchetto ''module-init-tools'' è necessario per poter utilizzare i moduli del kernel. Un ''modulo del kernel'' è un pezzetto di codice caricabile che può essere aggiunto o rimosso dal kernel anche mentre questo sta girando. &Egrave; comodo compilare i driver dei dispositivi come moduli per poter caricare solo quelli relativi allo hardware presente nel sistema. Tutte le distribuzioni di Linux usano i moduli per poter caricare solo i driver necessari al sistema in base allo hardware presente, invece di essere costretti a costruire tutti i possibili driver e opzioni del kernel in un unico blocco. L'uso dei moduli permette di risparmiare memoria, caricando solo il codice necessario per controllare correttamente la macchina.


===Installazione manuale con generazione pacchetti specifici per Debian===
Il processo di caricamento dei moduli ha subito una revisione radicale nella versione 2.6 del kernel. Il linker per i moduli (il codice che si occupa di risolvere tutti i simboli e capire come associare i pezzi di codice in memoria) adesso è compilato all'interno del kernel, e questo permette di avere degli strumenti a livello userspace molto leggeri. Le distribuzioni più vecchie hanno un pacchetto che si chiama ''modutils'' che non funziona correttamente con il kernel 2.6. Il pacchetto ''module-init-tools'' è quello di cui avete bisogno per lavorare correttamente con i moduli di kernel 2.6.


Con i privilegi di root, rimuoviamo i vecchi pacchetti del modulo <tt>fglrx</tt>, se presenti:
Chi volesse scaricare e installare da solo questo pacchetto, può trovarlo all'indirizzo:
<pre># rm /usr/src/fglrx-kernel*.deb</pre>
http://www.kernel.org/pub/linux/utils/kernel/module-init-tools .
E' necessario installare i seguenti pacchetti:
<pre># apt-get install module-assistant build-essential fakeroot dh-make debconf libstdc++5 gcc-3.4-base</pre>
Spostiamoci nella cartella dove abbiamo scaricato l'eseguibile Ati e diamogli i permessi di esecuzione:
<pre>$ chmod +x ati-driver-installer-8.26.18-x86.run</pre>
Poi, per creare i 5 pacchetti .deb:
<pre>$ sh ./ati-driver-installer-8.26.18-x86.run --buildpkg Debian/[release]</pre>
Ad esempio:
<pre>$ sh ./ati-driver-installer-8.26.18-x86.run --buildpkg Debian/testing</pre>
Per installarli (installiamo solo quelli fondamentali):
<pre>$ su
Password:
# dpkg -i fglrx-driver_8.26.18-1_i386.deb
# dpkg -i fglrx-kernel-src_8.26.18-1_i386.deb
# dpkg -i fglrx-control_8.26.18-1_i386.deb</pre>


====Compilazione del modulo <tt>fglrx</tt>====
La versione più vecchia di ''module-init-tools'' compatibile con il kernel 2.6.18 è la 0.9.10. Si raccomanda di installare l'ultima release disponibile di ''module-init-tools'', in quanto permette di utilizzare alcune caratteristiche nuove del kernel. Ad esempio, la possibilità di creare una blacklist dei moduli che non si vuole vengano automaticamente caricati da udev è una delle opzioni che sono presenti solo nelle versioni più recenti di ''module-init-tools''.
Per scoprire quale versione avete installata nel vostro sistema usate il comando:


Adesso va compilato il modulo <tt>fglrx</tt>, con <tt>module-assistant</tt> (m-a):
<pre>$ depmod -V</pre>
<pre># m-a prepare
# m-a update
# m-a build fglrx
# m-a install fglrx
# depmod -a</pre>
Quindi muoviamoci in <tt>/etc/X11/</tt>:
<pre># cd /etc/X11/</pre>
e aggiorniamo il file di configurazione di X:
<pre># aticonfig --initial
# aticonfig --overlay-type=Xv</pre>
Naturalmemte � possibile modificare <tt>etc/X11/xorg.conf</tt> anche a manina (per fare questo consultate...uhm, forse c'� qualche cosa in <tt>man xorg.conf</tt>) oppure consultando e usando <tt>aticonfig</tt>.


Riavviamo '''X'''.
=='''Strumenti specifici per i filesystem'''==


{{ Warningbox | Ad ogni aggiornamento del kernel bisogna ricompilare il modulo <tt>fglrx</tt>. }}
Per creare, formattare e riparare le partizioni dei dischi è necessario un ampio spettro di  strumenti specifici per i vari filesystem. Il pacchetto ''util-linux'' ne contiene alcuni, ma alcuni dei più popolari filesystem hanno dei pacchetti separati che contengono le utilità necessarie.


===Installazione dei driver dai repository===
==='''ext2/ext3/ext4'''===


Innanzi tutto installiamo i pacchetti necessari:
I filesystem ''ext3'' e quello in fase di sviluppo ''ext4'' sono evoluzioni dell' ''ext2'' e possono essere gestiti con gli stessi strumenti; la versione più recente di qualunque applicazione basata su ''ext2'' può essere impiegata anche sugli altri due filesystem.
<pre># apt-get install fglrx-control fglrx-driver fglrx-driver-dev fglrx-kernel-src</pre>
Siccome il modulo di cui abbiamo bisogno (<tt>fglrx</tt>) � sotto forma di sorgenti (<tt>fglrx-kernel-src</tt>), lo compiliamo e lo installiamo utilizzando <tt>module-assistant</tt>, come descritto [[#Compilazione del modulo fglrx|qui]].


In teoria abbiamo finito, bisogna solamente configurare [[#Struttura del file xorg.conf|<tt>/etc/X11/xorg.conf</tt>]] e riavviare '''X'''.
Per utilizzare questi filesystem dovete avere il pacchetto ''e2fsprogs''; l'indirizzo a cui trovarlo per scaricarlo e installarlo da soli è: http://e2fsprogs.sourceforge.net.


'''Nota:''' Consultate anche il manuale di <tt>fglrx</tt> . ( <tt>man fglrx</tt> ).
La versione più vecchia di ''e2fsprogs'' funzionante con il kernel 2.6.18 è la 1.29; è altamente consigliato utilizzare la release più recente per sfruttare al meglio le nuove caratteristiche dei filesystem ''ext3'' ed ''ext4''.


== Struttura del file xorg.conf ==
Per scoprire quale versione di ''e2fsprogs'' è installata nel vostro sistema usate il comando:


Un esempio di <tt>/etc/X11/xorg.conf</tt>
<pre>$ tune2fs</pre>


<pre>
==='''JFS'''===


### /etc/X11/xorg.conf ###
Per usare il filesystem JFS di IBM è necessario avere il pacchetto ''jfsutils''; se volete scaricarlo e installarlo da soli lo trovate all'indirizzo: http://jfs.sourceforge.net.


Section "ServerLayout"
La versione più vecchia di ''jfsutils'' utilizzabile correttamente con il kernel 2.6.18 è la 1.1.3; per verificare quale versione avete installata lanciate il comando:
Identifier    "Default Layout"
Screen      0  "aticonfig-Screen[0]" 0 0
InputDevice    "Keyboard"
InputDevice    "Mouse"
InputDevice    "Touchpad"
EndSection


Section "Files"
<pre>$ fsck.jfs -V</pre>
# path to defoma fonts
FontPath    "/usr/share/fonts/X11/misc"
FontPath    "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath    "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath    "/usr/share/fonts/X11/Type1"
FontPath    "/usr/share/fonts/X11/100dpi"
FontPath    "/usr/share/fonts/X11/75dpi"
FontPath    "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection


Section "Module"
==='''ReiserFS'''===
Load  "synaptics"
Load  "bitmap"
Load  "ddc"
Load  "dri"
Load  "extmod"
Load  "freetype"
Load  "glx"
Load  "int10"
Load  "type1"
Load  "vbe"
#      Load  "GLcore"
EndSection


Section "InputDevice"
Per usare il filesystem ReiserFS è necessario il pacchetto ''reiserfsprogs''. Per scaricarlo e installarlo da soli l'indirizzo è: http://www.nemesys.com/download.html.
Identifier  "Keyboard"
Driver      "kbd"
Option     "CoreKeyboard"
Option     "XkbRules" "xorg"
Option     "XkbModel" "pc105"
Option     "XkbLayout" "it"
EndSection


Section "InputDevice"
La versione più vecchia di ''reiserfsprogs'' funzionante con il kernel 2.6.18 è la 3.6.3; il comando per controllare quale versione è installata nel sistema è:
Identifier  "Mouse"
Driver      "mouse"
Option     "CorePointer"
Option     "Device" "/dev/input/mice"
Option     "Protocol" "ExplorerPS/2"
Option     "Emulate3Buttons" "true"
EndSection


Section "InputDevice"
<pre>$ reiserfsck -V</pre>
Identifier  "Touchpad"
Driver      "synaptics"
Option     "Device" "/dev/psaux"
Option     "Protocol" "auto-dev"
Option     "LeftEdge" "1700"
Option     "RightEdge" "5300"
Option     "TopEdge" "1700"
Option     "BottomEdge" "4200"
Option     "FingerLow" "25"
Option     "FingerHigh" "30"
Option     "MaxTapTime" "180"
Option     "MaxTapMove" "220"
Option     "VertScrollDelta" "100"
Option     "MinSpeed" "0.10"
Option     "MaxSpeed" "0.30"
Option     "AccelFactor" "0.0150"
Option     "SHMConfig" "on"
        Option      "AlwaysCore" "true"
EndSection


Section "Monitor"
==='''XFS'''===
Identifier  "aticonfig-Monitor[0]"
HorizSync    30.0 - 70.0
VertRefresh  50.0 - 100.0
Option     "VendorName" "ATI Proprietary Driver"
Option     "ModelName" "Generic Autodetecting Monitor"
Option     "DPMS" "true"
EndSection


Section "Monitor"
Per usare il filesystem XFS di SGI è necessario avere il pacchetto ''xfsprogs''; è possibile scaricare il pacchetto da installare all'indirizzo: http://oss.sgi.com/project/xfs.
Identifier  "aticonfig-Monitor[1]"
Option     "DPMS" "true"
EndSection


Section "Device"
La release più vecchia di ''xfsprogs'' compatibile con il kernel 2.6.18 è la 2.6.0; per verificare quale versione è installata nel sistema si utilizza:
Identifier  "aticonfig-Device[0]"
Driver      "fglrx"
Option     "VideoOverlay" "on"
Option     "OpenGLOverlay" "off"
Option     "DesktopSetup" "horizontal,reverse"
BusID      "PCI:1:0:0"
EndSection


Section "Screen"
<pre>$ xfs_db -V</pre>
Identifier "aticonfig-Screen[0]"
Device    "aticonfig-Device[0]"
Monitor    "aticonfig-Monitor[0]"
DefaultDepth    24
SubSection "Display"
Viewport  0 0
Depth    24
Modes    "1280x800" "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
EndSection


Section "DRI"
==='''Quota'''===
Mode        0666
EndSection


### End Of File ###
Per utilizzare le quote come funzionalità del kernel è necessario avere installato il pacchetto ''quota-tools'';* {{Box|To do|nota a piè di pagina: scoprire come si fa}} Questo pacchetto contiene applicazioni che permettono di fissare le quote di filesystem a disposizione di ogni utente, forniscono statistiche sull'uso delle quote dei vari utenti e diramano degli avvertimenti quando questi stanno per esaurire la loro quota di filesystem.
</pre>


== Alcuni Test ==
Per scaricare e installare questo pacchetto da soli l'indirizzo è: http://sourceforge.net/projects/quota. La versione più vecchia utilizzabile con il kernel 2.6.18 è la 3.0.9; è possibile visualizzare la versione installata con il comando:


Per verificare se abbiamo installato tutto correttamente:
<pre>$ quota -V</pre>
<pre>$ fglrxinfo</pre>
dovrebbe dare un output simile a questo:
<pre>display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: MOBILITY RADEON 9700 Generic
OpenGL version string: 2.0.5879 (8.26.18)</pre>
Se al posto di ATI compare Mesa, c'� qualcosa che non va. L'installazione non � andata a buon fine.


Per testare l'accelerazione:
==='''NFS'''===
<pre>$ fgl_glxgears</pre>
Dovrebbe comparire un cubo rotante con sulle sei faccie degli ingranaggi rotanti e, sul terminale la conta dei frame:
<pre>Using GLX_SGIX_pbuffer
1610 frames in 5.0 seconds = 322.000 FPS
1640 frames in 5.0 seconds = 328.000 FPS
2093 frames in 5.0 seconds = 418.600 FPS</pre>
Se invece compaiono 4-5 righe di errori, c'� qualcosa che non va. L'installazione non � andata a buon fine. Ritenta, forse sarai pi� fortunat*.


Per testare l'accelerazione � possibile utilizzare anche i tools di Mesa:
Per utilizzare correttamente il filesystem NFS è necessario il pacchetto ''nfs-utils''. ** {{Box|To do|nota a piè di pagina: scoprire come si fa}} Questo pacchetto contiene dei programmi con cui è possibile montare delle partizioni NFS come client e far girare un server NFS.
<pre># apt-get install mesa-utils
$ glxgears -printfps</pre>
Appaiono tre ingranaggi rotanti e la conta dei fotogrammi:
<pre>14045 frames in 5.0 seconds = 2808.862 FPS
14115 frames in 5.0 seconds = 2822.858 FPS
14196 frames in 5.0 seconds = 2839.177 FPS</pre>


==File di log==
L'indirizzo da cui prelevare questo pacchetto per installarlo da soli è: http://nfs.sf.net.


l file di log principale � '''<tt>/var/log/Xorg.0.log</tt>''' e seguenti. Da spulciare, analizare, bruciare, supplicare. Insomma qui c'� di tutto di pi�. Ma a volte si pu� anche non trovare nulla di anomalo e magari <tt>fgl_glxgears</tt> non funziona lo stesso. 8�(
La versione più vecchia funzionante con il kernel 2.6.18 è la 1.0.5; il comando per determinare la versione installata è:


Se abbiamo installato i driver con l'installer Ati, esiste anche questo piccolo log:  <tt>/usr/share/fglrx/fglrx-install.log</tt>
<pre>$ showmount --version</pre>


== Tips and Tricks ==
=='''Altri strumenti'''==


* Una cosa importante, ma che resta comunque strana, � scrivere, in <tt>/etc/X11/xorg.conf</tt>, i moduli <tt>dri</tt>, <tt>glx</tt> e <tt>GLcore</tt>, in questo ordine. Se ad esempio si mette <tt>GLcore</tt> per primo, l'accelerazione non andr� e il log <tt>/var/log/Xorg.0.log</tt> riporter� una serie di errori, tra cui warning sulla libreria <tt>/usr/lib/xorg/modules/extensions/libGLcore.so</tt> e  un errore verso la fine, tristemente incorniciato. Questo errore non so se sia circoscritto alla mia configurazione o se sia un cosa generale. L'unica cosa � fare un po' di test.  
Ci sono pochi altri programmi che sono strettamente legati alla versione del kernel. Di solito questi programmi non sono necessari per far funzionare il kernel, ma rendono possibile l'accesso a tipi di hardware e di funzioni differenti.
* A volte si ottengono risultati migliori installando i driver con '''X non avviato'''.
* Se i driver sono molto recenti il modulo <tt>GLcore</tt> non bisognerebbe inserirlo in <tt>/etc/X11/xorg.conf</tt> : viene caricato automaticamente.
* Aggiornando le librerie Mesa (<tt>libgl1-mesa-dri</tt> oppure <tt>libgl1-mesa-glx</tt> ad esempio), ahim�, pu� capitare che l'accelerazione sparisca all'improvviso. L'unica cosa da fare probabilmente � disinstallare i driver e installarli di nuovo.
* Per quanto riguarda le trasparenze di KDE, credo non siano supportate a livello hardware. Io non sono riuscito ad attivarle, infatti se aggiungo a <tt>/etc/X11/xorg.conf</tt> la sezione:
<pre>Section "Extensions"
Option "Composite" "Enable"
EndSection</pre>
l'accelerazione 3D non viene caricata.


----
==='''udev'''===
 
''udev'' è un programma che permette a Linux di fornire uno schema persistemte di attribuzione dei nomi dei device nella directory ''/dev''. Inoltre fornisce una ''/dev'' dinamica, molto simile a quella fornita dal più vecchio (ed ora non più utilizzato) filesystem ''devfs''. Quasi tutte le distribuzioni Linux usano ''udev'' per gestire la directory ''/dev'', per cui risulta necessario per eseguire correttamente il boot del sistema.
 
Sfortunatamente ''udev'' si appoggia alla struttura della directory ''/sys'', che è nota per cambiare continuamente con le release del kernel. Alcuni di questi cambiamenti in passato sono stati responsabili del malfunzionamento di ''udev'', cosicché il sistema non era più in grado di fare il boot correttamente. Se ''udev'' non funziona correttamente nonostante abbiate l'ultima versione raccomandata per il vostro kernel, contattate gli sviluppatori tramite la mailing list [mailto:linux-hotplug-devel@list.sourceforge.net].
 
&Egrave; fortemente consigliato utilizzare l'ultima release di ''udev'' fornita con la vostra distribuzione, dato che è profondamente legata al processo di boot specifico della distribuzione stessa. In ogni caso, chi volesse aggiornare ''udev'' per conto proprio può trovarlo all'indirizzo: http:www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html.
 
La versione più vecchia di ''udev'' funzionante con il kernel 2.6.18 è la 0.81; è consigliabile usare la versione più recente, in quanto funziona meglio con i nuovi kernel, a causa del modo in cui ''udev'' e il kernel comunicano tra di loro.
 
Per conoscere quale versione di udev è installata nel sistema il comando è:
 
<pre>$ udevinfo -V</pre>
 
==='''Strumenti di analisi dei processi'''===
 
Il pacchetto ''procps'' contiene i programmi di uso comune ''ps'' e ''top'', come anche molti altri strumenti per gestire e tenere sotto controllo i processi in esecuzione nel sistema.
Se preferite scaricare ed installare da soli questo pacchetto potete trovarlo all'indirizzo
http://procps.sourceforge.net.
La versione 3.2.0 è la più vecchia compatibile con il kernel 2.6.18; per determinare quale versione è installata si usa il comando:
 
<pre>$ ps --version</pre>
 
==='''Strumenti per periferiche PCMCIA'''===
 
Per poter utilizzare correttamente le periferiche PCMCIA è necessario un programma a livello utente che permetta di configurarle. Per i kernel più vecchi questo programma si chiamava ''pcmcia-cs'', ma è stato sostituito con un sistema più semplice chiamato ''pcmciautils''. Se volete utilizzare periferiche PCMCIA dovete avere installato questo pacchetto.
 
Se preferite scaricare ed installare da soli questo pacchetto potete trovarlo all'indirizzo ftp://ftp.kernel.org/pub/utils/kernel/pcmcia.
 
La versione più vecchia di ''pcmciautils'' funzionante con il kernel 2.6.18 è la 004, ma è consigliabile installare la versione più recente, per poter sfruttare tutte le nuove funzioni del sottosistema PCMCIA, come ad esempio la possibilità di caricare automaticamente i driver quando viene rilevata una nuova periferica. Il comando per scoprire quale versione di pcmciautils è installata è:
 
<pre>$ pccardctl -V</pre>


Autore: [[User:rasca|rasca]] 09:04, 17 July 2006 (CEST)


Ampliato da: [[Utente:Superflieriam|Superflieriam]]
----
This is an indipendent translation of the book [http://www.kroah.com/lkn/ Linux Kernel in a Nutshell] by [http://www.kroah.com/log/ Greg Kroah-Hartman]. This translation (like the original work) is available under the terms of [http://creativecommons.org/licenses/by-sa/2.5/ Creative Commons Attribution-ShareAlike 2.5].
----


[[Categoria:Hardware]]
[http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/ch02.pdf ''Capitolo originale'']
[[Categoria:Desktop]]
[[Categoria:Kernel]]
[[Categoria:Kernel]]

Versione delle 18:09, 22 ago 2007

Torna all'indice: Linux Kernel in a Nutshell

Questo capitolo descrive i programmi necessari per configurare un kernel, compilarlo e fare il boot con successo. È utile consultare il file Documentation/Changes per verificare esattamente quale sia la versione richiesta di ogni programma descritto. Qui vengono riportate le versioni dei programmi che funzionano con il kernel 2.6.18, su cui si basa la trattazione. Chi sta usando un kernel diverso verifichi di avere installate le versioni richieste, come riportato nel file sopra specificato, altrimenti qualcosa potrebbe non funzionare correttamente e potrebbe essere estremamente difficile capire cosa è andato nel modo sbagliato.


Strumenti per compilare il kernel

La maggior parte delle distribuzioni prevede la possibilità di installare una raccolta di pacchetti per lavorare con il kernel. Qualora la distribuzione offra questa possibilità è consigliabile sfruttarla, piuttosto che tentare di rintracciare ogni singola applicazione necessaria allo scopo.

Per compilare un kernel servono solo tre pacchetti: un compilatore, un linker e un'utility make. Questa sezione descrive il contenuto di ognuno di questi pacchetti.

Compilatore

Il kernel Linux è scritto in linguaggio C, con alcune piccole sezioni scritte in assembly. Per compilare un kernel è necessario utilizzare il compilatore per C gcc. La maggior parte delle distribuzioni comprendono un pacchetto di nome gcc che dovrebbe essere installato. Se volete scaricare il compilatore e compilarlo da soli, potete trovarlo all'indirizzo http://gcc.gnu.org .

Per quanto concerne la release 2.6.18 del kernel, la versione 3.2 di gcc è la più vecchia tra quelle che possono compilare correttamente un kernel funzionante. Occorre fare attenzione che utilizzare l'ultima versione di gcc non è sempre una buona idea. Alcune delle versioni più recenti non compilano correttamente il kernel, quindi, a meno che non si voglia aiutare nel lavoro di debug del compilatore, ne è sconsigliato l'utilizzo.

Per scoprire quale versione di gcc avete installata usate il seguente comando:

$ gcc --version

Linker

Il compilatore C, gcc, non compie il lavoro di compilazione interamente da solo, ma ha bisogno di alcuni strumenti, chiamati binutils, per effettuare il collegamento (linking) e l'assemblaggio dei file sorgente. Il pacchetto binutils contiene anche altre utili applicazioni che permettono di intervenire sui file oggetto (object files, prodotti dal compilatore ma non ancora collegati, dal linker, alle librerie e/o ad altri file oggetto necessari per l'esecuzione, N.d.T.) in molti modi, ad esempio per vedere il contenuto di una libreria.

binutils si trova di solito all'interno di un pacchetto di nome... binutils in ogni distribuzione. Se volete scaricarlo e installarlo da soli, potete trovarlo all'indirizzo http://www.gnu.org/software/binutils .

La versione più vecchia di binutils che può essere utilizzata per collegare il kernel 2.6.18 è la 2.12. Per scoprire quale versione di binutils avete installata nel vostro sistema eseguite il comando seguente:

$ ld -v

Make

make è uno strumento che cerca nei sorgenti del kernel quali file devono essere compilati e successivamente chiama il compilatore e gli altri strumenti necessari per costruire il kernel. Il kernel necessita della versione GNU di make, che solitamente si trova in ogni distribuzione in un pacchetto chiamato make.

Se volete scaricare e installare make da soli potete trovarlo all'indirizzo: http://www.gnu.org/software/make .

La release più vecchia di make che può essere utilizzata con un kernel 2.6.18 è la 3.79. Vi consiglio di installare la versione stabile più recente, perché le versioni più recenti lavorano più velocemente nel processare i file di compilazione. Per verificare quale versione di make avete installata usate il comando:

$ make  --version

Strumenti per utilizzare il kernel

Anche se solitamente la versione del kernel che sta funzionando in un sistema non influisce su alcuna applicazione a livello utente, ci sono alcuni programmi per cui invece è importante. Questa sezione descrive alcuni strumenti che probabilmente sono già installati nel vostro sistema Linux: se aggiornate il kernel ad una versione diversa da quella inclusa nella vostra distribuzione, potrebbe essere necessario aggiornare anche alcuni di questi pacchetti, per permettere al sistema di funzionare correttamente.

util-linux

Il pacchetto util-linux è una raccolta di piccole utilità che assolvono ad un'ampia gamma di compiti; la maggior parte di queste utilità si occupa del montaggio e della creazione di partizioni su disco e della gestione dell'orologio di sistema.

Se volete scaricare ed installare questo pacchetto da soli lo trovate al seguente indirizzo: http://www.kernel.org/pub/linux/utils/util-linux .

La versione più vecchia di util-linux compatibile con il kernel 2.6.18 è la 2.10. È consigliabile installare la più recente versione disponibile di questo pacchetto, perché le ultime versioni supportano le nuove caratteristiche implementate nel kernel. I bind mounts sono un esempio di un'opzione inclusa nei kernel più nuovi, che necessita della versione più recente di util-linux per poter funzionare correttamente.

Per scoprire quale versione di util-linux avete installata nel vostro sistema usate il seguente comando:

$ fdformat --version

module-init-tools

Il pacchetto module-init-tools è necessario per poter utilizzare i moduli del kernel. Un modulo del kernel è un pezzetto di codice caricabile che può essere aggiunto o rimosso dal kernel anche mentre questo sta girando. È comodo compilare i driver dei dispositivi come moduli per poter caricare solo quelli relativi allo hardware presente nel sistema. Tutte le distribuzioni di Linux usano i moduli per poter caricare solo i driver necessari al sistema in base allo hardware presente, invece di essere costretti a costruire tutti i possibili driver e opzioni del kernel in un unico blocco. L'uso dei moduli permette di risparmiare memoria, caricando solo il codice necessario per controllare correttamente la macchina.

Il processo di caricamento dei moduli ha subito una revisione radicale nella versione 2.6 del kernel. Il linker per i moduli (il codice che si occupa di risolvere tutti i simboli e capire come associare i pezzi di codice in memoria) adesso è compilato all'interno del kernel, e questo permette di avere degli strumenti a livello userspace molto leggeri. Le distribuzioni più vecchie hanno un pacchetto che si chiama modutils che non funziona correttamente con il kernel 2.6. Il pacchetto module-init-tools è quello di cui avete bisogno per lavorare correttamente con i moduli di kernel 2.6.

Chi volesse scaricare e installare da solo questo pacchetto, può trovarlo all'indirizzo: http://www.kernel.org/pub/linux/utils/kernel/module-init-tools .

La versione più vecchia di module-init-tools compatibile con il kernel 2.6.18 è la 0.9.10. Si raccomanda di installare l'ultima release disponibile di module-init-tools, in quanto permette di utilizzare alcune caratteristiche nuove del kernel. Ad esempio, la possibilità di creare una blacklist dei moduli che non si vuole vengano automaticamente caricati da udev è una delle opzioni che sono presenti solo nelle versioni più recenti di module-init-tools. Per scoprire quale versione avete installata nel vostro sistema usate il comando:

$ depmod -V

Strumenti specifici per i filesystem

Per creare, formattare e riparare le partizioni dei dischi è necessario un ampio spettro di strumenti specifici per i vari filesystem. Il pacchetto util-linux ne contiene alcuni, ma alcuni dei più popolari filesystem hanno dei pacchetti separati che contengono le utilità necessarie.

ext2/ext3/ext4

I filesystem ext3 e quello in fase di sviluppo ext4 sono evoluzioni dell' ext2 e possono essere gestiti con gli stessi strumenti; la versione più recente di qualunque applicazione basata su ext2 può essere impiegata anche sugli altri due filesystem.

Per utilizzare questi filesystem dovete avere il pacchetto e2fsprogs; l'indirizzo a cui trovarlo per scaricarlo e installarlo da soli è: http://e2fsprogs.sourceforge.net.

La versione più vecchia di e2fsprogs funzionante con il kernel 2.6.18 è la 1.29; è altamente consigliato utilizzare la release più recente per sfruttare al meglio le nuove caratteristiche dei filesystem ext3 ed ext4.

Per scoprire quale versione di e2fsprogs è installata nel vostro sistema usate il comando:

$ tune2fs

JFS

Per usare il filesystem JFS di IBM è necessario avere il pacchetto jfsutils; se volete scaricarlo e installarlo da soli lo trovate all'indirizzo: http://jfs.sourceforge.net.

La versione più vecchia di jfsutils utilizzabile correttamente con il kernel 2.6.18 è la 1.1.3; per verificare quale versione avete installata lanciate il comando:

$ fsck.jfs -V

ReiserFS

Per usare il filesystem ReiserFS è necessario il pacchetto reiserfsprogs. Per scaricarlo e installarlo da soli l'indirizzo è: http://www.nemesys.com/download.html.

La versione più vecchia di reiserfsprogs funzionante con il kernel 2.6.18 è la 3.6.3; il comando per controllare quale versione è installata nel sistema è:

$ reiserfsck -V

XFS

Per usare il filesystem XFS di SGI è necessario avere il pacchetto xfsprogs; è possibile scaricare il pacchetto da installare all'indirizzo: http://oss.sgi.com/project/xfs.

La release più vecchia di xfsprogs compatibile con il kernel 2.6.18 è la 2.6.0; per verificare quale versione è installata nel sistema si utilizza:

$ xfs_db -V

Quota

Per utilizzare le quote come funzionalità del kernel è necessario avere installato il pacchetto quota-tools;*

Info.png To do
nota a piè di pagina: scoprire come si fa
Questo pacchetto contiene applicazioni che permettono di fissare le quote di filesystem a disposizione di ogni utente, forniscono statistiche sull'uso delle quote dei vari utenti e diramano degli avvertimenti quando questi stanno per esaurire la loro quota di filesystem.

Per scaricare e installare questo pacchetto da soli l'indirizzo è: http://sourceforge.net/projects/quota. La versione più vecchia utilizzabile con il kernel 2.6.18 è la 3.0.9; è possibile visualizzare la versione installata con il comando:

$ quota -V

NFS

Per utilizzare correttamente il filesystem NFS è necessario il pacchetto nfs-utils. **

Info.png To do
nota a piè di pagina: scoprire come si fa
Questo pacchetto contiene dei programmi con cui è possibile montare delle partizioni NFS come client e far girare un server NFS.

L'indirizzo da cui prelevare questo pacchetto per installarlo da soli è: http://nfs.sf.net.

La versione più vecchia funzionante con il kernel 2.6.18 è la 1.0.5; il comando per determinare la versione installata è:

$ showmount --version

Altri strumenti

Ci sono pochi altri programmi che sono strettamente legati alla versione del kernel. Di solito questi programmi non sono necessari per far funzionare il kernel, ma rendono possibile l'accesso a tipi di hardware e di funzioni differenti.

udev

udev è un programma che permette a Linux di fornire uno schema persistemte di attribuzione dei nomi dei device nella directory /dev. Inoltre fornisce una /dev dinamica, molto simile a quella fornita dal più vecchio (ed ora non più utilizzato) filesystem devfs. Quasi tutte le distribuzioni Linux usano udev per gestire la directory /dev, per cui risulta necessario per eseguire correttamente il boot del sistema.

Sfortunatamente udev si appoggia alla struttura della directory /sys, che è nota per cambiare continuamente con le release del kernel. Alcuni di questi cambiamenti in passato sono stati responsabili del malfunzionamento di udev, cosicché il sistema non era più in grado di fare il boot correttamente. Se udev non funziona correttamente nonostante abbiate l'ultima versione raccomandata per il vostro kernel, contattate gli sviluppatori tramite la mailing list [1].

È fortemente consigliato utilizzare l'ultima release di udev fornita con la vostra distribuzione, dato che è profondamente legata al processo di boot specifico della distribuzione stessa. In ogni caso, chi volesse aggiornare udev per conto proprio può trovarlo all'indirizzo: http:www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html.

La versione più vecchia di udev funzionante con il kernel 2.6.18 è la 0.81; è consigliabile usare la versione più recente, in quanto funziona meglio con i nuovi kernel, a causa del modo in cui udev e il kernel comunicano tra di loro.

Per conoscere quale versione di udev è installata nel sistema il comando è:

$ udevinfo -V

Strumenti di analisi dei processi

Il pacchetto procps contiene i programmi di uso comune ps e top, come anche molti altri strumenti per gestire e tenere sotto controllo i processi in esecuzione nel sistema. Se preferite scaricare ed installare da soli questo pacchetto potete trovarlo all'indirizzo http://procps.sourceforge.net. La versione 3.2.0 è la più vecchia compatibile con il kernel 2.6.18; per determinare quale versione è installata si usa il comando:

$ ps --version

Strumenti per periferiche PCMCIA

Per poter utilizzare correttamente le periferiche PCMCIA è necessario un programma a livello utente che permetta di configurarle. Per i kernel più vecchi questo programma si chiamava pcmcia-cs, ma è stato sostituito con un sistema più semplice chiamato pcmciautils. Se volete utilizzare periferiche PCMCIA dovete avere installato questo pacchetto.

Se preferite scaricare ed installare da soli questo pacchetto potete trovarlo all'indirizzo ftp://ftp.kernel.org/pub/utils/kernel/pcmcia.

La versione più vecchia di pcmciautils funzionante con il kernel 2.6.18 è la 004, ma è consigliabile installare la versione più recente, per poter sfruttare tutte le nuove funzioni del sottosistema PCMCIA, come ad esempio la possibilità di caricare automaticamente i driver quando viene rilevata una nuova periferica. Il comando per scoprire quale versione di pcmciautils è installata è:

$ pccardctl -V



This is an indipendent translation of the book Linux Kernel in a Nutshell by Greg Kroah-Hartman. This translation (like the original work) is available under the terms of Creative Commons Attribution-ShareAlike 2.5.


Capitolo originale