středa 11. července 2012

Plymouth startuje splash příliš pozdě případně má problémy s grafikou. Zkusíme to vylepšit

V minulém příspěvku o přidání obrázku do grubu jsem psal o tom, že grafický doprovod bootu Ubuntu, který zajišťuje Plymouth, se mi ukáže až těsně před login obrazovkou cca na dvě vteřiny. Funguje to takto blbě proto, že se načte ovladač grafiky až v závěrečné části bootu. Údajně by se to mělo týkat především proprietárních ovladačů, ale otevřený radeon je na tom stejně. Řešením je předhodit Plymouthovi framebuffer, aby nečekal na ovladač pro xorg ...






echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
sudo update-initramfs -u

a příští reboot by již měl být jiný, lepší.. Po tomto zákroku se splash konečně dostane ke slovu a chvíli se na obrazovce zdrží.


Když už tam ten splash chvíli drží, je možné ho vyměnit za nějaký sofistikovanější, ale.. to by bylo zajímavé v roce 2006, kdy Ubuntu (i ostatní distribuce) bootovalo kurevsky dlouho, dokonce déle, než leckterá zaprasená XP :)




uvesafb
Pokud byste i takto měli se splashem problémy, ať už s rozlišením, nebo grafikou obecně, můžete zkusit použít místo výchozího vesafb novější uvesafb driver, ale je dost možné, že se tím splashe zbavíte úplně..
uvesafb potřebuje doinstalovat backend v86d:

sudo apt-get install v86d

v86d je démon umožňující virtualizovaně spouštět x86 kód Video BIOSu v userspace, nezávisle na architektuře procesoru. Možnosti driveru jsou tedy dané BIOSem videokarty (který musí být kompatibilní se standardem VBE 2.0). Instalace v86d rovnou upraví initramfs, aby se démon spouštěl hned při bootu.
Než upravíte grub a restartujete systém, můžete zavést modul uvesafb ručně a podívat se na Video BIOSem podporované módy obrazovky:

sudo modprobe uvesafb
less /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes

z nich byste si měli vybrat a patřičně upravit grub. Samozřejmě je možné, že Video BIOS vaší grafické karty nebude podporovat nativní rozlišení vašeho monitoru, pak je třeba zvolit nějaký kompromis. Až se načte ovladač grafiky spolu s X serverem, nastaví samozřejmě rozlišení i obnovovací frekvenci tak, jak je definováno pro xorg, tady se nic nemění - ovladače nabízejí více možností, než BIOS. Jen v prostředí konzole, která funguje na framebufferu bude rozlišení takové, které se nastaví v grubu (nebo je nastaví sám kernel).

gksu gedit /etc/default/grub

V souboru byste měli mít řádek (pokud už jste tam něco nepřipisovali):

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

splash je právě ta grafická sranda, kterou zajišťuje Plymouth. Řádek přepíšete na

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1280x1024-32,mtrr=3,scroll=ywrap"

Je to jeden řádek a rozlišení si přepište podle předchozího výběru. 32 za rozlišením je barevná hloubka. Parametr nomodeset zakazuje kernelu nastavit mód obrazovky, tato činnost byla před časem přesunuta do kernelu, s čímž mívají problém proprietární ovladače Nvidia, tam je často nomodeset potřeba, jinak stávkují.
Odkomentujete (smažete # na začátku) a upravíte řádek:

GRUB_GFXMODE=1280x1024

podle vašeho rozlišení. Toto je rozlišení, ve kterém se zobrazí nabídka grubu.
Po změně konfigurace musí následovat aktualizace

sudo update-grub

Dále je třeba přidat uvesafb mezi zaváděnými moduly:

gksu gedit /etc/initramfs-tools/modules

a nakonec připsat řádek:

uvesafb mode_option=1280x1024-32 mtrr=3 scroll=ywrap

kde opět zapíšete vaše rozlišení, uložíte a aktualizujete initramfs:

sudo update-initramfs -u


Vrácení změn
Pokud to budete chtít změnit zpět, stačí vymazat vytvořený soubor splash:

sudo rm /etc/initramfs-tools/conf.d/splash

Následně podle předchozího postupu změnit a aktualizovat Grub a vymazat řádek z /etc/initramfs-tools/modules a opět aktualizovat initramfs:

sudo update-initramfs -u

Zdroje k tématu:
http://askubuntu.com/questions/6033/enabling-nvidia-driver-messes-up-splash-screen/
http://www.kernel.org/doc/Documentation/fb/uvesafb.txt

2 komentáře:

  1. Konečne sa nepozerám pri boote len na bodky. Super návod. Vďaka

    OdpovědětVymazat
    Odpovědi
    1. To jsem rád, že z toho ještě něco funguje :)

      Vymazat

Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.

Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.