fbsplash::troubleshooting
- Some services do not start during boot when using splashutils 1.1.9.x
- The silent splash screen sort of blinks just before "Initializing the kernel" is replaced with "Booting the system".
- The kernel messages are all over the silent splash during the initial stages of the system boot-up.
- The F2 key doesn't seem to work. I can switch from silent to verbose, but not the other way around.
- The silent splash screen suddenly gets all black at one point during the boot. The progress bar seems to work, but I have to switch to verbose and back to be able to see the splash picture again.
- The splash doesn't work and I get error messages about 8bpp pictures that cannot be found.
Some services do not start during boot when using splashutils 1.1.9.x
With the new versions of splashutils, additional kernel command line arguments such as
CONSOLE=/dev/tty1 and quiet are necessary for things to work
properly. Starting with 1.1.9, splashutils use a separate tty for the silent mode. The silent tty
is normally not switched to the KD_GRAPHICS mode, so all text printed to that tty will appear on the
silent image. The default behaviour of /sbin/init is to output all messages to the foregroud
tty (/dev/console). This conflicts with what we want in splashutils, thus CONSOLE=/dev/tty1 has
to be used to inform init which tty to print the messages to.
Unfortunately, the very option which allows us to do stuff the way we like, may
break some service scripts. On my system the affected services were hddtemp and svscan.
I have opened bugs for both of them: #86550 (hddtemp)
and #86562 (svscan).
But why are things breaking in the first place? init forces all programs it starts to have a
controlling tty. By default, the controlling tty is /dev/console. When the CONSOLE=
option is used, a user-specified tty is used as the controlling tty. Some services in /etc/init.d
don't detach themselves from their controlling tty. When /dev/console is used, it doesn't seem
to be a problem, but when a specific tty such as /dev/tty1 takes its place, things start to break.
The service starts normally and works properly till the boot-up is finished. After that, it gets killed. This
might be confusing, as it seems as if the service just hasn't started.
To fix the problem, a call to setsid() is necessary. setsid() switches the program
to a new session, thus detaching it from any controlling ttys. The setsid() call can either be
embedded in the code (hddtemp) or added directly in the initscript (svscan). If you happen to be using a package
which breaks when CONSOLE=/dev/tty1 is used, please open a bug for it and assign it either to me, or,
better yet, to the maintainer of the package (if you know who that is). In the latter case, please provide a link
to this page.
The silent splash screen sort of blinks just before "Initializing the kernel" is replaced with "Booting the system".
The scripts from splashutils-gentoo-0.1.8 (splashutils-1.1.9.4 and newer) automatically select a silent
splash tty that does not cause conflicts with any services (such as consolefont). Which tty is selected
depends on the RC_TTY_NUMBER setting from /etc/conf.d/rc. For example, if
RC_TTY_NUMBER is set to 11, tty12 will be used for silent splash. The default silent splash
tty is tty8 and this tty is always used by the splash utilities contained in an initramfs, unless the
setting is overridden by the tty:n splash option in the kernel command line.
The blinking can occur when the user hasn't specified the tty:n option and a tty
other than tty8 is selected by the scripts as the silent tty. Adjust the initial silent tty
to RC_TTY_NUMBER+1 to avoid this side effect. For example, if RC_TTY_NUMBER is
set to 11, you should use splash=silent,theme:name,tty:12 on your kernel command line.
The kernel messages are all over the silent splash during the initial stages of the system boot-up.
Make sure you have added the quiet option to your kernel command line. If for some
reason that doesn't solve the problem completely, you can still use the kdgraphics
splash option (eg. splash=silent,kdgraphics,theme:linux).
The F2 key doesn't seem to work. I can switch from silent to verbose, but not the other way around.
Make sure you have compiled your kernel with CONFIG_INPUT_EVDEV=y.
The silent splash screen suddenly gets all black at one point during the boot. The progress bar seems to work, but I have to switch to verbose and back to be able to see the splash picture again.
The described effect can occur when a service (consolefont, usually) messes
with the silent splash tty. There are a number of ways of fixing the problem:
- use the
kdgraphicskernel command line option - adjust the
RC_TTY_NUMBERvariable in/etc/conf.d/rc - manually set the silent splash tty via the
tty:nkernel command line splash option
The splash doesn't work and I get error messages about 8 bpp pictures that cannot be found.
This means you're running in a 8 bpp mode (ie. a mode, when no more than 256 colors can simultaneously be displayed on the screen). 8 bpp modes are partially supported by fbsplash. The verbose and silent images will work, if appropriate image files are provided (ie. images with indexed, 256-color palette; please refer to the splashutils documentation for more details). The progress bar, boot icons, and other fancy stuff will not work in 8 bpp modes.
Most of the time you won't want to run your framebuffer in a 8 bpp mode. In order to avoid it (some
framebuffer drivers tend to set 8 bpp by default) you have to explicitly specify the color depth on the
kernel command line, for example: video=radeonfb:1280x1024-32@75. The -32
represents the bit depth (in this case it's 32 bits per pixel).