Difference between revisions of "Uvesafb (Italiano)"

From ArchWiki
Jump to: navigation, search
(Created page with 'Uvesafb è un nuovo [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/fb/framebuffer.txt;hb=HEAD framebuffer driver] per i sistemi Linux, e…')
 
(8 intermediate revisions by 7 users not shown)
Line 1: Line 1:
Uvesafb è un nuovo [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/fb/framebuffer.txt;hb=HEAD framebuffer driver] per i sistemi Linux, ed è entrato nel kernel vanilla dalla versione 2.6.24. Questo ha molte altre funzionalità rispetto a vesafb, tra cui: supporto per risoluzioni personalizzate, supporto schede video con un BIOS aderente allo standard VBE 2.0.
+
[[Category:Laptops (Italiano)]]
 +
[[en:Uvesafb]]
 +
[[zh-CN:Uvesafb]]
 +
[[Category:Eye candy (Italiano)]]
  
== Il demone di virtualizzazione ==
+
A differenza di altri driver framebuffer, {{Ic|uvesafb}} ha bisogno di un demone di virtualizzazione userspace, chiamato {{Ic|v86d}}. Può sembrare sciocco emulare il codice x86 su x86, ma questo è importante se si vuole utilizzare il codice framebuffer su altre architetture (in particolare quelli non-x86).  Un nuovo driver per il framebuffer è stato aggiunto al kernel 2.6.24. Ha molte più funzioni rispetto al {{Ic|vesafb}} standard, tra cui:
 +
# Tranciatura corretta e sospensione hardware dopo il ritardo.
 +
# Il supporto per risoluzioni personalizzate come nel BIOS di sistema.
 +
Dovrebbe supportare l'hardware almeno quanto {{Ic|vesafb}}.
  
Uvesafb contrasta con gli altri framebuffer driver, e necessita di un demone di virtualizzazione in userspace, chiamato v86d. Può sembrare folle
+
==Installazione==
emulare codice x86 su una macchina x86, ma questo è importante se si vuole utilizzare il codice del framebuffer su un'altra archittetura hardware
+
Installare il pacchetto {{Ic|uvesafb}}:
(in particolare quelle non x86). Il pacchetto {{Package Official|v86d}} include un hook per initcpio (chiamato v86d), che carica il modulo uvesafb ed esegue il demone
+
# pacman -S v86d
di virtualizzazione quando richiesto. Devi aggiungere l'hook v86d nell'array HOOKS nel file {{filename| /etc/mkinitcpio.conf}}. Dovresti posizionarlo dopo l'hook
+
base e prima di keymap (nel caso utilizzassi l'hook keymap). Quindi devi rigenerare la tua initramfs con mkinitcpio (modifica il commando qui sotto a
+
seconda della tua configurazione).
+
  
# mkinitcpio -p kernel26
+
==Preparare il sistema==
 +
===Modifiche del bootloader===
 +
Rimuovere eventuali framebuffer legati ai parametri di avvio del kernel dalla configurazione del bootloader per disabilitare dal caricamento il vecchio framebuffer vesafb.
  
{{note| v86d richiede che klibc sia compilato su un kernel con incluso uvesafb. Quindi devi aggiornare klibc alla versione più recente (la versione attuale presente in core funziona).}}
+
====GRUB====
 +
Rimuovere tutti i riferimenti a {{Ic|vga<nowiki>=</nowiki>xxx}} dalle righe del kernel in {{ic|/boot/grub/menu.lst}} per consentire il corretto funzionamento di {{Ic|uvesafb}}.
  
== Rimuovere i parametri di boot del kernel ==
+
====GRUB2====
 +
#Editare {{ic|/etc/default/grub/}} commentando la riga '''GRUB_GFXPAYLOAD_LINUX=keep'''.
 +
#Rigenerare grub.cfg per mezzo dello script standard:
 +
# grub-mkconfig -o /boot/grub/grub.cfg
  
Ricorda di eliminare ogni parametro del kernel riguardante le funzionalità framebuffer non legate ad uvesafb dal file di configurazione del tuo bootloader:
+
*Disabilitare il [[KMS]] prima di avviare il sistema in framebuffer. In caso contrario, si otterrà una schermata nera, che non darà altra scelta se non quella di riavviare la macchina con {{Keypress|Ctrl}}+{{Keypress|Alt}}+{{Keypress|Del}}.
*Il parametro '''vga=<foo>''' forzerà il caricamento del vecchio vesafb;
+
Per le schede [[Intel]], aggiungere {{Ic|<nowiki>i915.modeset=0</nowiki>}} alla relativa voce in [[GRUB]] per disabilitare KMS.
*Il parametro '''video=<foo>''' non dovrebbe essere usato quando uvesfb è compilato come modulo (come nel kernel di default di Arch Linux).
+
  
== Opzioni per uvesafb ==
+
===Aggiungere un hook v86d===
 +
Aggiungere l'hook v86d alla stringa {{Ic|HOOKS}} in {{ic|/etc/mkinitcpio.conf}} per consentire il caricamento di {{Ic|uvesafb}} al boot.
 +
HOOKS="base udev v86d ..."
  
Le opzioni per uvesafb possono essere impostate nel file {{filename|/etc/modprobe.d/uvesafb.conf}} o più in generale in {{filename|/etc/modprobe.d/modprobe.conf}}. Il file di
+
==Configurare uvesafb==
default fornito nel pacchetto v86d evidenzia la sintassi da utilizzare e ti dice dove reperire ulteriori informazioni su uvesafb:
+
===Definire una risoluzione===
 +
Le opzioni per {{Ic|uvesafb}} possono essere impostate nel file {{ic|/etc/modprobe.d/uvesafb.conf}} che è il file di default installato dal pacchetto {{Pkg|v86d}}.
  
 
  # This file sets the parameters for uvesafb module.
 
  # This file sets the parameters for uvesafb module.
Line 34: Line 45:
 
  options uvesafb mode=1280x800-32 scroll=ywrap
 
  options uvesafb mode=1280x800-32 scroll=ywrap
  
Dal kernel 2.6.27 in su devi scrivere:
+
===Rigenerare le immagini initramfs===
 +
Le modifiche vengono passate mediante l'avvio nelle immagini initramfs, così, bisognerà rigenerare le immagini initramfs per il/i kernel. Nell'esempio seguente si presuppone che il kernel sia quello di default di Arch Linux:
 +
# mkinitcpio -p linux
  
...
+
===Riavvio===
options uvesafb mode_option=1280x800-32 scroll=ywrap
+
Riavviare il sistema per vedere i cambiamenti.
  
== Uvesafb compilato nel kernel ==
+
==Liste di risoluzioni==
 +
Un elenco delle risoluzioni possibili può essere generato tramite il seguente comando:
 +
$ cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes
  
Se utilizzi un kernel custom, puoi scegliere di compilare uvesafb all'interno del kernel ed eseguire v86d più tardi nel processo di avvio, per
+
Gli utenti possono modificare {{ic|/etc/modprobe.d/uvesafb.conf}} con una qualsiasi voce restituita.
esempio da {{filename|/etc/rc.local}}. In questo caso, le opzioni per uvesafb possono essere passate come parametri di avvio al kernel nel formato
+
'''video=uvesafb:<options>'''. Nota: Questa soluzione non va bene nel caso tu voglia combinare uvesafb con 915resolution com suggerito più avanti.
+
  
== Homepage di Uvesafb ==
+
Può essere usato uno qualsiasi dei seguenti comandi per visualizzare la risoluzione del framebuffer corrente come controprova che le impostazioni sono corrette:
 +
$ cat /sys/devices/virtual/graphics/fbcon/subsystem/fb0/virtual_size
  
L'homepage di uvesafb è http://dev.gentoo.org/~spock/projects/uvesafb, dove puoi trovare informazioni più dettagliate (puoi lasciar perdere le
+
$ cat /sys/class/graphics/fb0/virtual_size
informazioni riguardanti la patch del kernel, dato che uvesafb è ora incluso nel kernel vanilla; Inoltre parte della documentazione assume che
+
uvesafb sia compilato all'interno del kernel, mentre nel kernel di Arch Linux è compilato come modulo).
+
  
== Uvesafb e 915resolution ==
+
==Uvesafb compilato nel kernel==
 +
{{Expansion}}
 +
Nel caso si utilizzi un kernel custom, si può scegliere di compilare uvesafb all'interno del kernel ed eseguire v86d più tardi nel processo di avvio, per
 +
esempio da {{ic|/etc/rc.local}}. In questo caso, le opzioni per uvesafb possono essere passate come parametri di avvio al kernel nel formato video=uvesafb:<options>. Questa soluzione non va bene nel caso si voglia combinare uvesafb con 915resolution com suggerito più avanti.
 +
 
 +
==Homepage di uvesafb==
 +
L'homepage di uvesafb è http://dev.gentoo.org/~spock/projects/uvesafb, dove si possono trovare informazioni più dettagliate (lasciar perdere le
 +
informazioni riguardanti la patch del kernel, dato che che è il file di default installata uvesafb è ora incluso nel kernel vanilla; Inoltre parte della documentazione assume che
 +
uvesafb sia compilato all'interno del kernel, mentre nel kernel di Arch Linux è compilato come modulo).
  
 +
==Uvesafb e 915resolution==
 
In questa sezione, esaminiamo uno scenario più complesso. Alcuni chipset video Intel per notebook con wide screen sono conosciuti per avere un BIOS
 
In questa sezione, esaminiamo uno scenario più complesso. Alcuni chipset video Intel per notebook con wide screen sono conosciuti per avere un BIOS
 
bacato, che non supportano la risoluzione nativa dello schermo! Per questo motivo, 915resolution è stato creato per patchare il bios all'avvio e
 
bacato, che non supportano la risoluzione nativa dello schermo! Per questo motivo, 915resolution è stato creato per patchare il bios all'avvio e
Line 58: Line 79:
 
Comunque, 915resolution può essere combinato con uvesafb in modo da ottenere un widescreen framebuffer, senza nessun bisogno di lanciare X. In questo
 
Comunque, 915resolution può essere combinato con uvesafb in modo da ottenere un widescreen framebuffer, senza nessun bisogno di lanciare X. In questo
 
caso, devi caricare uvesafb dopo aver eseguito 915resolution, in modo che uvesafb possa utlizzare la risoluzione appropriata.
 
caso, devi caricare uvesafb dopo aver eseguito 915resolution, in modo che uvesafb possa utlizzare la risoluzione appropriata.
 
+
=== 915resolution-static ===
+
===915resolution-static===
 
+
 
In questo scenario, 915resolution deve essere compilato staticamente (visto che verrà incluso nella initramfs, non può essere collegato a librerie
 
In questo scenario, 915resolution deve essere compilato staticamente (visto che verrà incluso nella initramfs, non può essere collegato a librerie
esterne). Per questo motivo non puoi utilizzare il pacchetto 915resolution presente nel repository community. E' presente in AUR il pacchetto
+
esterne). Per questo motivo non si può utilizzare il pacchetto 915resolution presente nel repository [community]. È presente su AUR il pacchetto {{AUR|915resolution-static}}. Questo compila 915resolution staticamente e fornisce un hook 915resolution, in modo che si possa eseguire 915resolution prima di caricare uvesafb ed ottenere una risoluzione personalizzata. Installare dunque 915resolution-static via makepkg e [[pacman]].
[http://aur.archlinux.org/packages.php?ID=15486 915resolution-static]. Questo compila 915resolution staticamente e fornisce un hook 915resolution, in modo che tu possa eseguire 915resolution prima di caricare uvesafb ed ottenere una risoluzione personalizzata. Installa dunque 915resolution-static via makepkg e pacman o per mezzo di yaourt.
+
 
+
=== La risoluzione ===
+
  
 +
===La risoluzione===
 
Per ottenere la risoluzione da te scelta, devi configurare l'hook 915resolution in modo da definire la modalità del BIOS che vuoi rimpiazzare. Puoi
 
Per ottenere la risoluzione da te scelta, devi configurare l'hook 915resolution in modo da definire la modalità del BIOS che vuoi rimpiazzare. Puoi
ottenere aiuto su tutte le opzioni per 915resolution con
+
ottenere aiuto su tutte le opzioni per 915resolution con:
  
  # 915resolution -h
+
  915resolution -h
  
Quindi edita il file {{filename | /lib/initcpio/hooks/915resolution}} e modifica le opzioni necessarie.
+
Quindi editare il file {{ic| /lib/initcpio/hooks/915resolution}} e modificare le opzioni necessarie.:
  
 
  run_hook ()
 
  run_hook ()
Line 81: Line 99:
 
  }
 
  }
  
Per default, 5c è il codice della modalità del BIOS da rimpiazzare. Puoi ottenere un lista delle modalità video del BIOS disponibili con il comando:
+
Per default, 5c è il codice della modalità del BIOS da rimpiazzare. Puoi ottenere un lista delle modalità video del BIOS disponibili con il comando: {{Ic|915resolution -l}}.
 +
{{Note|Si deve scegliere il codice di una modalità video di cui non si ha bisogno (nè in framebuffer nè in X), perchè 915resolution la rimpiazzerà con quella desiderata. Nell'esempio, {{Ic|1280 800}} è la nuova risoluzione scelta.}}
  
  # 915resolution -l.
+
===La stringa HOOKS===
 +
Aggiungere gli hook 915resolution e v86d (in quest'ordine) nella stringa HOOKS in {{ic|/etc/mkinitcpio.conf}}. Posizionare questi hook prima di keymap, resume e filesystems.
 +
  HOOKS="base udev 915resolution v86d ..."
  
{{note| Devi scegliere il codice di una modalità video di cui non hai bisogno (nè in framebuffer nè in X), perchè 915resolution la rimpiazzerà con
+
Sarà quindi necessario rigenerare la propria initramfs con mkinitcpio (modificare il seguente comando secondo la propria configurazione):
quella desiderata. Nell'esempio 1280x800 è la nuova risoluzione scelta. }}
+
  
=== v86d ===
+
mkinitcpio -p linux
  
Install v86d via pacman
+
==Risoluzione dei problemi==
 +
===Uvesafb non può riservare la memoria===
  
# pacman -S v86d
+
Controllare di non aver dimenticato di togliere qualche parametro del kernel{{Ic|vga<nowiki>=</nowiki>xxx}}. Questo sovrascrive il framebuffer UVESA con uno VESA standard.
  
=== Modifica /etc/modprobe.d/uvesafb.conf ===
+
===pci_root PNP0A08:00 address space collision + Uvesafb cannot reserve memory===
  
Modifica le opzioni per uvesafb in {{filename|/etc/modprobe.d/uvesafb.conf}} con la risoluzione di cui hai bisogno, per esempio:
+
Ciò si verifica su Acer Aspire One 751h con il kernel 2.6.34-ARCH; non è noto che si verifichi anche su altri sistemi. Anche senza altri framebuffer ad interferire con l'installazione, uvesafb non può riservare la regione di memoria necessaria.
  
options uvesafb mode=1280x800-32 scroll=ywrap
+
È possibile risolvere questo problema aggiungendo quanto segue ai parametri del kernel nella configurazione del bootloader.
 
+
Dal kernel 2.6.27 in su scrivi:
+
 
+
...
+
options uvesafb mode_option=1280x800-32 scroll=ywrap
+
 
+
=== Modifica degli hook ===
+
 
+
Aggiungi l'hook 915resolution nell'array HOOKS in {{filename|/etc/mkinitcpio.conf}}, e, dopo questo, l'hook v86d. Metti questi hook prima di keymap, resume e
+
filesystems.
+
 
+
HOOKS="base udev 915resolution v86d ..."
+
  
=== Conclusione ===
+
pci=nocrs
Rigenera la tua initramfs, riavvia e goditi la il tuo widescreen framebuffer.
+

Revision as of 11:32, 13 June 2012


A differenza di altri driver framebuffer, uvesafb ha bisogno di un demone di virtualizzazione userspace, chiamato v86d. Può sembrare sciocco emulare il codice x86 su x86, ma questo è importante se si vuole utilizzare il codice framebuffer su altre architetture (in particolare quelli non-x86). Un nuovo driver per il framebuffer è stato aggiunto al kernel 2.6.24. Ha molte più funzioni rispetto al vesafb standard, tra cui:

  1. Tranciatura corretta e sospensione hardware dopo il ritardo.
  2. Il supporto per risoluzioni personalizzate come nel BIOS di sistema.

Dovrebbe supportare l'hardware almeno quanto vesafb.

Installazione

Installare il pacchetto uvesafb:

# pacman -S v86d

Preparare il sistema

Modifiche del bootloader

Rimuovere eventuali framebuffer legati ai parametri di avvio del kernel dalla configurazione del bootloader per disabilitare dal caricamento il vecchio framebuffer vesafb.

GRUB

Rimuovere tutti i riferimenti a vga=xxx dalle righe del kernel in /boot/grub/menu.lst per consentire il corretto funzionamento di uvesafb.

GRUB2

  1. Editare /etc/default/grub/ commentando la riga GRUB_GFXPAYLOAD_LINUX=keep.
  2. Rigenerare grub.cfg per mezzo dello script standard:
# grub-mkconfig -o /boot/grub/grub.cfg

Per le schede Intel, aggiungere i915.modeset=0 alla relativa voce in GRUB per disabilitare KMS.

Aggiungere un hook v86d

Aggiungere l'hook v86d alla stringa HOOKS in /etc/mkinitcpio.conf per consentire il caricamento di uvesafb al boot.

HOOKS="base udev v86d ..."

Configurare uvesafb

Definire una risoluzione

Le opzioni per uvesafb possono essere impostate nel file /etc/modprobe.d/uvesafb.conf che è il file di default installato dal pacchetto v86d.

# This file sets the parameters for uvesafb module.
# The following format should be used:
# options uvesafb mode=<xres>x<yres>[-<bpp>][@<refresh>] scroll=<ywrap|ypan|redraw> ...
#
# For more details see:
# http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/fb/uvesafb.txt
#
options uvesafb mode=1280x800-32 scroll=ywrap

Rigenerare le immagini initramfs

Le modifiche vengono passate mediante l'avvio nelle immagini initramfs, così, bisognerà rigenerare le immagini initramfs per il/i kernel. Nell'esempio seguente si presuppone che il kernel sia quello di default di Arch Linux:

# mkinitcpio -p linux

Riavvio

Riavviare il sistema per vedere i cambiamenti.

Liste di risoluzioni

Un elenco delle risoluzioni possibili può essere generato tramite il seguente comando:

$ cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes

Gli utenti possono modificare /etc/modprobe.d/uvesafb.conf con una qualsiasi voce restituita.

Può essere usato uno qualsiasi dei seguenti comandi per visualizzare la risoluzione del framebuffer corrente come controprova che le impostazioni sono corrette:

$ cat /sys/devices/virtual/graphics/fbcon/subsystem/fb0/virtual_size
$ cat /sys/class/graphics/fb0/virtual_size

Uvesafb compilato nel kernel

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Uvesafb (Italiano)#)

Nel caso si utilizzi un kernel custom, si può scegliere di compilare uvesafb all'interno del kernel ed eseguire v86d più tardi nel processo di avvio, per esempio da /etc/rc.local. In questo caso, le opzioni per uvesafb possono essere passate come parametri di avvio al kernel nel formato video=uvesafb:<options>. Questa soluzione non va bene nel caso si voglia combinare uvesafb con 915resolution com suggerito più avanti.

Homepage di uvesafb

L'homepage di uvesafb è http://dev.gentoo.org/~spock/projects/uvesafb, dove si possono trovare informazioni più dettagliate (lasciar perdere le informazioni riguardanti la patch del kernel, dato che che è il file di default installata uvesafb è ora incluso nel kernel vanilla; Inoltre parte della documentazione assume che uvesafb sia compilato all'interno del kernel, mentre nel kernel di Arch Linux è compilato come modulo).

Uvesafb e 915resolution

In questa sezione, esaminiamo uno scenario più complesso. Alcuni chipset video Intel per notebook con wide screen sono conosciuti per avere un BIOS bacato, che non supportano la risoluzione nativa dello schermo! Per questo motivo, 915resolution è stato creato per patchare il bios all'avvio e permettere al server X di usare la risoluzione widescreen. Al momento, il server X è in grado di fare questo senza l'intervento di 915resolution. Comunque, 915resolution può essere combinato con uvesafb in modo da ottenere un widescreen framebuffer, senza nessun bisogno di lanciare X. In questo caso, devi caricare uvesafb dopo aver eseguito 915resolution, in modo che uvesafb possa utlizzare la risoluzione appropriata.

915resolution-static

In questo scenario, 915resolution deve essere compilato staticamente (visto che verrà incluso nella initramfs, non può essere collegato a librerie esterne). Per questo motivo non si può utilizzare il pacchetto 915resolution presente nel repository [community]. È presente su AUR il pacchetto 915resolution-staticAUR. Questo compila 915resolution staticamente e fornisce un hook 915resolution, in modo che si possa eseguire 915resolution prima di caricare uvesafb ed ottenere una risoluzione personalizzata. Installare dunque 915resolution-static via makepkg e pacman.

La risoluzione

Per ottenere la risoluzione da te scelta, devi configurare l'hook 915resolution in modo da definire la modalità del BIOS che vuoi rimpiazzare. Puoi ottenere aiuto su tutte le opzioni per 915resolution con:

915resolution -h

Quindi editare il file /lib/initcpio/hooks/915resolution e modificare le opzioni necessarie.:

run_hook ()
{
   msg -n ":: Patching the VBIOS..."
   /usr/sbin/915resolution 5c 1280 800
   msg "done."
}

Per default, 5c è il codice della modalità del BIOS da rimpiazzare. Puoi ottenere un lista delle modalità video del BIOS disponibili con il comando: 915resolution -l.

Note: Si deve scegliere il codice di una modalità video di cui non si ha bisogno (nè in framebuffer nè in X), perchè 915resolution la rimpiazzerà con quella desiderata. Nell'esempio, 1280 800 è la nuova risoluzione scelta.

La stringa HOOKS

Aggiungere gli hook 915resolution e v86d (in quest'ordine) nella stringa HOOKS in /etc/mkinitcpio.conf. Posizionare questi hook prima di keymap, resume e filesystems.

HOOKS="base udev 915resolution v86d ..."

Sarà quindi necessario rigenerare la propria initramfs con mkinitcpio (modificare il seguente comando secondo la propria configurazione):

mkinitcpio -p linux

Risoluzione dei problemi

Uvesafb non può riservare la memoria

Controllare di non aver dimenticato di togliere qualche parametro del kernelvga=xxx. Questo sovrascrive il framebuffer UVESA con uno VESA standard.

pci_root PNP0A08:00 address space collision + Uvesafb cannot reserve memory

Ciò si verifica su Acer Aspire One 751h con il kernel 2.6.34-ARCH; non è noto che si verifichi anche su altri sistemi. Anche senza altri framebuffer ad interferire con l'installazione, uvesafb non può riservare la regione di memoria necessaria.

È possibile risolvere questo problema aggiungendo quanto segue ai parametri del kernel nella configurazione del bootloader.

pci=nocrs