HOWTO gensplash

Uit Gentoo Linux Wiki

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

Inhoud

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

  1. Generic Frame Buffer Devices
    • vesafb (vesa frame buffer)
    • vesafb-tng (vesa frame buffer - de volgende generatie)
  2. 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 .

Notitie: Zorg ervoor dat je kernel sources de fbsplash patchset bevatten . In gentoo-sources is dat standaard aanwezig.


[bewerken] De Kernel configureren en Compileren

Samengevat, dit is wat we gaan doen.

  1. Emerge splashutils.
  2. Emerge splash-themes-gentoo & splash-themes-livecd, als je wat thema's wilt.
  3. Zorg ervoor dat /usr/src/linux naar je gentoo-sources verwijst.
  4. Configureer je Kernel, hetzij door genkernel of handmatig.


Tip: Sommige gebruikers kunnen problemen krijgen als splashutils geinstalleerd wordt voordat de kernel geconfigureerd is. In dat geval, gewoon emerge splashutils uitvoeren nadat de kernel geconfigureerd is.


Code: Emerge van splashutils & thema's
# emerge -va splashutils splash-themes-gentoo splash-themes-livecd
Notitie: Het livecd-2006.1 thema gebruikt PNG afbeeldingen ipv JPEGs. Als je van plan bent om dit thema te gebruiken, zet dan png in je USE vlaggen voor je bovenstaande emerge uitvoert.


Notitie: If the splash theme you want to use contains text output (like livecd-2006.1) you will need to emerge splashutils with the truetype USE flag.


Notitie: When using kernel 2.6.16 some users might have trouble emerging splashutils with an error in input.h. This is a known bug with the kernel header. You can try to fix it manually by moving the line "#ifdef __KERNEL__" from somewhere (about line 839) right above the In-kernel definitions to a position before the declaration of struct input_device_id (about line 799) in the file usr/src/linux/include/linux/input.h from the kernel source tree.

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.

  1. loading the initramfs image dynamically at boot time (recommended)
  2. 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.

Notitie: To help explain what's going on here for those who don't know, the first command we gave "livecd-2006.1" simply tells it which theme to use, the next command "-r 1024x768" is our desired resolution, then "-g /boot/fbsplash-livecd-2006.1-1024x768" tells it where to generate the new initramfs file, and finally -v simply tells it to be verbose in its output so we can see what it's working on ;-)

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

Notitie: The most recent version of Bootsplash will automatically convert the themes to Gensplash. Upon emerging Bootsplash, you should see the following:
  • 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
Notitie: If you are not able to specify your resolution and depth in the kernel configuration check out Bootsplash:Grubsplash Howto 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.

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

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
Notitie: This option will load the splash page near the end of the boot process. To use the bootsplash immediately, add splash to load on BOOT
# 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???-??@??


Reference value for x
640x480 800x600 1024x768 1280x1024 1152x864 1600x1200
8 bit 769771773775353800
15 bit 784787790793354801
16 bit 785788791794355802
24 bit 786789792795 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.

Afkomstig van de Nederlandstalige Gentoo Wiki, het vrije Gentoo handboek. "http://nl.gentoo-wiki.com/HOWTO_gensplash"
Persoonlijke instellingen