LinuxQuestions.org
Help answer threads with 0 replies.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - General
User Name
Password
Linux - General This Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.

Notices


Reply
  Search this Thread
Old 09-09-2007, 07:29 AM   #1
johnhamiltion
Member
 
Registered: Aug 2007
Posts: 92

Rep: Reputation: 15
Boot Splash HOWTO (Update).


Boot Splash HOWTO (Update).

From [url removed]
or [url removed]

A couple of days ago I installed the Debian bootsplash package and rebooted. It simply didn't work, so I went to the internet to find out why. The first site I came across was bootsplash.org and one of the first things I found, was that you need to patch your kernel.

bootsplash.org points you to:

ftp://ftp.openbios.org/pub/bootsplash/kernel/

which has patches for various (including the 2.6.15 2.6.18 2.6.20 and 2.6.21) kernels.

I am using the 2.6.22 kernel and the 2.6.21 kernel patch failed, so the first thing I had to do, was patch the patch.

So, here is a 2.6.22 patch (md5 = 138bd6104e94922464f5866b6a358903).

At the top of every bootsplash.org page, is the prominent notice:

NOTE: The bootsplash project has been superseded by Splashy, a boot splash implementation that does not require a kernel patch and is a lot easier to configure. We suggest you go and update to Splashy. This page will stay up for convenience reasons but no new patches will be posted.

So, I tried Splashy,... and all I can say is, DON'T BOTHER.

Who wants a bootsplash that adds an extra 30 seconds to your boot time and has a progress bar that seems to be tracking the progress of a learner driver. The fact that Splashy does not work well is not totally the fault of its author, it is simply that the whole idea is fatally flawed. In order, to not use a simple kernel patch, the whole frame-buffer machinery has to be crammed into the initial ram disk, then unpacked and fired up at boot, and that all takes extra time.

SuSE will never change from bootsplash, to Splashy. You have to wonder; Why would one want to close down a perfectly acceptable bootsplash arrangement, for one that hardly works and has no hope of working well? Actually, don't wonder. This is just another, albeit subtle, way to sabotage Linux.

It is reminiscent of the NTFS (read-write) kernel driver affair, where the kernel driver was abandoned in favor of the NTFS/fuse user-space driver. Of course, no user-space driver will ever compete favorably with Microsoft's NTFS kernel drivers. But then, that was the whole point, wasn't it?

By lying about the dangers of the NTFS kernel driver, certain kernel "developers" were able to have the driver expelled from the Linux kernel and the NTFS/fuse project crowned as the only way forward. Of course, if the kernel "developers" had actually been concerned about the dangers of the driver, they would have fixed the offending code, not thrown the code away.

Save the kernel and patch somewhere. I chose /usr/src/.

mv bootsplash-3.1.6-2.6.22.diff.bz2 linux-2.6.22.tar.bz2 /usr/src/
cd /usr/src/

Unpackage everything.

tar -jxf linux-2.6.22.tar.bz2
bunzip2 bootsplash-3.1.6-2.6.22.diff.bz2

Change to the new kernel source directory and patch the kernel.

cd /usr/src/linux-2.6.22/
patch -p1 < ../bootsplash-3.1.6-2.6.22.diff

Copy your current kernel configuration file (that came with your distro) to .config

cp /boot/current-kernel-config /usr/src/linux-2.6.22/.config

Replace "current-kernel-config" with whatever it's real name is. By the way, a gzipped copy of the running kernel's configuration, is often available at /proc/config.gz. Now, run menuconfig (or xconfig or gconfig)

make menuconfig

Make sure the following are set (or unset, as the case maybe):

Code:
Device Drivers  --->
    Graphics support  --->
        <*> Support for frame buffer devices
        [*] VESA VGA graphics support
        [ ] Bootup logo  --->
            Bootsplash configuration  --->
            [*] Bootup splash screen
            Console display driver support  --->
            <*> Framebuffer Console support

Device Drivers  --->
    Block devices  --->
        <*> RAM disk support
Make any other desired alterations to the configuration. Then build the kernel packages with:

make binrpm-pkg (SuSE Mandriva Red Hat)
make deb-pkg (Debian)

For help on compiling a kernel, see: [url removed]

If you are using Debian, you should install the packages:

bootsplash
bootsplash-theme-debian
linux-patch-bootsplash
sysv-rc-bootsplash

I have only installed the first 2 so far (as they were on the install DVDs). The 2nd package installs a bootsplash theme (the pictures that will be displayed and a configuration file). If you are not using Debian, then you will have to find and install a theme yourself (if you like, you can use the one from Debian).

If your distribution does not have pre-compiled packages, then you should download

bootsplash_3.3.orig.tar.gz

from Debian and compile, and install it, with the commands:

tar -zxf bootsplash_3.3.orig.tar.gz
cd bootsplash-3.3/Utilities
make

You have to install the programs by hand (ie, copy them to /usr/bin).

You may also wonder why bootsplash.org offers version 3.0.7 (which hasn't been current since 2004) from their "Kernel" page. Interestingly, a different version, though still not current, is offered from their "Userspace" page (version 3.1).

You may also wonder why bootsplash.org suggests that you run make splash instead of make.

The answer to the 2nd question is that make should make the programs splash, splashpbm, fbresolution, fbtruetype and fbmngplay, whereas, make splash, will only make the program splash. The answer to the 1st question should be becoming clear to you by now.

I said "should make" because one, fbmngplay, needs a patch to compile.

Since only Debian provides manual pages for the above commands (except splashpbm) I have packaged them here.

Now that you have the program splash, you can build a new initrd (initial ram disk) containing all the bootsplash apparatus. First, we should deal with the misdirection from bootsplash.org:

bootsplash.org suggests that you build a new initrd with the command:

/sbin/splash -s -f \
/etc/bootsplash/themes/yourtheme/config/bootsplash-1024x768.cfg \
>> /boot/initrd.splash


Now here, bootsplash.org, has strayed from the rule of "plausible deniability" (you do not lie to people unless you can excuse your lie as a simple mistake, or misunderstanding). The command given here could not possibly work, for any form of initrd that I am familiar with. There may be some rare varieties of initrd for which this command would work, however, I do not know of any.

Nearly all distributions (Debian SuSE Mandriva Red Hat etc) now use cpio archives for their initrd and they all compress their initrd with gzip. First, you cannot just dump a few files at the end of a cpio archive (as the above command does) and expect them to be recognized. Cpio archives just don't work that way. And even if you could, you would have to decompress the archive to have any prospect of success with the above command.

Previous to the adoption of cpio archives, initial ram disks, were most commonly, compressed ext2 filesystems images. The bootsplash.org command will not work for these older versions, either.

The bootsplash.org command would actually work, if you had compiled all necessary drivers into your kernel and thus did not use an initial ram disk, previous to installing bootsplash. Of course, almost no one would be in this situation. However, since bootsplash.org claim that you can update your previously existing initial ram disk with their command, you can be sure they intend to mislead you.

You may be wondering why bootsplash.org, and the other web-sites pushing this clearly false command, are misleading you in this way.

So how do you really create a new initial ram disk.

Install the initramfs-tools package. The Debian people have written a small program (a hook) telling update-initramfs (from the initramfs-tools package) to include the bootsplash file, whenever update-initramfs is run. However, a mistake in this program,

/usr/share/initramfs-tools/hooks/bootsplash, has to be corrected first.

Change the last line: splash -s -f $SPLASH_FILE > $DESTDIR/bootsplash

To: $SPLASH_BIN -s -f $SPLASH_FILE > $DESTDIR/bootsplash

Now run update-initramfs:

update-initramfs -u -k 2.6.22 (u for update initramfs) or
update-initramfs -c -k 2.6.22 (c for create initramfs)

If you are not running Debian, then you will have to manually unpack your current initrd file, add the bootsplash file and pack it up again. I will explain how to do this at some later date. It is not hard. Here is how:

cd /boot; mv initrd-2.6.22 initrd-2.6.22.old
mkdir /boot/initrd.dir
cd /boot/initrd.dir
gunzip -c ../initrd-2.6.22.old > initrd
cpio -vid < initrd
rm initrd
/usr/sbin/splash -s -f /path/to/config/bootsplash-1024x768.cfg > bootsplash
find | cpio -o -H newc | gzip -9 > ../initrd-2.6.22
cd /boot; rm -fr /boot/initrd.dir

Make the obvious changes (change initrd-2.6.22 to the name of your initrd, change /path/to/config... to the actual path to the bootsplash configuration). Note that the file you add to the initrd must be named bootsplash.

Now you need to edit your /boot/grub/menu.lst file. Mine looks like:

Code:
title Debian GNU/Linux -- My Brand New Kernel 2.6.22
      root	(hd0,0)
      kernel	/boot/vmlinuz-2.6.22 root=/dev/sda1 vga=791 splash=silent ro 
      initrd	/boot/initrd.img-2.6.22
The needed parameters are in red. The vga parameter determines the frame-buffer resolution:

vga=785 for 640x480
vga=788 for 800x600
vga=791 for 1024x768
vga=355 for 1152x864
vga=794 for 1280x1024
vga=798 for 1600x1200

These correspond to the VESA 16-bit modes. Apparently, if you pass vga as a boot parameter, the kernel assumes you will be using the VESA frame-buffer (which you have compiled into your kernel). It is possible to use various other frame-buffer devices, but since I haven't been able to get the NVIDIA frame-buffer device to work, I won't say anything more about this.

The default Debian 1024x768 theme worked (up to a point), however, a couple of 1280x1024 themes I tried, did not.

Some configuration file causes the bootsplash to flash quickly (6 times) part way though the boot. I haven't been able to track down the cause of this yet, but hopefully, I will soon, as it is rather distracting. This is the sort of thing you expect in a project that is being actively sabotaged.

It turns out that this little piece of probable sabotage, is Debian specific. This accident, certainly has plausible deniability. At some point, some package has added six lines, similar to

SCREEN_FONT_vc2=lat0-sun16

to the end of the file /etc/console-tools/config. These lines supposedly set the font on all the virtual terminals. They are totally unnecessary, and removing them stops the flashing.

The default Debian theme has a progress bar. Apparently, one can get that to work if one installs the sysv-rc-bootsplash package, but I haven't tried this yet either.

I have many half completed guides, that were never published because they were not finished to my satisfaction. Lately, I have had a change of heart, and will publish some incomplete work, like this guide. Hopefully, this will not lead to you being too misinformed on the subject.

From [url removed]
or [url removed]

Last edited by XavierP; 03-28-2008 at 04:17 PM. Reason: pages good, site bad
 
Old 09-09-2007, 10:28 AM   #2
AlucardZero
Senior Member
 
Registered: May 2006
Location: USA
Distribution: Debian
Posts: 4,824

Rep: Reputation: 615Reputation: 615Reputation: 615Reputation: 615Reputation: 615Reputation: 615
Were you not asked to submit this to the tutorial section?
 
Old 09-11-2007, 07:51 AM   #3
ComputerGreek
Member
 
Registered: Sep 2007
Posts: 152

Rep: Reputation: 30
This is an excellent howto. Worked for me.

www.linuxquestions.org needs more like this.
 
Old 09-13-2007, 09:13 AM   #4
ComputerGreek
Member
 
Registered: Sep 2007
Posts: 152

Rep: Reputation: 30
Hi johnhamiltion, I used the Debian splash as you suggested. When you logoff, the animated globe is on a solid blue background which hides part of the splash image and looks real ugly. I have been trying to fix it by trial and error, but haven't been able to. Do you know how?
 
Old 03-12-2008, 03:14 PM   #5
roadnottaken
LQ Newbie
 
Registered: Mar 2008
Posts: 1

Rep: Reputation: 0
Angry

Note for Debian users:

Some time in the past few days, Debian removed the bootsplash packages from their main archive and made bootsplash into a virtual package provided by (of course) splashy. Fortunately snapshot.debian.net still contains the various bootsplash packages, although I do not know how long they will remain there.

Additionally, the linux-patch bootsplash package is the patch for the 2.6.21 kernel. The sysv-rc-bootsplash package also depends on an older version of sysv-rc. Therefore the only packages that are really useful are bootsplash and bootsplash-theme-debian.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Boot Splash HOWTO. johnhamiltion Linux - Software 11 09-07-2007 11:06 PM
Boot splash edison Slackware 8 02-03-2005 05:41 PM
Dual Boot = No Boot (hangs at bios splash screen) nedwardss Debian 4 12-03-2004 04:09 AM
Howto update KDE and howto switch off kdm/gdm Canaris Linux - Software 1 06-15-2003 08:40 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - General

All times are GMT -5. The time now is 06:13 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration