HOWTO gensplash
Uit Gentoo Linux Wiki
| Installation • Kernel & Hardware • Networks • Portage • Software • System • X Server • Gaming • Non-x86 • Emulators • Misc |
[bewerken] Introductie
Om te beginnen, laten we een applausje geve aan Gentoo ontwikkelaar Spock voor het ontwikkelen van gensplash (fbsplash en splashutils) en vesafb-tng.
[bewerken] Wat zijn gensplash en fbsplash?
[bewerken] Gensplash
Gensplash is een project gestart door Spock wiens doel het is om een groep van tools te maken die het Gentoo boot proces kunnen verrijken met het tonen van berichten, animaties, voortgangsbalken, etc. Een uitleg van de diverse dingen genaamd *splash (bootsplash, gensplash, fbsplash, and splashutils) en hoe ze zich tot elkaar verhouden, kan gevonden worden op de pagina [httpp://dev.gentoo.org/~spock/projects/gensplash/faq.php faq] van Spock's Gensplash site.
[bewerken] Fbsplash
Fbsplash is een deel van het splash project. Volgens gensplash's documentatie, "de framebuffer splash is een kernel eigenschap die het mogelijk maakt om een achtergrond afbeelding te tonen op geselecteerde consoles en om het eerste console over te schakelen naar de zgnsilent mode, als het systeem opgestart/geherstart/afgesloten wordt." Het fbsplash device wordt benaderd door de /dev/fbsplash device node. Omr fbsplash te laten werken is een framebuffer device nodig.
[bewerken] Wat is een Frame Buffer Device?
Het frame buffer device geeft een abstractie voor de graphics hardware. Het stelt de frame buffer van bepaalde video hardware voor, en stelt applicatie in staat om grafische hardware te benaderen dmv een goed gedefinieerd interface. Dit is nuttig, omdat de software niets hoeft te weten van de specifieke grafische hardware. Het device wordt benaderd door speciale device nodes, meestal te vinden in de /dev directory, dwz /dev/fb*.
Er zijn veel verschillende frame buffer devices.
- Generic Frame Buffer Devices
- vesafb (vesa frame buffer)
- vesafb-tng (vesa frame buffer - de volgende generatie)
- Graphische Kaart specifieke Devices
- rivafb (de oude Nvidia Chipset)
- nVidiafb (de niewere nVidia Chipsets)
- radeonfb (ATI Chipset)
Fbsplash zou moeten werken met elk van deze frame buffer devices en elk andere die 8/15/16/24/32bpp directcolor/pseudocolor modes ondersteunen.
De officiele nvidia Xorg drivers veroorzaken een conflict with nVidiafb and rivafb, als je ze wilt gebruiken, dan blijf bij vesafb or vesafb-tng.
[bewerken] Installatie
In het voorbeeld hieronder wordt het vesafb-tng frame buffer device gebruikt. Als je daarmee problemen ondervindt, zoals een splash screen dat niet verschijnt, gebruik dan in plaats daarvan vesafb .
[bewerken] De Kernel configureren en Compileren
Samengevat, dit is wat we gaan doen.
- Emerge splashutils.
- Emerge splash-themes-gentoo & splash-themes-livecd, als je wat thema's wilt.
- Zorg ervoor dat /usr/src/linux naar je gentoo-sources verwijst.
- Configureer je Kernel, hetzij door genkernel of handmatig.
| Code: Emerge van splashutils & thema's |
# emerge -va splashutils splash-themes-gentoo splash-themes-livecd |
Beside Note: This seems to be fixed in 2.6.17
(Credit: http://www.helpfeeds.com/showthread.php?p=1139679)
Patch: http://bugs.gentoo.org/attachment.cgi?id=84477&action=view
[bewerken] Genkernel users
| Code: Genkernel: Configuring genkernel |
# genkernel --menuconfig kernel |
When Genkernel has finished, skip down to Making An initramfs Image.
[bewerken] Non-genkernel users
See HOWTO Compile a Kernel Manually and configure your kernel as per the requirements section of this document. (You can skip that step if you already configured a framebuffer driver besides vesa-tng.)
After you have configured your kernel, you must now compile it . See HOWTO Compile a Kernel Manually.
If more help is needed, the Gentoo Linux Kernel Upgrade Guide is an excellent resource.
[bewerken] Required Kernel Options
| Linux Kernel Configuratie: 2.6 - Required for Non-genkernel & Genkernel users alike |
Device Drivers >
Graphics support: >
[*] Support for frame buffer devices
<*> VESA VGA graphics support
VESA driver type (vesafb-tng) --->
(HRESxVRES@FREQ) VESA default mode
# Pick your resolution@freq
# Ex: (1024x768@72)
Console display driver support --->
[*] Video mode selection support
<*> Framebuffer Console support
[*] Support for the framebuffer splash
|
The VESA default mode is set as res-bpps@freq, eg. 640x480@60
| Linux Kernel Configuratie: If you want to load the initramfs image dynamically at boot -- you probably do -- enable RAM disk support as well.
(Genkernel users must select this option.) |
Device Drivers > Block devices: <*> RAM disk support (4096) Default RAM disk size (kbytes) (NEW) [*] Initial RAM disk (initrd) support |
| Linux Kernel Configuratie: If any of these options don't show up, make sure you didn't select tileblitting support. |
Device Drivers > Graphics support: [ ] Enable Tile Blitting Support [ ] Matrox acceleration |
| Linux Kernel Configuratie: If you want to get the F2 key working to switch to verbose and silent, you need the option CONFIG_INPUT_EVDEV =y set. It is under |
Device Drivers > Input Device Support <*>Event Interface |
[bewerken] Making An initramfs Image
If you'd like to get your splash background to appear earlier in your bootup process you'll have to use an initramfs. Otherwise, you can skip to the section Configuring Your Bootloader.
Initramfs (initial ramfs) is a chunk of code that unpacks the compressed cpio image midway through the kernel boot process. The files contained within that image are then used to populate the root filesystem. Initramfs is a part of a bigger concept called 'early-userspace', says (Spock).
[bewerken] Genkernel
Since genkernel uses an initrd image, and it is not possible to "append initramfs data to an initrd image"[1], we can't use an initramfs image for our purposes. Instead, we're going to remake the genkernel initrd image with special options for gensplash. The process is really quite simple and does not take more than a minute on a decent system. (Note: Genkernel is a tool for configuring your kernel if you haven't already created a .config file and copies the existing to config.bak.)
| Code: Genkernel - making initrd image with gensplash |
# genkernel --gensplash=themename initrd |
Replace themename with the name of a theme located in /etc/splash.
[bewerken] Alternative Method: Compiling splash image directly into the kernel using genkernel
Sometimes you may have the need to compile the splash directly into the kernel using genkernel. First the kernel must be compiled the proper way using genkernel. Next prepare the splash cpio.gz and recompile the kernel without cleaning it.
| Code: Genkernel - compiling splash directly into kernel |
# genkernel --gensplash=themename all # rm /usr/src/linux/usr/initramfs_data.cpio.gz # splash_geninitramfs -g /usr/src/linux/usr/initramfs_data.cpio.gz -v -r 1024x768 livecd-2006.1 # genkernel --kernel-config=/root/config-2.6.18 --no-clean bzImage |
[bewerken] Non-genkernel
You have two options, the first is recommended.
- loading the initramfs image dynamically at boot time (recommended)
- compiling the initramfs image directly into the kernel
[bewerken] Loading initramfs at boot (recommended)
In this option, you create the initramfs image as a stand-alone file, also known as the initrd file. Because of this, you will not have to recompile the kernel everytime you want to change the image.
So the only thing you have to do here is use splash_geninitramfs to generate an initrd file (that contains the pictures, configs and the userspace helper):
| Code: |
# cd /etc/splash/ # splash_geninitramfs livecd-2006.1 -r 1024x768 -g /boot/fbsplash-livecd-2006.1-1024x768 -v |
Change the resolution and theme to match your monitor's resolution and chosen theme.
| Waarschuwing: Before you frag your brains out, you must delete the symbolic link 'default' in the /etc/splash directory. Otherwise no images will show. (Gentoo-2.6.11-r9). You can also change the link to point to the theme you're using instead of deleting the link if you wish. |
[bewerken] Alternative Method: Compiling initramfs directly into the kernel
First, delete the present initramfs image: rm -iv /usr/src/linux/usr/initramfs_data.cpio.gz
Next, you'll have to create a new initramfs image containing the pictures, configs and the userspace helper (adjust resolution and theme - livecd-2006.1 in the example - to your needs).
| Code: |
splash_geninitramfs -g /usr/src/linux/usr/initramfs_data.cpio.gz -v -r 1024x768 livecd-2006.1 |
You have to touch initramfs image to make sure it will be compiled into your new kernel: touch /usr/src/linux/usr/initramfs_data.cpio.gz. And then recompile your kernel.
[bewerken] View contents of initramfs
The initramfs should contain the splash theme files. To verify that it contains the theme that you chose you may use this command:
| Code: |
# zcat /boot/fbsplash-livecd-2006.1-1024x768 | cpio --list . dev dev/fb dev/vc dev/misc dev/null dev/console etc etc/splash etc/splash/livecd-2006.1 etc/splash/livecd-2006.1/Vera.ttf etc/splash/livecd-2006.1/images etc/splash/livecd-2006.1/images/text.png etc/splash/livecd-2006.1/images/background-1024x768.png etc/splash/livecd-2006.1/images/verbose-1024x768.png etc/splash/livecd-2006.1/1024x768.cfg sys proc sbin sbin/splash_helper root 1369 blocks |
The output should look something like that above, including the images for your chosen theme/resolution and a few system files. (If you used the alternative method of compiling your initramfs into the kernel then make sure to use the appropriate filename, i.e. zcat /usr/src/linux/usr/initramfs_data.cpio.gz).
[bewerken] Choosing a theme
If you wish to see a theme without booting you can use splash_manager:
| Code: |
# splash_manager --theme=livecd-2006.1 --cmd=set --tty=1 |
This will change the theme on tty1 to livecd-2006.1. You can choose any theme in /etc/splash that matches your current resolution. Now to see the theme go to tty1 by pressing Ctrl+Alt+F1.
[bewerken] Obtain More Themes
The media-gfx/bootsplash-themes package has quite a lot of themes.:
# emerge bootsplash-themes
This will install the themes to /etc/bootsplash. However, the current version of bootsplash-themes converts the themes automatically to splashutils compatible themes and moves them to /etc/splash/ as well, so there is no need to convert.
[bewerken] Converting Bootsplash Themes to Gensplash Themes
- The themes have been automatically converted to a format recognized by splashutils. Note that the conversion process is purely automatic and therefore 'dumb'. Some themes might not work, or work incorrectly. If you happen to find a theme that you like, but which doesn't work after it has been automatically converted to the new format, please fix it manually and submit for inclusion into a generic splashutils theme package by posting it on bugzilla or sending it directly to the maintainer of this package.
However, if you find a bootsplash theme you want to use with gensplash, you can use bootsplash2fbsplash (thanks to Spock, splashutils includes this), which makes the conversion from bootsplash to gensplash format easy. For example, if there is a bootsplash theme named gentoo-highquality located in /etc/bootsplash, with this the utility creates a gensplash-compatible theme in /etc/splash/gentoo-highquality including all the required files.
| Code: Convert bootsplash themes to gensplash |
# bootsplash2fbsplash gentoo-highquality |
If you want to quickly convert all installed themes:
| Code: Convert all bootsplash themes to gensplash |
# for i in $(ls -1 /etc/bootsplash); do bootsplash2fbsplash $i; done |
[bewerken] Fixing wrong image sizes
Image size mismatch: /etc/splash/Matrix/images/verbose-1280x1024.jpg. Failed to load image /etc/splash/Matrix/images/verbose-1280x1024.jpg.
If some images can't be loaded because they have the wrong resolution, you might try the following script (ImageMagick required):
| Code: Scale all images to the specified size |
#!/bin/sh
EXTRACTSCALE="s/^[^0-9]*\([0-9]\+x[0-9]\+\).*/\\1/"
for i in `ls -1 /etc/splash/`
do
cd /etc/splash/$i/images 2> /dev/null || continue # ignore files
pwd
for j in `ls -1 *.jpg`
do
claims=`echo $j |sed $EXTRACTSCALE`
if [[ `identify $j |sed "s/.*JPEG//" |sed $EXTRACTSCALE` != $claims ]]
then
cp $j $j.orig
convert $j.orig -resize $claims\! $j
fi
done
done
|
(this happened with bootsplash-0.6.1-r7 and splashutils-1.1.9.8; please tell me if this happens somewhere else as well!)
[bewerken] Configuring Your Bootloader
[bewerken] Kernel Options
You first need an option which specifies the frame buffer device. In the following example, we specify that we would like to use vesafb-tng with ywrap and mtrr support at a resolution of 1024x768, 16bpp color and a refresh rate of 85Hz (note: make sure you don't say vesafb-tng here - only vesafb is ok!):
video=vesafb:ywrap,mtrr,1024x768-16@85
Note that for kernel versions from 2.6.13 onwards you *must* specify the mtrr mode: eg "mtrr:2".
Or, if you are using vesa (not vesa-tng), use instead (for 1024x768-24):
vga=792
Fbsplash requires its own option which allows you to specify which theme should be used. In this case, the default theme is livecd-2006.1. The other option can be set to verbose or silent. If silent is set, it will hide all the bootup information. Otherwise, you will be shown all the bootup information on system startup. Both these values have to be set.
splash=verbose,theme:livecd-2006.1
If you want to increase the scrollback buffer (the default is 32K) you should also add an option such as:
fbcon=scrollback:128K
It seems you cannot put a value greater than 128K.
If you decided to use an initrd file you will need to place an additional option in the boot loader config:
initrd /boot/fbsplash-livecd-2006.1-1024x768 # Grub initrd = /boot/fbsplash-livecd-2006.1-1024x768 # Lilo
In the above example, it is assumed that the name of the initrd file is fbsplash-livecd-2006.1-1024x768 (and it resides in the /boot partition or directory).
You will probably want to pick a theme matching the version of your system. The livecd-<version> themes are recommended. (emergence says "2004.0")
Below are examples for both Grub and Lilo config files. It is assumed that the custom theme 'newtheme', a resolution of 1280x1024, 32bpp and a refresh rate of 70Hz are used. The specified fbsplash mode is 'silent' and an initrd file is used (hence the additional 'initrd' line).
Also note that for both GRUB and LILO, CONSOLE=/dev/tty1 must be added for silent mode to operate.
NOTE: For clarification, you should use either "console=tty1" OR "quiet CONSOLE=/dev/tty1" - uppercase CONSOLE for when using the quiet boot option.
| Waarschuwing: The newest fbsplash patch requires an additional kernel boot option, in case when you want to use a silent boot image. Simply write a "quiet" in the kernel boot line of your grub.conf. Otherwise, the kernel will overwrite the bootsplash image with its output. If the bootsplash image is still getting overwritten after adding the "quiet" option, you may need to add the "kdgraphics" splash option as well. |
To see full documentation of the kernel parameters specific to splash you need to look in kernel_parameters.gz which should be included in splashutils. You should be able to see it by typing (this assumes that you have emerged splashutils):
| Code: |
# zcat -c /usr/share/doc/splashutils*/kernel_parameters.gz | more |
[bewerken] GRUB Example
| File: grub.conf |
title Gentoo root (hd0,0) kernel /kernel-2.6.11-r11 splash=silent,fadein,theme:newtheme video=vesafb:1280x1024-32@80,mtrr,ywrap quiet CONSOLE=/dev/tty1 initrd (hd0,0)/boot/fbsplash-newtheme-1280x1024 #Try 16 bit colour e.g. video=vesafb:ywrap,mtrr,1280x1024-16@70 #if you get errors returning to verbose mode on different themes Genkernel users should use something like this for the kernel line and the initrd line for the regular kernel: kernel (hd0,0)/boot/kernel-2.6.9-gentoo-r13 root=/dev/ram0 init=/linuxrc real_root=/dev/hda1 quiet splash=verbose,theme:newtheme video=vesafb:ywrap,mtrr,1024x768-32@70 CONSOLE=/dev/tty1 initrd (hd0,0)/boot/initrd-2.6.9-gentoo-r13 |
Replace (hd0,0) with your boot partition. If there is no separate boot partition, use the root partition number and prepend /boot to the kernel and initrd paths. Please note that you must specify either silent or verbose in the splash parameter, or splash will not load at all, i.e. "splash=theme:emergence" will not work.
[bewerken] LILO Example
| File: lilo.conf |
image=/boot/kernel-2.6.8-gentoo-r1 label = "Gentoo" root = /dev/hda3 append="video=vesafb:1280x1024-32@80,mtrr,ywrap splash=silent,fadein,theme:newtheme quiet CONSOLE=/dev/tty1" read-only initrd = /boot/fbsplash-newtheme-1280x1024 |
Do not forget to run lilo after you have adjusted the lilo.conf file:
# mount /boot/ # lilo -v
After all this work and a reboot you should have a graphical boot.
[bewerken] Adding Background To All Consoles
If you want all consoles to have a splash screen then type the following command:
# rc-update add splash default
# rc-update add splash boot
| Waarschuwing: As the splash script requires 'local' to be run first, adding splash to runlevel BOOT will force local to execute earlier, which may cause some problems, eg. when you are using some web services in local (eg. ntp) |
[bewerken] Gensplash on Other Distributions
Gensplash will also work on other distributions. You can find tutorials for other distributions (Debian, Fedora and ArchLinux) at Spock's homepage.
[bewerken] Troubleshooting
[bewerken] Users With /usr on a Separate Partition
If you are using splashutils version 0.9-pre08 or later and have /usr on a separate partition, gensplash should work out of the box (without any modifications). If you, however, use an older version of splashutils and, for some bizarre reason, stubbornly refuse to update it, please use the instructions below.
The program and libraries that splash_util needs to run fbset and display your splash image are kept in /usr/bin and /usr/lib. So if you have these on separate partitions from / (such as a RAID or LVM2 partition), they may not be available (mounted) at the time splash_utils needs them (when using the older version of splashutils), and you won't see your beautiful splash.
The solution? Copy them to somewhere that they are available, as follows (with thanks to aslocum and the Gentoo forums Gensplash-How-to with progressbar!!!!! thread):
# cp -p /usr/bin/fbset /sbin # cp -p /usr/lib/libjpeg.so.62 /lib # cp -p /usr/lib/libpng.so.3 /lib
edit the /sbin/splash file, and make line 31 read:
res=`/sbin/fbset | grep "^mode" | sed -r 's/mode "([0-9]+x[0-9]+).*/\1/'`
The only difference in this line is to add /sbin/ before fbset. Save and exit, and your splash should display properly.
[bewerken] SIS 630
If you have a Sis-630 based video card, like an Asus 1300 laptop, you might get the complaint about no 8bpp pictures found. Trying to set the resolution of your framebuffer to 24 bit does not help with "video=vesafb:1024x768-32@72" in your grub.conf. Instead make sure you also include the sis framebuffer in your kernel and use the following line in your grub.conf:
video=sisfb:mode:1024x768x32,mem:12288,rate:70
[bewerken] x86_64 / IA64
The 'vesafb-tng' patch will not work on 64-bit systems (x86_64 and ia64), because the vm86 mode is not supported for OSes running in 64-bit mode. If you happen to own a 64-bit box, you're limited to plain vesafb
Because vesafb-tng doesn't work on 64 bit systems, you must use vesafb on these arches.
[bewerken] Intel i810
Some people have had a lot of problems with vesa-tng working with an i810 integrated graphics controller. If you're having this problem, try the following kernel config instead:
| Linux Kernel Configuratie: Intel i810 |
Device Drivers > Graphics support: [*] Support for frame buffer devices < > VESA VGA graphics support <*> Intel 810/815 support (EXPERIMENTAL) |
| File: grub.conf |
video=i810fb:vram:4,xres:1024,yres:768,bpp:16,hsync1:30,hsync2:55,vsync1:50,vsync2:85,accel |
Change your vram and sync settings as needed to support your adapter and/or monitor (to find your monitor sync rates use the ddcxinfo-knoppix program in portage). These are fairly conservative and should work with most setups. Hopefully this helps.
I've got the error "intelfb: Video mode must be programmed at boot time." on my 64 Bit system, which does not support vesa-tng. It works with vesa only and the following kernel and grub config:
| Linux Kernel Configuratie: Intel i810 on 2.6.18-gentoo? |
Device Drivers > Graphics support: [*] Support for frame buffer devices [*] Enable Video Mode Handling Helpers < > VGA 16-color graphics support <*> VESA VGA graphics support VESA driver type (vesafb) ---> <*> Intel 830M/845G/852GM/855GM/865G support (EXPERIMENTAL) |
| File: grub.conf |
vga=792 INSTEAD OF video=intelfb:... |
Hopefully this helps on 32 Bit systems, too.
Starting with kernel 2.6.11-gentoo-r9, the i810 chipset no longer supports the Intel 810/815 frame buffer device. You may have to use the vga16 frame buffer. Do not enable the VESA or i810 frame buffer options. The Direct Rendering Manager and the agpgart will not be built correctly if you do. In the kernel config choose:
| Linux Kernel Configuratie: Intel i810 on 2.6.11-gentoo-r9? |
Device Drivers > Graphics support: [*] Support for frame buffer devices [*] Enable Video Mode Handling Helpers <*> VGA 16-color graphics support < > VESA VGA graphics support < > Intel 810/815 support (EXPERIMENTAL) |
[bewerken] ATI Radeon
Using radeonfb works just fine (tested with Radeon M9 and 9800PRO). Simply compile the kernel as shown below :
| Linux Kernel Configuratie: ATI Radeon |
Device Drivers > Graphics support: [*] Support for frame buffer devices <*> ATI Radeon display support |
make && make modules modules_install install
Also add this to your bootloader kernel args
video=radeonfb
The kernel will now use the default resolution and bit depth for your graphic card. Alternatively, you may choose a specific resolution/mode something like this:
video=radeonfb:1024x768 video=radeonfb:1400x1050-32@60
Setting 32bit explicitly may be helpful if the theme colors are distorted due to a 24bit default.
[bewerken] ATI Radeon X800
I did not manage to get vesafb-tng working with this card. Always got vesafb: mode switch failed (eax: 0xXXXX)
I switched to standard vesafb and finally it worked with follwing boot options:
| File: /boot/grub/grub.conf |
title=Gentoo Linux 2.6.12-r9 root (hd1,0) kernel (hd1,0)/kernel-2.6.12-r9 root=/dev/hdb3 video=vesafb:ywrap,mtrr vga=791 splash=silent,fadein,theme:livecd-2005.1 quiet CONSOLE=/dev/tty1 initrd (hd1,0)/fbsplash-livecd-1024x768 |
Replacing vesafb with radeonfb works with the above options on an ATI X800 XL when radeonfb is compiled into the kernel. The vga=791 argument is required to make it work with radeonfb.
IMPORTANT KERNEL OPTIONS:
INPUT_EVDEV =y to make F2 button work DEVFS_MOUNT =n to make silent mode work: otherwise x does not start
Reemerge your splashutils with
# emerge -v splashutils
and rebuild your ramdisks with f.e.
# splash_geninitramfs -v -g /boot/fbsplash-livecd-1024x768 -r 1024x768 livecd-2005.1
if you updated your kernel!!!
Remove consolefont from your bootlevel
# rc-update del consolefont boot
If you've trouble with kernel messages destroying your splash, try kernel options kdgraphics and tty:x and emerge splashutils with kdgraphics support.
Regards, fritzchen
[bewerken] PRE-VBE 2.0 cards are not supported
This occurs when you have an old graphic card.
In make menuconfig, remove everything in graphic drivers but VESA, FRAMEBUFFER SUPPORT and CONSOLE settings.( Those you must turn on to activate FB SPLASH). If necessary, use VESA instead of VESA-TNG.
| Linux Kernel Configuratie: VESA |
Device Drivers > Graphics support:
[*] Support for frame buffer devices
<*> VESA VGA graphics support
VESA driver type (vesafb-tng) --->
or VESA driver type (vesafb) instead
(HRESxVRES@FREQ) VESA default mode
Device Drivers >
Graphics support >
Console display driver support:
[*] Video mode selection support
<*> Framebuffer Console support
[*] Support for the framebuffer splash
|
Remember to turn off other graphic drivers( like Trident )
In your grub.conf, use vga=x instead of video=vesafb:???x???-??@??
| 640x480 | 800x600 | 1024x768 | 1280x1024 | 1152x864 | 1600x1200 | |
|---|---|---|---|---|---|---|
| 8 bit | 769 | 771 | 773 | 775 | 353 | 800 |
| 15 bit | 784 | 787 | 790 | 793 | 354 | 801 |
| 16 bit | 785 | 788 | 791 | 794 | 355 | 802 |
| 24 bit | 786 | 789 | 792 | 795 | 803 |
It should work.
[bewerken] Can't find the required video mode for your resolution (vesafb)?
VESAFB requires kernel argument vga=x to set the screen resolution and colors. If the video mode is not listed for your resolution you can still compute it using vbetest especially if your screen resolution is non-standard - e.g. 1680x1050 or 1280x800. vbetest is a command line tool that lists the video modes your graphics card supports. First make sure package lrmi is installed on your system:
# emerge lrmi
then run vbetest.
| Code: vbetest lists supported video modes |
$ vbetest VBE Version 3.0 Intel(r)915GM/910ML/915MS Graphics Chip Accelerated VGA BIOS [352] 1680x1050 (256 color palette) [353] 1680x1050 (5:6:5) [354] 1680x1050 (8:8:8) [355] 1280x800 (256 color palette) [356] 1280x800 (5:6:5) [357] 1280x800 (8:8:8) [263] 1280x1024 (256 color palette) [282] 1280x1024 (5:6:5) [283] 1280x1024 (8:8:8) [261] 1024x768 (256 color palette) [279] 1024x768 (5:6:5) [280] 1024x768 (8:8:8) [274] 640x480 (8:8:8) [276] 800x600 (5:6:5) [277] 800x600 (8:8:8) [257] 640x480 (256 color palette) [259] 800x600 (256 color palette) [273] 640x480 (5:6:5) Type a mode number, or 'q' to quit - 353 |
Modes in square brackets are listed in decimal. Add 512 to the mode you need; pass the result (for example 353+512=865) to your kernel using vga=x, either in decimal (vga=865) or in hexadecimal (vga=0x361).
Thanks to bdz in Gentoo forums, Getting DRI working with Intel Sonoma (i915GM) chipset.
[bewerken] Background image loading in the middle of the boot process
You may (and probably will) find that the background image is loaded with a certain few-seconds-delay even when using an initramfs image. During that time the standard black-and-white 640x480 resolution is used.
Such behaviour is normal. The only workaround (in order to get the background image as early as possible) would be using the vesafb frame buffer device (instead of vesafb-tng). Here's Spock's elaborate answer on that issue: "The initramfs is used to populate the root filesystem before the frame-buffer subsystem is initialized, so it's good enough - don't worry about it. As you might have noticed, your PC boots into the text mode, and not the graphics mode. The graphics mode is set up when the framebuffer sub-system is initialized. But before that can happen, other things must be initialized, things that take some time. That's why for a second or two you might be seeing the kernel messages. You might say that with vesafb you didn't have those. And you will be right. But vesafb is an exception, not a rule (it's initialized while the kernel is being loaded) . Every other fb driver, including vesafb-tng, rivafb, radeonfb,... is initialized with the fbdev subsystem".
[bewerken] Background image not loading until the filesystem is mounted
While having a delay of 2-3 seconds before the splash screen shows up is normal, having a 20 second delay is not. The reason is that because of one thing or another, the kernel is unable to access the required files from the initrd-image. First you should probably double-check and make sure that your image actually contains the proper files: View contents of initramfs.
If that's not the problem, the most likely reason is that you have specified and created the image with a resolution that isn't supported by your frame buffer device.
Note that just because your monitor and graphics card support a certain resolution, it doesn't mean that your Video BIOS - and by extension your frame buffer device does.
If, for instance, you've created an initrd-image which only contains files for the 1280x1024-resolution, and the maximum supported resolution is 1024x768, gensplash will try to fall back to the maximum supported resolution - only to fail, because these files weren't included. When the filesystem is mounted (far into the boot process) the necessary files will suddenly become available, and the splash-screen will be displayed (albeit annoyingly late). In order to find out which modes are supported by your setup, simply issue the command:
cat /proc/fb0/modes
You should then adjust your theme accordingly.
[bewerken] fbsplash on PowerPC
fbsplash is stable on PowerPC.
If you are using yaboot, then here is your initrd and append line (which go in your /etc/yaboot.conf file):
initrd=/boot/fbsplash-themename-resolution append="video=radeonfb:resolution-bitdepth splash=silent"
The initrd should be relative to the root filesystem, but might be different based on your system setup. You might also place your initrd somewhere else entirely -- for instance, you could have my kernels in a /kernel directory and initrd images in /images.
i have problem running maconlinux when fbsplash is enabled. anyone else having this problem?
[bewerken] putfont: PIO_FONT: Invalid argument
This message might appear in silent mode. To fix it, remove consolefont from the boot-runlevel:
# rc-update del consolefont boot
It is safe to remove consolefont from the boot-runlevel, because fbsplash runs the setfont-command after finishing the boot anyway.
[bewerken] I upgraded to kernel 2.6.12 or higher and the bootsplash doesn't show any more
This is what you get when you run emerge splashutils
| Code: emerge splashutils |
[...] * If you upgrade your kernel from pre-2.6.12 to 2.6.12 or higher, please * make sure that you remerge this package and rebuild your initrds. You * can use the splash_geninitramfs script to do that. * It is required that you add 'quiet CONSOLE=/dev/tty1' to your kernel * command line parameters. * After these modifications, the relevant part of the kernel command * line might look like: * splash=silent,fadein,theme:emergence quiet CONSOLE=/dev/tty1 [...] |
[bewerken] Error Message complains about missing 8bpp images in themes like livecd-2005.1
If the splash doesn't load and you get error messages about missing 8bpp graphics, you're running in 8bpp mode. You can change the mode by adding the color depth to your kernel command line.
| File: /boot/grub/grub.conf |
|
change video=radeonfb:1280x1024@75 to video=radeonfb:1280x1024-32@75 |
This sets the color depth to 32 bits per pixel.
If it still doesn't work , you maybe had to specify the color depth in the kernel default mode for vesa(-tng). For example:
| Linux Kernel Configuratie: Specify the color depth in the kernel |
Device Drivers > Graphics support:
[*] Support for frame buffer devices
<*> VESA VGA graphics support
VESA driver type (vesafb-tng) --->
(1280x1024-32@75) VESA default mode
|
See Spock's troubleshooting guide for details.
