F.A.Q.


===== How does Splashy works? ====== Read this from: [[How it works]] ===== What do I need to run Splashy (aka Requisites) ===== First of all, you need to have Splashy installed. Either do this through some package for your distro or [[installation|follow this link]]. Also make sure you are running a 2.6 (or newer) [[http://kernel.org|kernel]]. Your kernel must have framebuffer support and a valid framebuffer driver. * Using //vesafb// is **strongly recommended** Both your [[http://www.openbios.org|BIOS]] and your graphics card should support [[http://www.vesa.org|VESA 2.0]]. If it doesn't, you will not be able to use //vesafb// driver. In such case, [[?faq#How can I use another fb driver other than VESA (or, My BIOS doesn't support vesafb)|read this]]. ===== What Operating Systems/Linux distributions are supported? ===== Official support from the Splashy team is available for the following Linux distributions: * [[http://www.debian.org|Debian]] (Sid/Etch) * [[Slackware]] * [[Ubuntu]] Other Linux distributions known to support or include Splashy in some way include: * [[http://www.archlinux.org|Arch Linux]] * [[http://fedora.redhat.com|Fedora]] * [[http://www.gentoo.org|Gentoo]] * [[http://www.kubuntu.org|Kubuntu]] * [[http://www.mandriva.com|Mandriva]] * [[http://www.mepis.org|SimplyMEPIS]] * [[http://www.xandros.com|Xandros]] * All Debian variants: [[http://www.knoppix.org|Knoppix]], [[http://www.linspire.com|Linspire]], etc. Other POSIX OS's known to support Splashy: * [[http://www.freebsd.org|FreeBSD]] ===== Does Splashy work with my distro/OS? ===== Although Splashy is developed on Debian ([[http://www.ubuntu.org|Ubuntu]] and plain vanilla [[http://www.debian.org|Sid]]), Splashy was conceived to work with any [[http://www.pasc.org|POSIX]] based system for as long as: - [[http://www.gnu.org/software/libc|libc6]], [[http://www.gtk.org|glib2.x]], [[http://wwwdirectfb.org|directfb]] (our main libraries) have been ported over - There is a mean for running startup scripts (i.e. SysV init) - Your kernel supports framebuffers (Linux 2.6 kernels and up((directfb doesn't compile against 2.4 kernels. See [[http://alioth.debian.org/tracker/index.php?func=detail&aid=302392&group_id=30657&atid=411690|bug# 302392]]))) Essentially this means that all modern Linux distributions work fine with Splashy, as well as the [[http://www.freebsd.org|*BSD]] variants. There is **NO** need to patch the kernel or any other system binary. ===== I don't see any image at boot time ===== Or you get an error like **ERROR: Couldn't splashy_start_splashy(). Error -2** Make your bootloader config file has the **//vga=791 splash//** parameter. Values bigger than //792// are no supported by VESA, so make sure that your resolution is within the allowed range. For [[http://www.gnu.org/software/grub|GRuB]] users this is done through the ///boot/grub/menu.lst// file, in the lines //nonaltoptions//, //kopt// or //kernel// (for the kernel you are running), adding //vga=791 splash//. For [[http://lilo.go.dyndns.org/|LiLO]] users just add //vga=791 splash// in your kernel section or in the common parameters section (do not put in inside //append=//) in your ///etc/lilo.conf// file. Read ///usr/share/doc/splashy/README// for more information. ===== How can I use another fb driver other than VESA (or, My BIOS doesn't support vesafb) ===== Instead of //vga=0x314// use //video=**MYFB**// (where **MYFB** can be any of your kernel's framebuffer drivers) in your bootloader's configuration file. **Note:** In lilo, //vga=// is a separate configuration line. In this case, you'll have to comment out this line (or remove it) and append the //video=// parameter in the //append=// line (use spaces to separate various append values). If you compiled you framebuffer driver(s) as module(s) you can see its/their name by doing ls /lib/modules/`uname -r`/kernel/drivers/video/*fb.ko /lib/modules/`uname -r`/kernel/drivers/video/*/*fb.ko Obviously, you must only take the filename (not the directory path) and remove the //.ko// suffix. You might also want to set your screen resolution, colour depth and other graphical settings. To do so you will have to add some parameters to the //video=// argument after the frame buffer driver, using a colon (//://) as a separator: video=:x[-][@refresh] **Note:** Not all framebuffer drivers support this. See //Documentation/fb/modedb.txt// in the kernel sources for more information. ===== But I don't use Grub or Lilo ===== Splashy doesn't depend on any kernel patch or any boot loader. All you need is to tell the kernel to load a virtual-frame-buffer (fb) as soon as possible (before Splashy starts). The best way to do this is to edit your bootloader's config file as stated previously. ===== I cannot use /dev/fb0 ===== Splashy will use ///dev/fb0// to print to the framebuffer if that device is available. But you can use any other framebuffer device by setting the path in the //FRAMEBUFFER// environment variable. For example: FRAMEBUFFER=/dev/fb1 ===== Splashy just doesn't work! ===== The easiest way to handle this si tring to reinstall it. In [[http://www.debian.org|Debian]]: apt-get --purge remove splashy usplash update-rc.d -f splashy remove # if you want to be super kosher, then do these as well: rm -f /etc/init.d/splashy* /etc/init.d/usplash* rm -f /etc/rcS.d/S*splashy* /etc/default/splashy rm -fr /etc/splashy GRuB users might need to edit your ///boot/grub/menu.lst// like: #kopt= vga=0x314 splash And then run: update-grub After that, reboot and it should work fine. ===== During boot I get the error: vesafb: probe failed with error -6 (or something similar) ===== This problem occurs when the the fb driver (usually vesafb) which is loaded during boot can't work together with your video-card's framebuffer. You can check this problem by doing: dmesg | grep fb If the error shows up, you know what your problem is. To solve the problem you will need to do the following: Find out what the fb driver for your video card is. [[http://www.google.com|Google]] can be great help, but sometimes it's quite obvious. You can look in the video drivers directory (do: //ls /lib/modules/`uname -r`/kernel/drivers/video// ) and guess which driver should work, then verify this by searching or asking someone who might know. List the contents of the initrd directory (do: //ls /lib/modules/`uname -r`/initrd// ). Look for the module which was causing the error (usually //vesafb//. The extension of the file can be //.ko// or //.o// depending on if you are using a 2.6 kernel or an older one respectively). Now you will need to copy the correct driver to the initrd directory and remove the faulty one. Make sure that you copy the driver you need. As an example: cp /lib/modules/`uname -r`/kernel/drivers/video/aty/atyfb.ko /lib/modules/`uname -r`/initrd/atyfb.ko rm /lib/modules/`uname -r`/initrd/vesafb.ko Now the only thing we have to do is to make the initrd image (which is started at boot). You have to use the correct image, so check your bootloader configuration (///boot/grub/menu.lst// for Grub), and look for the line which mentions //initrd// (**Note:** If you have more boot options, because you have more kernels installed for instance, you must look for the initrd line under the boot option which you are currently using). The 2.6.8.1-3-386 kernel, for example, usually uses the file initrd.img-2.6.8.1-3-386 which is located in the /boot directory. In order to make the initrd image you will have to do: mkinitrd -o /boot/initrd.img-2.6.8.1-3-386 You must replace /boot/initrd.img-2.6.8.1-3-386 with the correct initrd file. When mkinitrd is done, you can reboot. Splashy should work now. ===== At about 70-80% of booting process Splashy goes to verbose mode ===== Are you getting this error message? t_kernel_font: Invalid Argument In this case it's a bug related with the ///etc/init.d/console-screen.sh// file that does not set the font for framebuffer properly. This bug is unsolved. The work around is to edit the ///etc/splashy/config.xml// file and set //autoverboseonerror// to "//no//" (without the quotes). ===== After installing Splashy, the boot-up text has shrunk. How to bring it back to original size? ===== This means that you have correctly setup your kernel framebuffer. In other words, it is not that the tezt is smaller, it is that the screen is wider! You have set a higher resolution to your console. If you don't want to see Splashy during boot any more and you want to see your console messages the way they were, simply remove it and restore (or delete) your previous //vga=// setting from your kernel parameters. On Debian systems: * apt-get --purge remove splashy splashy-themes * And then remove //vga=0xNNN// or //video=*fb...// from your kernel boot parameters (in LILO, Grub, etc) ===== Splashy uses the wrong resolution at boot, how do I fix this? ===== Assuming that you are using the right vga=XXX parameter to your kernel, you might still have to tell your libdirectfb to pick the right resolution and refresh rate for you. When Splashy asks DirectFB to select a video mode by width x height, DirectFB chooses the first one listed in /etc/fb.modes that matches the desired size. With the default **/etc/fb.modes** shipped in Debian, the first 1280x1024 mode is "1280x1024, 43 Hz, Interlaced", which your monitor might not handle but your video card might support it. Try moving the mode that you want to the top of /etc/fb.modes (say 1280x1024 @ 60Hz). ===== Splashy does not run under upstart in Ubuntu (Edgy) ===== We are aware of this and we opened a bug in Ubuntu's bug tracker: https://launchpad.net/distros/ubuntu/+source/upstart/+bug/76304 The workaround for now is to simply apply this to /etc/event.d/rcS: --- /etc/event.d/rcS 2006-09-13 18:47:27.000000000 -0400 +++ rcS 2006-12-18 13:12:42.000000000 -0500 @@ -14,6 +14,12 @@ # information (we enter rc1 not rcS for maintenance). Run /etc/init.d/rc # without information so that it defaults to previous=N runlevel=S. script - runlevel --set S >/dev/null || true + set $(runlevel --set S || true) + if [ "$1" != "unknown" ]; then + PREVLEVEL=$1 + RUNLEVEL=$2 + export PREVLEVEL RUNLEVEL + fi + exec /etc/init.d/rcS end script ===== When running from initramfs Splashy takes 100% of the CPU and boot process stops (using init only. not upstart) ===== Splashy just entered Lenny (Debian testing) and the version of directfb of this release does not have this patch. Please do the following to apply this patch to it: cd /usr/src apt-get source libdirectfb-dev cd directfb* # edit inputdrivers/keyboard/keyboard.c as the patch says apt-get install build-essentials devscripts # optional debuild -us -uc dpkg -i ../libdirectfb*.deb This((http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=383060)) is a very well known issue. Thanks to the guys are RPath Linux, we have a work around that works((https://issues.rpath.com/browse/RPL-1593)). This happens because of how directfb (version 1.1 and below) binds to ttyN < 7 during boot. Forcing directfb to use tty8 fixes the issue for some distributions. A better fix is to add usleep(2000) to the keyboard even thread in directfb: only in patch2: unchanged: --- directfb-0.9.25.1.orig/inputdrivers/keyboard/keyboard.c +++ directfb-0.9.25.1/inputdrivers/keyboard/keyboard.c @@ -279,6 +279,8 @@ keyboard_set_lights( data, evt.locks ); } + if (readlen <= 0) + usleep(2000); } if (readlen <= 0 && errno != EINTR) ===== How do I examine the content of /boot/initrd.img ===== Say that you want to make sure that /sbin/splashy is in your initrd image file. You can do the following to examine its contents: mkdir -p /tmp/initrd cd /tmp/initrd cat /boot/initrd.img | gzip -d | cpio -i Then read the **/init** script (or /linuxrc) to see how the boot process works and look for /sbin/splashy (or /usr/sbin/splashy) with: find . -name splashy ===== Why does Splashy time out during boot? ===== Splashy has a safety 120 seconds timeout period if it does not receive update commands from splashy_update. The reason why this is happening varies from distribution to distribution, here are possible causes for this to happen on Debian related distributions: * something changes the /dev/tty* or /dev/console devices while Splashy is running. libdirectfb keyboard event thread would either make libdirectfb crash or loop continuously taking 100% of the CPU. To fix it you will need to find the culprit and tell it to not run when Splashy is running like: #!/bin/sh pidof splashy > /dev/null && touch /lib/init/rw/splashy/splashy-stopped-foo && exit 0 # where "foo" is the name of the script that Splashy needs to be stopped. Here are examples of how to stop two known scripts in Debian that make this situation happen: /etc/init.d/keymap.sh #!/bin/sh pidof splashy > /dev/null && touch /lib/init/rw/splashy/splashy-stopped-keymap && exit 0 /etc/init.d/console-screen.sh #!/bin/sh pidof splashy > /dev/null && touch /lib/init/rw/splashy/splashy-stopped-console-screen && exit 0 Note that Splashy LSB script will restart these two scripts if the /lib/init/rw/splashy/ files exists. See ///etc/lsb-base-loggin.sh//. * No script ever send anything to Splashy during those 120 seconds. Check your initrc scripts to make sure that splashy_update is called correctly. //[[start|Go back to main page]]//