Prendo spunto dal problema postato da Sergio per scrivere qualche riga riguardo la gestione della grafica su gnu/linux.
Parto iniziando dalla gestione della grafica sui sistemi windows nota ai piu', per far capire la differenza sul pinguino, i pro e i contro...
In windows l'ambiente grafico e' parte integrante del sistema operativo, gira in kernel-space e dispone di una serie di librerie di programmazione note come API.
In gnu/linux l'ambiente grafico e' separato dal kernel, gira in user-space ed e' un software come un altro. La gestione della grafica si basa sull'architettura client/server: abbiamo quindi un server grafico noto come X-windows (o semplicemente X) che offre delle librerie di basso livello per permettere ai client ("programmi") di interagire con esso: le XLib, e una sessione grafica di base: Xsession che offre solamente l'interfaccia da terminale a /dev/pts/0.
Vediamo quindi che X-windows, di per se', offre la grafica di base: la gestione delle finestre, lo sfondo, e una serie di funzioni di base racchiuse nelle XLib che fanno in modo che lo sviluppo di un programma direttamente dalle XLib risulti essere molto complesso e laborioso (di fatto le XLib offrono quasi solo semplici funzioni ideali per il 2d come 'disegna un punto', 'disegna un poligono', 'disegna un cerchio', ecc.).
SOPRA X-windows girano, come abbiamo detto, i programmi che si appoggiano alle XLibs: i fondamentali sono ambienti desktop -desktop environments (DE) o gestori di finestre piu' semplici - windows managers (WM) che "vestono" X-windows e offrono un sacco di comodita' all'utente: alcuni di questi sono KDE, Gnome, Xfce, fluxbox, blackbox, windows maker, e molti molti altri (piu' di quanti pensiate!)...
Esiste poi una serie di librerie di funzioni grafiche di livello piu' alto delle Xlib che si appoggiano su queste e semplificano la vita al programmatore facendo da tramite tra esso e le XLib: alcune di queste sono le Qt (distribuite con l'ambiente KDE per lo sviluppo di applicazioni per questo ambiente), le GTK (stessa cosa per Gnome), le SDL, le OpenGL, ecc.
Una delle principali critiche fatte a questo sistema di gestione grafica e' la maggiore pesantezza rispetto a windows: vorrei subito premettere che molto e' in funzione del DE in uso..
Tutto, cmq, sta nella grande differenza che l'ambiente grafico in windows e' in kernel-space e qui invece in user-space e sono fortemente convinto che quest'ultima soluzione sia geniale: sebbene possa essere meno veloce o fluido perche' fuori dal kernel, infatti, questo comporta un grande vantaggio parlando di sicurezza, non obbliga reboot del sistema in caso di crash dell'ambiente grafico, offre la liberta' di scelta del ambiente desktop, puo' non venire installato (ottimo per server, proxy, vecchi computer o portatili), possono venire aperti piu' display contemporaneamente, ecc... e scusate se e' poco !
Due note infine sull'avvio di X e la scelta dell'ambiente: una sessione viene avviata attraverso lo script 'startx', una sorta di front-end all'inizializzatore vero e proprio di X-windows: xinit.
Per determinare quale client far partire, startx cerca innanzitutto il file .xinitrc nella home utente e, in mancanza, legge il xinitrc di sistema. Stessa cosa vale per il server: .xserverrc locale oppure xserverrc di sistema (i files di sistema sono presente in /etc/X11/xinit/).
Il windows manager d'avvio viene definito in /etc/rc.conf impostando la variabile XSESSION con uno degli script presenti in /etc/X11/Sessions; nello stesso file si imposta la variabile DISPLAYMANAGER se si vuole utilizzare un gestore di display come xdm, kdm, gdm per gestire il login grafico (la controparte X di programmi tipo getty) (questo non ha molto senso se il runlevel non e' impostato a proposito).
Questo e' tutto...
have fun
ah, ultima cosa: sempre in /etc/X11/ si trova il file di configurazione del server che, nel caso di XOrg, si chiama xorg.conf; e' buona cosa tenerne una copia di backup di un sistema funzionante...
Parto iniziando dalla gestione della grafica sui sistemi windows nota ai piu', per far capire la differenza sul pinguino, i pro e i contro...
In windows l'ambiente grafico e' parte integrante del sistema operativo, gira in kernel-space e dispone di una serie di librerie di programmazione note come API.
In gnu/linux l'ambiente grafico e' separato dal kernel, gira in user-space ed e' un software come un altro. La gestione della grafica si basa sull'architettura client/server: abbiamo quindi un server grafico noto come X-windows (o semplicemente X) che offre delle librerie di basso livello per permettere ai client ("programmi") di interagire con esso: le XLib, e una sessione grafica di base: Xsession che offre solamente l'interfaccia da terminale a /dev/pts/0.
Vediamo quindi che X-windows, di per se', offre la grafica di base: la gestione delle finestre, lo sfondo, e una serie di funzioni di base racchiuse nelle XLib che fanno in modo che lo sviluppo di un programma direttamente dalle XLib risulti essere molto complesso e laborioso (di fatto le XLib offrono quasi solo semplici funzioni ideali per il 2d come 'disegna un punto', 'disegna un poligono', 'disegna un cerchio', ecc.).
SOPRA X-windows girano, come abbiamo detto, i programmi che si appoggiano alle XLibs: i fondamentali sono ambienti desktop -desktop environments (DE) o gestori di finestre piu' semplici - windows managers (WM) che "vestono" X-windows e offrono un sacco di comodita' all'utente: alcuni di questi sono KDE, Gnome, Xfce, fluxbox, blackbox, windows maker, e molti molti altri (piu' di quanti pensiate!)...
Esiste poi una serie di librerie di funzioni grafiche di livello piu' alto delle Xlib che si appoggiano su queste e semplificano la vita al programmatore facendo da tramite tra esso e le XLib: alcune di queste sono le Qt (distribuite con l'ambiente KDE per lo sviluppo di applicazioni per questo ambiente), le GTK (stessa cosa per Gnome), le SDL, le OpenGL, ecc.
Una delle principali critiche fatte a questo sistema di gestione grafica e' la maggiore pesantezza rispetto a windows: vorrei subito premettere che molto e' in funzione del DE in uso..
Tutto, cmq, sta nella grande differenza che l'ambiente grafico in windows e' in kernel-space e qui invece in user-space e sono fortemente convinto che quest'ultima soluzione sia geniale: sebbene possa essere meno veloce o fluido perche' fuori dal kernel, infatti, questo comporta un grande vantaggio parlando di sicurezza, non obbliga reboot del sistema in caso di crash dell'ambiente grafico, offre la liberta' di scelta del ambiente desktop, puo' non venire installato (ottimo per server, proxy, vecchi computer o portatili), possono venire aperti piu' display contemporaneamente, ecc... e scusate se e' poco !
Due note infine sull'avvio di X e la scelta dell'ambiente: una sessione viene avviata attraverso lo script 'startx', una sorta di front-end all'inizializzatore vero e proprio di X-windows: xinit.
Per determinare quale client far partire, startx cerca innanzitutto il file .xinitrc nella home utente e, in mancanza, legge il xinitrc di sistema. Stessa cosa vale per il server: .xserverrc locale oppure xserverrc di sistema (i files di sistema sono presente in /etc/X11/xinit/).
Il windows manager d'avvio viene definito in /etc/rc.conf impostando la variabile XSESSION con uno degli script presenti in /etc/X11/Sessions; nello stesso file si imposta la variabile DISPLAYMANAGER se si vuole utilizzare un gestore di display come xdm, kdm, gdm per gestire il login grafico (la controparte X di programmi tipo getty) (questo non ha molto senso se il runlevel non e' impostato a proposito).
Questo e' tutto...
have fun
ah, ultima cosa: sempre in /etc/X11/ si trova il file di configurazione del server che, nel caso di XOrg, si chiama xorg.conf; e' buona cosa tenerne una copia di backup di un sistema funzionante...
Commenta