venerdì 14 ottobre 2011

Risolvere Problema Plymouth per Linux

Ubuntu 10.04 (Lucid Lynx) ha introdotto il nuovo spash screen di avvio chiamato plymouth, sviluppato dal progetto Fedora.



Plymouth funziona molto bene con i driver che supportano il kernel mode setting (come i driver open source radeon e quelli intel) ma non funziona correttamente con i driver proprietari nvidia e Ati (fglrx) che appunto non supportano il KMS (il kernel mode setting è in pratica la capacità del driver del kernel di riconoscere e cambiare la risoluzione, mentre di norma questo è affidato a Xorg e quindi al driver per Xorg, non a quello nel kernel).


Vediamo come risolvere la situazione.

NOTA: gli utenti di schede Intel e Ati con driver open source NON devono seguire questa guida.

A differenza di altre guide che si trovano in rete questa mantiene il funzionamento delle console testuali accessibili con ctrl+alt+f1 .. f6

1. Accertiamoci della risoluzione supportata

Installiamo: hwinfo da terminale con "sudo apt-get-install hwinfo"

da terminale diamo:

Codice: 
"sudo hwinfo --framebuffer"


Otterremo qualcosa del genere:
Codice: 
"02: None 00.0: 11001 VESA Framebuffer                            [Created at bios.464]   Unique ID: rdCR.9kB58sMWXOB   Hardware Class: framebuffer   Model: "NVIDIA MCP79 Board - mcp79mvl"   Vendor: "NVIDIA Corporation"   Device: "MCP79 Board - mcp79mvl"   SubVendor: "NVIDIA"   SubDevice:   Revision: "Chip Rev"   Memory Size: 14 MB   Memory Range: 0xcf000000-0xcfdfffff (rw)   Mode 0x0300: 640x400 (+640), 8 bits   Mode 0x0301: 640x480 (+640), 8 bits   Mode 0x0303: 800x600 (+800), 8 bits   Mode 0x0305: 1024x768 (+1024), 8 bits   Mode 0x0307: 1280x1024 (+1280), 8 bits   Mode 0x030e: 320x200 (+640), 16 bits   Mode 0x030f: 320x200 (+1280), 24 bits   Mode 0x0311: 640x480 (+1280), 16 bits   Mode 0x0312: 640x480 (+2560), 24 bits   Mode 0x0314: 800x600 (+1600), 16 bits   Mode 0x0315: 800x600 (+3200), 24 bits   Mode 0x0317: 1024x768 (+2048), 16 bits   Mode 0x0318: 1024x768 (+4096), 24 bits   Mode 0x031a: 1280x1024 (+2560), 16 bits   Mode 0x031b: 1280x1024 (+5120), 24 bits   Mode 0x0330: 320x200 (+320), 8 bits   Mode 0x0331: 320x400 (+320), 8 bits   Mode 0x0332: 320x400 (+640), 16 bits   Mode 0x0333: 320x400 (+1280), 24 bits   Mode 0x0334: 320x240 (+320), 8 bits   Mode 0x0335: 320x240 (+640), 16 bits   Mode 0x0336: 320x240 (+1280), 24 bits   Mode 0x033d: 640x400 (+1280), 16 bits   Mode 0x033e: 640x400 (+2560), 24 bits   Mode 0x0345: 1600x1200 (+1600), 8 bits   Mode 0x0346: 1600x1200 (+3200), 16 bits   Mode 0x0347: 1400x1050 (+1400), 8 bits   Mode 0x0348: 1400x1050 (+2800), 16 bits   Mode 0x0349: 1400x1050 (+5600), 24 bits   Mode 0x034a: 1600x1200 (+6400), 24 bits   Mode 0x0352: 2048x1536 (+8192), 24 bits   Mode 0x0360: 1280x800 (+1280), 8 bits   Mode 0x0361: 1280x800 (+5120), 24 bits   Mode 0x0362: 768x480 (+768), 8 bits   Mode 0x0364: 1440x900 (+1440), 8 bits   Mode 0x0365: 1440x900 (+5760), 24 bits   Mode 0x0368: 1680x1050 (+1680), 8 bits   Mode 0x0369: 1680x1050 (+6720), 24 bits   Mode 0x037b: 1280x720 (+5120), 24 bits   Mode 0x037c: 1920x1200 (+1920), 8 bits   Mode 0x037d: 1920x1200 (+7680), 24 bits   Config Status: cfg=new, avail=yes, need=no, active=unknown"


Attenzione: queste sono tutte le risoluzioni supportate dalla scheda video. Noi invece dobbiamo mettere quella del monitor che usiamo e che possiamo vedere da sistema > preferenze > schermo o dal nvidia x server setting nel caso delle schede nvidia oppure dall'ati control center per le schede ati o, ancora, con il comando:
Codice: 
"xrandr"


nel mio caso:

Codice:
"Screen 0: minimum 320 x 175, current 1280 x 800, maximum 1280 x 800"


Sceglierò quindi la risoluzione
"Mode 0x0361: 1280x800 (+5120), 24 bits"
.

2. Dobbiamo usare uvesafb al posto di vesafb, in modo che plymouth possa lavorare alla risoluzione giusta. Per far questo installiamo: v86d da terminale con "sudo apt-get-install v86d"

3. configuriamo grub:

Codice: 
"sudo gedit /etc/default/grub"


metto in evidenza solo le linee da modificare:

Codice: 
".... GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1280x800-24,mtrr=3,scroll=ywrap" ... GRUB_GFXMODE=1280x800"


ovviamente mettere la risoluzione che vi interessa al posto di 1280x800.

Se seguendo altre guide avete aggiunto:

Codice: 
"GRUB_GFXPAYLOAD_LINUX=keep"


allora dovete toglierlo.. Lo stesso vale se avete aggiunto una striga simile al file 00_header come indicato in altre guide.

4. diamo

Codice: 
"sudo gedit /etc/initramfs-tools/modules"


e aggiungiamo la seguente riga

Codice: 
"uvesafb mode_option=1280x800-24 mtrr=3 scroll=ywrap"


ovviamente anche qui sostituite 1280x800 con la risoluzione da voi scelta.

5. diamo:

Codice: 
"echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash"


in modo da dire a plymouth di usare il framebuffer uvesa.

6. Infine aggiorniamo grub e initramfs

Codice: 
"sudo update-grub2 sudo update-initramfs -u"


e riavviate. Se ancora dovesse non funzionare ridate:

"sudo update-initramfs -u"

e controllate con

Codice: 
"dmesg | grep uvesafb"


che esca qualcosa di simile:

Codice:
"[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.32-22-generic root=UUID=a5645330-a1bc-48f7-9062-3d8c2d1b3816 ro quiet splash nomodeset video=uvesafb:mode_option=1280x800-24,mtrr=3,scroll=ywrap [    1.910319] uvesafb: NVIDIA Corporation, MCP79 Board - mcp79mvl, Chip Rev   , OEM: NVIDIA, VBE v3.0 [    1.941557] uvesafb: protected mode interface info at c000:c9c0 [    1.941560] uvesafb: pmi: set display start = c00cca23, set palette = c00cca7e [    1.941562] uvesafb: pmi: ports = 3b4 3b5 3ba 3c0 3c1 3c4 3c5 3c6 3c7 3c8 3c9 3cc 3ce 3cf 3d0 3d1 3d2 3d3 3d4 3d5 3da [    2.006046] uvesafb: VBIOS/hardware doesn't support DDC transfers [    2.006048] uvesafb: no monitor limits have been set, default refresh rate will be used [    2.006231] uvesafb: scrolling: ywrap using protected mode interface, yres_virtual=1600 [    2.006828] uvesafb: framebuffer at 0xcf000000, mapped to 0xf8100000, using 8000k, total 14336k"
Saluti da Zalone 93 ;)
Ho variato piccoli punti per adattarlo a come ho effettivamente risolto il problema sul mio pc, la fonte reale è sul blog "LinuxQualityHelp".

Nessun commento:

Posta un commento