Appunti su Gentoo Linux.
Il server grafico X

Prima dell'installazione

Preparare il kernel.

Device Drivers --->
  Input device support --->
  <*>  Event interface


# SETTAGGI SPECIFICI PER SCHEDA NVIDIA

Loadable module support --->
  [*] Enable loadable module support
  
  
Processor and Features --->
  [*] MTRR (Memory Type Range Register) support
  
  
Device Drivers --->
  Graphics Support --->
    [ ] /dev/agpgart (AGP Support) --->
  
  
Device Drivers --->
  Graphics Support --->
    <*> Support for frame buffer devices --->
        < >   nVidia Framebuffer Support
        < >   nVidia Riva support
        <*>   Userspace VESA VGA graphics support

Controllate che il symlink del kernel punti al giusto sorgente dopodiché ricompilate e riavviate il pc con il nuovo kernel.

NOTA: ogni volta che si installa un nuovo kernel i driver nvidia devono essere reinstallati. Potete farlo sia a mano che usando l'utility module-rebuild che ricompila tutti i moduli esterni al kernel che ne hanno bisogno.

NOTA: ogni volta che aggiornate i driver nvidia, senza aggiornare il kernel, affinché tutto funzioni dovete ricaricare nel kernel il nuovo modulo nvidia. Se non lo fate otterrete un errore di mismatch tra la versione caricata dal kernel e quella installata. Quindi o prima o dopo l'installazione dei nuovi driver nvidia, prima di rilanciare una sessione grafica, dovete dare il comando

rmmod nvidia

Quando rilancerete X, il nuovo modulo nvidia verrà caricato automaticamente.

Ora il kernel è adatto ad accettare i driver proprietari Nvidia (nvidia-drivers). Non serve installarli a mano. Bisogna passare a configurare per bene il file make.conf.

VIDEO_CARDS="nvidia"
INPUT_DEVICES="evdev"

evdev è un nuovo strato del kernel per gestire gli eventi che vengono dai driver delle periferiche. Li traduce in uno standard intermedio e vengono poi inviati al server grafico.

Controllare le use flag. Attivare xorg, nptl, X, jpeg, png, gif, udev. Use flag gtk, tiff, ecc... invece abilitarle di volta in volta?

L'installazione di xorg e la configurazione

Per installare il server grafico dare il comando (2 ore di compilazione circa)

emerge xorg-server

C'è anche l'ebuild xorg-x11 che comprende il server e altre cose, tra cui molti font, ma non è molto utile per un server.

Alla fine dell'installazione eseguire

env-update
source /etc/profile
etc-update

Caricare il modulo nvidia nel kernel (forse questo step non è necessario perché viene fatto in automatico quando il server grafico si avvia)

modprobe nvidia
lsmod
update-modules

Aggiungere gli utenti al gruppo video

Selezionare interfaccia glx di nvidia

eselect opengl set nvidia

Per vedere se tutto funziona non basta lanciare startx perché mancano le applicazioni. Quindi o prima si installa twm, xterm e xclock e poi si lancia startx oppure si installa direttamente il desktop manager scelto, nel nostro caso, xfce e si proverà a lanciare quello.

Dopo aver lanciato startx o startxfce o in generale qualcosa di grafico che faccia partire il server X, se tutto funziona abbiamo finito. Se invece qualcosa non va dobbiamo agire a mano sulla configurazione del server grafico. Esistono due modi di configurare X, la configurazione finale è data dalla somma di questi due metodi che quindi possono essere usati insieme. Il file /etc/X11/xorg.conf e la directory /etc/X11/xorg.conf.d/. Nelle prossime sezioni vedremo come avviene la configurazione.

Nel caso si usino driver proprietari come i driver Nvidia usati nel mio caso, spesso il riconoscimento automatico di tutto il sistema da parte del server grafico, non funziona. Quindi si è obbligati a mettere mano alle impostazioni del server grafico, specificando che si vuole caricare il driver nvidia per la nostra scheda video.

10_modules.conf
20_serverflags.conf
30_videocard.conf
40_monitor.conf
50_screen1.conf
60_fonts.conf
70_mouse.conf
80_keyboard.conf

Per abilitare la sequenza CTRL_ALT_BACKSPACE per killare X scrivere nel file 80_keyboard.conf

Section "InputClass"
  Identifier "keyboard"
  MatchIsKeyboard "true"
  Driver "evdev"
  Option "XkbLayout" "it"
  Option "XkbOptions" "terminate:ctrl_alt_bksp"
  #Option "XkbOptions" "grp:alt_shift_toggle,grp:switch,compose:rwin,terminate:c
EndSection

La riga importante è Option "XkbOptions" "terminate:ctrl_alt_bksp".

Le periferiche video e di input

Quali periferiche devono essere usate nel server grafico una volta veniva specificato nel file xorg.conf e doveva essere usato il driver kbd. Poi si è passati ad hal e evdev. In questo modo si abbandonava l'uso di xorg.conf e si dovevano usare le "policy": un gran casino. Con la versione 1.8 di Xorg e obbligatoriamente dalla 1.9 si è abbandonato hal e si è passati a udev. Con udev si è tornati a specificare i dispositivi di input all'interno di xorg.conf

udev è il gestore dei "device" in un sistema linux. Si occupa di creare i file di dispositivo nella direcotory /dev e di caricare i file necessari al loro funzionamento.

In realtà ora, oltre al classico xorg.conf si può usare anche la directory xorg.conf.d all'interno della quale si possono mettere tanti file di impostazione diversi che verranno caricati in ordine alfabetico.

Per specificare una tastiera diversa da quella americana (per guardare quali si hanno a disposizione guardare in /usr/share/X11/xkb/symbols.) o per impostare particolari opzioni per il mouse bisogna creare delle sezioni specifiche nel file xorg.conf oppure due file separati nella cartella xorg.conf.d.

Section "InputClass"
        Identifier "keyboard"
        Driver "evdev"
        Option "XkbLayout" "it"
        #Option "XkbVariant" "qwerty"
        #Option "XkbOptions" "grp:alt_shift_toggle,grp:switch,compose:rwin,terminate:ctrl_alt_bksp" MatchIsKeyboard "true"
EndSection

Section "InputClass"
        Identifier "mouse"
        Driver "evdev"
        MatchIsPointer "true"
EndSection

I file li potremo chiamare 10-keyboard.conf e 20-mouse.conf. Le configurazioni appena viste sono molto semplici e non si fa nessun match specifico. In pratica stiamo dicendo che tutti i mouse e tutte le tastiere (abbiamo usato solo la regola MatchIs...) hanno le stesse caratteristiche. Per avere impostazioni diverse per tastiere diverse bisogna fare un match più specifico con altre opzioni apposite (cercare guide in rete).

Per quanto riguarda le opzioni specifiche per la tastiera o il mouse, sono le stesse che si usavano con xkb (quindi basta cercare su internet xkb per sapere tutte le opzioni a disposizione). E infatti i layout di tastiera si trovano in /usr/share/X11/xkb/symbols.

Da notare infine che queste impostazioni possono anche essere regolate facilmente all'interno del vostro Desktop Manager con interfacce grafiche apposite. Le opzioni scelte saranno salvate a livello del singolo utente e non a livello globale.

I font

Font: use flag: truetype-font, type1, truetype. Installare freetype, ttf-beatstream-vera, adobe-75 e adobe-100 (installati di default). Inoltre corefonts (i font truetype microsoft). Si consiglia anche terminus-font (ottimi font unicode fissi per la console/terminale). Modificare xorg.conf in maniera opportuna per caricare questi font. (aggiungere :unscaled a 75 e a 100).

Esecuzione del server grafico

startx? Impostazioni

~/.xinitrc
variabile XSESSION
/etc/X11/xinit/xinitrc
echo XSESSION="Xfce4" > /etc/env.d/90xsession

Le sessioni disponibili sono in

/etc/X11/Sessions

Server

~/.xserverrc
/etc/X11/xinit/xserverrc

Soprattutto in un server è meglio lanciare l'interfaccia grafica manualmente con startx dopo aver settato in env.d la variabile d'ambiente XSESSION. Xfce si può far partire anche smeplicemente lanciando startxfce4 anziché startx. In questo modo non c'è neanche bisogno di settare XSESSION.

Altro

xorg.conf: logo, ram, ...

Side Band Addressing (SBA), Write ...

emerge mesa-progs (?)