Gentoo Wiki ArchivesGentoo Wiki

Fbsplash

This article is part of the HOWTO series.
Installation Kernel & Hardware Networks Portage Software System X Server Gaming Non-x86 Emulators Misc


Please improve it in any way that you see fit, and remove this notice {{Cleanup}} from the article. For tips on cleaning and formatting see Cleanup process


Note: This guide has gotten a bit oversized because so much Framebuffer setup stuff has been integrated. It would help a lot with organization and keeping things up to date if those items are moved to Framebuffer as appropriate and to just linked to from here. Aka: "Having a Framebuffer set up is a prerequisite to this tutorial. Please go to the Framebuffer wiki page first."

Contents

Introduction

Gentoo developer Spock has created a set of tools which enrich the Linux boot process by displaying messages, animations, progress bars etc.. He has developed the following projects:

Please read uvesafb documentation before reading the rest of this page, which is a bit outdated.

Components

Boot splash screens and console graphics depend on several kernel and userland components being set up to work properly with each other. An overview of the major components follows.

Framebuffer Driver

Linux framebuffer drivers are kernel drivers that allow application software to access and control graphics hardware. Framebuffer drivers are required for any type of console graphics support. Framebuffer drivers can also be used for other things, such as running an unaccelerated X server (through X's fbdev driver), or playing video in media players with framebuffer support. Framebuffer support is enabled in the Linux kernel through the CONFIG_FB option (Device Drivers -> Graphics support -> Support for frame buffer devices) There are many framebuffer devices to choose from. Some common ones are:

The boot splash utilities should work with any of these frame buffer devices and any others that provide 8/15/16/24/32bpp directcolor/pseudocolor modes.

Framebuffer Console Driver (fbcon)

The framebuffer console is a text console driver which runs on top of the framebuffer device, providing support for different fonts, colors, etc. It is enabled with the CONFIG_FRAMEBUFFER_CONSOLE kernel option (Device Drivers -> Graphics support -> Console display driver support -> Framebuffer Console support), and provides an alternative to the standard VGA text console. It must be enabled for boot splash graphics to work.

Framebuffer Console Decorations Patch (fbcondecor)

Fbcondecor is a kernel patch which allows the display of different background pictures on framebuffer consoles. The patch is included with gentoo kernel sources, and enabled though the CONFIG_FB_CON_DECOR option (Device Drivers -> Graphics support -> Console display driver support -> Support for the Framebuffer Console Decorations). Fbcondecor requires a userspace component called fbcondecor_helper to be installed in order to work. That program is included in the media-gfx/splashutils package when it is built with the fbcondecor USE flag. It is not necessary to enable fbcondecor to have a boot splash screen, but enabling it provides additional functionality.

Historical note: The fbcondecor patch used to be known as the fbsplash patch and was enabled through the CONFIG_FB_SPLASH option (Device Drivers -> Graphics support -> Support for the framebuffer splash). Before that, this functionality was part of the bootsplash kernel patch.

Framebuffer Splash Utilities (fbsplash)

Fbsplash is set of userspace utilities (splash_util, splash_manager, etc) that control the framebuffer console and integrate with the system startup procedure to draw boot splash screens. Fbsplash scripts and utilities for gentoo are distributed as part of the media-gfx/splashutils package.

Historical note: The userspace utilities that make up fbsplash used to be referred to as gensplash utilities, before the gensplash name was abandoned to reduce confusion. Before that, the name fbsplash referred to the kernel patch which is now known as fbcondecor. Before gensplash, similar functionality was provided by the bootsplash kernel patch.

Installation

In the example below, the vesafb-tng frame buffer device is used. If you have problems, such as your splash screen not showing up, use vesafb instead.

BIG NOTE: If you are using a kernel >= 2.6.23 you will not find vesafb-tng. Spock has stopped development on vesafb-tng, and now works on uvesafb, which is located at: http://dev.gentoo.org/~spock/projects/uvesafb/ uvesafb is included in gentoo-sources >= 2.6.23 and from 2.6.24 onwards also in the mainline kernel. Follow the instructions located on that website

Note: Make sure your kernel sources include fbcondecor patchset. gentoo-sources includes it by default.


Configuring and Compiling the Kernel

In summary, this is what we are going to do.

  1. Emerge splashutils and themes if you like.
  2. Confirm /usr/src/linux points to your gentoo-sources.
  3. Configure your kernel, be it genkernel or otherwise.


Emerging splashutils & themes:

Note: Make sure and enable the 'fbcondecor' useflag for splashutils
echo "media-gfx/splashutils fbcondecor" >> /etc/portage/package.use
Note: Some themes need USE flags like png or truetype.
emerge -av splashutils splash-themes-gentoo splash-themes-livecd

Now see if your kernel points to gentoo-sources:

ls -FGg /usr/src/linux

If gentoo-sources is in the name, then you have the right build.

Configure the Kernel

The genkernel come pretty much configured but it probably wouldn't hurt to look at it.

Genkernel users

genkernel --menuconfig kernel

When Genkernel has finished, skip down to Making An initramfs Image.

Non-genkernel users

This section will show you how to configure your kernel. You can skip that step if you already configured a framebuffer driver besides vesa-tng.

Required Kernel Options


Required for Non-genkernel & Genkernel users alike:

Linux Kernel Configuration: Graphic Support
Device Drivers ---> 
   Graphics support --->
     <*> Support for frame buffer devices --->
        [ ] Enable Tile Blitting Support
        <*> VESA VGA graphics support
               VESA driver type (vesafb-tng) --->
                  (HRESxVRES@FREQ) VESA default mode
        < > nVidia Framebuffer Support
        < > nVidia Riva support
        < > Matrox acceleration 
     Console display driver support --->
        [*] Video mode selection support
        <*> Framebuffer Console support
        [*]   Support for the Framebuffer Console Decorations

(Note: fbsplash used to be configured by the option "Support for the framebuffer splash")

Make sure you didn't select tileblitting support.
If you are using an AMD64 processor, you should select vesafb rather than vesafb-tng. Also note for x86 and AMD64 processors, the in-kernel nvidia framebuffer driver conflicts with the binary driver provided by nVidia. If you will be compiling your kernel for these CPUs, you must completely remove support for the in-kernel driver as shown above. See http://www.gentoo.org/doc/en/nvidia-guide.xml for Details.

Be sure to set your personal resolution@freq (e.g. 1024x768@72) the default is 640x480@60. Now you'll probably want to have both the initial ramdisk (initrd which stores the image) to along with its filesystem loaded at boot. Genkernel users must select this option.

Linux Kernel Configuration: initrd
 Device Drivers --->
    Block devices --->
       <*> RAM block device support
          (16)   Default number of RAM disk (NEW)
          (4096) Default RAM disk size (kbytes) (NEW)

As of kernel 2.6.21 initramfs is located in General Setup:

Linux Kernel Configuration: initramfs
 General Setup --->
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

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

Linux Kernel Configuration:
 Device Drivers --->
    Input Device Support --->
        <*> Event Interface

Note: F2 does not work with USB keyboards when media-gfx/splashutils build earlier to version 1.5.3.3 is installed

(see http://bugs.gentoo.org/show_bug.cgi?id=200217)

Finishing the Kernel

After you have configured your kernel, you must now compile it . See Kernel.

If more help is needed, the Gentoo Linux Kernel Upgrade Guide is an excellent resource.


Notes:

re-emerge tuxonice-userui with fbsplash flag enabled
create a link ln -sfn /etc/splash/<your-theme> /etc/splash/suspend2
add one of the following line to /etc/hibernate/suspend2.conf:
"ProcSetting userui_program /sbin/tuxoniceui_fbsplash"
suspend2ui_fbsplash for deprecated suspend2-sources
Enable "BootSplash on" and choose a theme in /etc/hibernate/common.conf file.

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).

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 Fbsplash. The process is really quite simple and does not take more than a minute on a decent system.

Default Method: Compiling splash image directly into initramfs

The longer way is to make your whole kernel and initrd from scratch.

Code: Genkernel - making initrd image with Fbsplash
# genkernel --splash=NAME all

Replace NAME with the name of a theme located in /etc/splash/.

The quick way is to tell genkernel not to clean out the compiled files and to only build initrd. Do this if none of the kernel options where modified since the last build.

Code: Genkernel - making initrd image with Fbsplash
# genkernel --no-clean --splash=NAME initrd

Alternative Method: Compiling splash image directly into the kernel using genkernel

Warning: This methods looks a bit dubious (maybe meaning outdated and unofficially supported). I am not sure why someone would want to compile the splash into the kernel (bzImage) when with genkernel you have to use an initrd anyway. Why is this better than the default method? There needs to be more explanation here for the individual steps and a bit more beef to the summary at least.

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 --splash=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
Genkernel - Other method for compiling splash directly into kernel
Warning: This method looks a bit dubious (maybe meaning outdated and unofficially supported). I think this user saw the alternative step and not the default step because the default step had no header to mark it. (Same thing happened to me.) I'm not sure why the splash_geninitramfs step is necessary here. It makes the initramfs image not work for me and the --splash argument on genkernel should already do the same thing anyway. This method also says it compiles the splash directly into the kernel like the previous alternative method, but it does not create a bzImage or special kernel-* file. Only a remade initramfs file.

The above method did not work for me and seems too much complicated. Instead I made a simple shell script to build my kernel and initramfs with genkernel. With this method the splash should be loaded just after the boot loader (Grub, lilo, ...) so you won't see the initialisation messages from the kernel. (You will still be able to see them by editing kernel options from the boot loader)

For this script to work, you need to have app-portage/eselect and media-gfx/splashutils installed.

Code: Genkernel - Other method for compiling splash directly into kernel
#!/bin/bash

## Set your splash resolution and theme here
splashres=1024x768
splashtheme=livecd-2007.0

## Builds the kernel and initramfs with theme
## Don't forget to customize genkernel option according to your needs
genkernel --menuconfig --dmraid --no-clean --splash=$splashtheme --splash-res=$splashres all

## Adds the splash theme in the initramfs
## The name of the initramfs file should be detected automatically
## Don't forget to customize the first part of the file name (replace x86 by x64 for 64 bits platform)
splash_geninitramfs -a /boot/initramfs-genkernel-x86-`eselect kernel show | grep -o "[0-9]\.[0-9]*\.[0-9]*\-[a-z]*.*"` -v -r $splashres $splashtheme

## Emerge drivers that needs to be built against new kernel sources
#emerge -av ati-drivers

Non-genkernel

You have two options, the first is recommended.

  1. loading the initramfs image dynamically at boot time (recommended)
  2. compiling the initramfs image directly into the kernel

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 -g /boot/fbsplash-livecd-2007.0-1024x768 -r 1024x768 -v livecd-2007.0

Change the resolution and theme to match your monitor's resolution and chosen theme.

Note: If you just run splash_manager it will prompt you to create an initrd automatically

Note: To help explain what's going on here for those who don't know, the first option -g /boot/fbsplash-livecd-2007.0-1024x768 specifies where to generate the initramfs image, -r 1024x768 is the desired resolution, -v means verbose, and livecd-2007.0 is the theme to use.

Warning: 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.

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-2007.0 in the example - to your needs).

Code:
splash_geninitramfs livecd-2007.0 -r 1024x768 -g /usr/src/linux/usr/initramfs_data.cpio.gz -v

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.

If you want to use v86d for uvesafb as an iniramfs as well, then you must have built the kernel once with /usr/share/v86d/initramfs as the initramfs source in the kernel config. Don't delete the file, as above, instead append the splash image to the old initramfs with:

Code:
splash_geninitramfs livecd-2007.0 -r 1024x768 -a /usr/src/linux/usr/initramfs_data.cpio.gz -v

(Note the -a instead of -g) Now make your kernel again (don't worry, very little recompiling will happen, the only difference will be the new initramfs_data.cpio.gz is incorporated).

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-2007.0-1024x768 | cpio --list
.
dev
dev/fb
dev/vc
dev/misc
dev/null
dev/console
etc
etc/splash
etc/splash/livecd-2007.0
etc/splash/livecd-2007.0/Vera.ttf
etc/splash/livecd-2007.0/images
etc/splash/livecd-2007.0/images/background-1024x768.png
etc/splash/livecd-2007.0/images/overlay-768.png
etc/splash/livecd-2007.0/images/verbose-1024x768.png
etc/splash/livecd-2007.0/1024x768.cfg
lib
lib/splash
lib/splash/sys
lib/splash/proc
sbin
sbin/splash_helper
sbin/fbcondecor_helper
root
1307 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).

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.

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.

Converting Bootsplash Themes to Fbsplash Themes

Note: The most recent version of Bootsplash will automatically convert the themes to Fbsplash. Upon emerging Bootsplash, you should see the following:

However, if you find a bootsplash theme you want to use with Fbsplash, you can use bootsplash2fbsplash (thanks to Spock, splashutils includes this), which makes the conversion from bootsplash to Fbsplash format easy. For example, if there is a bootsplash theme named gentoo-highquality located in /etc/bootsplash, with this the utility creates a Fbsplash-compatible theme in /etc/splash/gentoo-highquality including all the required files.

Code: Convert bootsplash themes to Fbsplash
 # bootsplash2fbsplash gentoo-highquality

If you want to quickly convert all installed themes:

Code: Convert all bootsplash themes to Fbsplash
 # for i in $(ls -1 /etc/bootsplash); do bootsplash2fbsplash $i; done

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!)

Configuring Your Bootloader

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

If you use a different fb-driver, there is a good chance that there is a documentation with all parameters that you can pass to the kernel in your /usr/src/linux/Documentation/fb/. MTRR is also explained there. It optimizes the RAM-access for graphicscard with dedicated RAM. Notebook cards that use shared system RAM might not need the MTRR setting.


Note: If you are not able to specify your resolution and depth in the kernel configuration check out Bootsplash guide for the grub configuration part. Skip emerge bootsplash and similar stuff. Just scroll down to the grub configuration.

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.

Note: After reading this I stumbled across the following kernel option: CONFIG_VGACON_SOFT_SCROLLBACK (Device Drivers -> Graphics Support -> Console display driver support -> Enable Scrollback Buffer in System RAM). With this option turned on, greater values than 128K might work (I have not tested it). (2006-09-17, kernel 2.6.17-gentoo-r8)

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.

NOTE: If you still get annoying kernel messages after adding "quiet" you may add "loglevel=0" to silent remaining messages.

Warning: 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:
# bzless /usr/share/doc/splashutils*/kernel_parameters.bz2

As of splashutils-1.5.4 you should use this.

Code:
# less /usr/share/doc/splashutils*/kernel_parameters

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.

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.

Adding background to all consoles

To have all consoles display a background image with fbsplash, add the fbcondecor service to startup:

# rc-update add fbcondecor default

Note: This will load the background near the end of the boot process. To have it load earlier, set fbcondecor to load on the boot runlevel:

# rc-update add fbcondecor boot
Warning: As the fbcondecor script requires local service to run, adding fbcondecor to runlevel boot will force local to execute sooner. This may cause problems (e.g. when using some web services in local (e.g. ntp)).


For Fbsplash, add the following to your /etc/conf.d/splash:

Code: Enable gensplash on all terminals
SPLASH_TTYS="0 1 2 3 4 5 6 7 8 9 10 11 12"

and add splash to your default or boot runlevel:

# rc-update add splash default

or

# rc-update add splash boot

Fbsplash on other Distributions

Fbsplash will also work on other distributions. You can find tutorials for other distributions (Debian, Fedora and ArchLinux) at Spock's homepage.

Troubleshooting

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, Fbsplash 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.

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

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 were limited to plain vesafb but now an improved version of vesafb-tng called uvesafb is available (kernel 2.6.23 upwards).

To use uvesafb:

emerge v86d
Linux Kernel Configuration: amd64-gentoo-2.6.23

General Setup:

 [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
 (/usr/share/v86d/initramfs) Initramfs source file
Device Drivers > Graphics support:
 [*] Support for frame buffer devices
 [*]   Enable Video Mode Handling Helpers
 <*>   Enable firmware EDID
<*> Userspace VESA VGA graphics support

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 Configuration: 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 Configuration: 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 Configuration: 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)

ATI Radeon

Using radeonfb works just fine (tested with Radeon M9 and 9800PRO). Simply compile the kernel as shown below :

Linux Kernel Configuration: 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.

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

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 Configuration: 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???-??@??


Reference value for x
640x480800x6001024x7681280x10241152x8641600x1200
8 bit769771773775353800
15 bit784787790793354801
16 bit785788791794355802
24 bit786789792795803


It should work.

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.

Note: The program vbetest cannot be used on 64-bit systems (x86_64). Use hwinfo instead.
# emerge hwinfo
Code: hwinfo lists supported video modes
# hwinfo --vbe
 [...]
02: None 00.0: 11001 VESA Framebuffer
  [Created at bios.447]
  Unique ID: rdCR.IHGEtURKIN6
  Hardware Class: framebuffer
  Model: "NVIDIA G72 Board - e463h0v "
  Vendor: "NVIDIA Corporation"
  Device: "G72 Board - e463h0v "
  SubVendor: "NVIDIA"
  SubDevice:
  Revision: "Chip Rev"
  Memory Size: 128 MB
  Memory Range: 0xc0000000-0xc7ffffff (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 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 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
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  [...]

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".

Background image loading late in the boot process with compiled in initramfs image

The problem of the splash image appearing late can also occur if the fbcondecor service is started at the default stage of the boot process while having a splash image compiled directly into the kernel.

To fix remove fbcondecor from the default stage and add it to the boot stage.

Code:
# rc-update del fbcondecor
# rc-update add fbcondecor boot

You may find after doing this that the xdm init script may not start gdm successfully. Changing RC_PARALLEL_STARTUP to "no" in /etc/conf.d/rc should solve this.

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, Fbsplash 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.

In newer kernels, it seems to have moved, try:

cat /sys/class/graphics/fb0/modes

instead.

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?

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.

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

[...]

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 Configuration: 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

For iBook G4 use following Options for example in /etc/yaboot.conf

append="video=radeonfb:1024x768-32@60 quiet splash=silent,theme:livecd-2007.0 CONSOLE=/dev/tty1"

and

initrd=/boot/fbsplash-livecd-1024x768

See Spock's troubleshooting guide for details.

Error Message "The file system mounted in / doesn't contain the /dev/tty1"

This message occurs when Fbsplash utilities try to access the /dev/tty1 but the device doesn't exists. This will prevent the silent mode of genplash from running correctly, Fbsplash will change to verbose mode. Note that this error may not appear in the system logs, /var/log/messages or /var/log/dmesg. You only be able to catch it among the INIT system messages during boot. This behavior doesn't facilitate the detection and handling of this error.

What is the problem?

Fbsplash needs to access to the /dev/tty1 device in order to silent mode work properly. However sometimes Fbsplash request this device before /dev is mounted and handled by udev. Note that you may see the /dev/tty1 device after boot, but Fbsplash tried to access it before it was there. This fact also makes this hard to solve, since you may think that there is no problem with the device because you can see it after booting.

What to do?

You must create that node manually so it will be there when Fbsplash will try to access it.

How to do it?

mkdir /temp
mount --bind / /temp 
mknod /temp/dev/tty1 c 4 1 
umount /temp
rmdir /temp
Note:

Sometimes if the device is not found when you emerge media-gfx/splashutils the splash-utils package a message like may appear. Basically it suggests the same solution.

* It appears that the /dev/tty1 character device doesn't exist on 
* the root filesystem. This will prevent the silent mode from working 
* properly. You can fix the problem by doing: 
*  mount --bind / /lib/splash/tmp 
*  mknod /lib/splash/tmp/dev/tty1 c 4 1 
*  umount /lib/splash/tmp
Retrieved from "http://www.gentoo-wiki.info/Fbsplash"

Last modified: Wed, 15 Oct 2008 15:11:00 +1100 Hits: 592,960

Created by NickStallman.net, Luxury Homes Australia
Real estate agents should list their apartments, townhouses and units in Australia.