Difference between revisions of "Uvesafb (Italiano)"

From ArchWiki
Jump to: navigation, search
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
[[Category:Laptops (Italiano)]]
 
[[Category:Laptops (Italiano)]]
{{i18n|Uvesafb}}
+
[[en:Uvesafb]]
 +
[[zh-CN:Uvesafb]]
 
[[Category:Eye candy (Italiano)]]
 
[[Category:Eye candy (Italiano)]]
  
Line 33: Line 34:
 
==Configurare uvesafb==
 
==Configurare uvesafb==
 
===Definire una risoluzione===
 
===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 {{Package Official|v86d}}.
+
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 81: Line 82:
 
===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 si può utilizzare il pacchetto 915resolution presente nel repository [community]. È presente su AUR il pacchetto {{Package 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]].
+
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]].
  
 
===La risoluzione===
 
===La risoluzione===
Line 89: Line 90:
 
  915resolution -h
 
  915resolution -h
  
Quindi editare il file {{filename | /lib/initcpio/hooks/915resolution}} e modificare le opzioni necessarie.:
+
Quindi editare il file {{ic| /lib/initcpio/hooks/915resolution}} e modificare le opzioni necessarie.:
  
 
  run_hook ()
 
  run_hook ()

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