The Gentoo Framebuffer, Bootsplash & Grubsplash How-To
(now updated for 2.6.x kernel tree)
Latest Screenshot
Self Portrait (Kernel 2.6.4)
Patches
Here are bootsplash patches for all available kernel versions.
Objectives
- High resolution framebuffer (example)
- High resolution bootsplash image (example)
- Smaller fonts on framebuffer for greater area (example)
- Greater choice of fonts for varied appearance
- Personalising your bootsplash theme (example)
- Taking screenshots of your framebuffer and bootsplash
- Using multimedia apps and graphical browser on framebuffer
- Personalising your grub splash screen image
- Extending framebuffer and bootsplash to all 12 virtual terminals
Benefits
- Higher resolution
- Configurable and pretty appearance
- Multimedia and graphical browser capability on VTs
- Framebuffer will work on any kernel version
Drawbacks
- Slow scrolling of text output on VTs
- Reduced or zero scroll back buffer
High resolution framebuffer & bootsplash!
- Update portage tree.
- Emerge media-gfx/bootsplash (graphical backgrounds for frame buffer consoles).
Overwrite your old bootsplash configuration files.
- Check that the symbolic link /usr/src/linux is pointing to the kernel of your choice.
Some kernels such as gentoo-sources, gaming-sources and xfs-sources already have the bootsplash patch built in. Check whether your kernel supplies bootsplash and if it does not have it then patch the kernel as below.
- ebuild /var/db/pkg/media-gfx/bootsplash-0.6-r2/bootsplash-0.6-r9.ebuild config
复制代码
Or you can run the following command which takes an additional argument and executes the line above.
- Enter the kernel configuration.
-
- cd /usr/src/linux
- make menuconfig
复制代码
For all kernel trees build these options directly into your kernel. Do NOT make them modules and do not enable nvidia or ATi specific options.
For 2.6.x kernel tree enable the following options.
-
- Code maturity level options --->
- \[*\] Prompt for development and/or incomplete code/drivers
- Processor type and features --->
- \[*\] MTRR (Memory Type Range Register) support
- Device Drivers --->
- Block devices --->
- <*> Loopback device support
- <*> RAM disk support
- (4096) Default RAM disk size
- \[*\] Initial RAM disk (initrd) support
- Graphics support --->
- \[*\] Support for frame buffer devices
- \[*\] VESA VGA graphics support
- Console display driver support --->
- \[*\] Video mode selection support
- <*> Framebuffer Console support
- Bootsplash configuration --->
- \[*\] Bootup splash screen
复制代码
For 2.4.x kernel tree enable the following options.
- Code maturity level options --->
- \[*\] Prompt for development and/or incomplete code/drivers
- Processor type and features --->
- \[*\] MTRR (Memory Type Range Register) support
- Block Devices ->
- \[*\] Loopback device support
- \[*\] RAM disk support
- (4096) Default RAM disk size
- \[*\] Initial RAM disk (initrd) support
- Console Drivers ->
- \[*\] VGA text console
- \[*\] Video mode selection support
- Console Drivers -> Frame-buffer support ->
- \[*\] Support for frame buffer devices
- \[*\] VESA VGA graphics console
- \[*\] Use splash screen instead of boot logo
复制代码
For any kernel do NOT enable the following options or else you risk bootsplash not working or framebuffer corruption when switching VTs.
- Device Drivers --->
- Graphics support --->
- < > nVidia Riva support (do not enable!)
- Logo configuration --->
- [ ] Bootup logo (do not enable!)
复制代码
If you have problems later disable the following option in kernel
- Device Drivers --->
- Character devices --->
- < > /dev/agpgart (AGP Support)
复制代码
And add the following line to your /etc/X11/XF86Config[-4] file.
- Compile your kernel as below for 2.6.x kernel.
Compile your kernel as below for 2.4.x kernel.
- make dep && make clean bzImage modules modules_install
复制代码
Install your kernel as below but do NOT unmount /boot and do NOT reboot until asked to later.
- mount /boot
- mv /boot/bzImage /boot/bzImage.old
- cp /usr/src/linux/arch/i386/boot/bzImage /boot/
复制代码
If you get errors during kernel compilation or missing options during configuration do as below.
- cd /usr/src/linux/
- mv .config ~/kernel.config
- make mrproper
- mv ~/kernel.config .config
- make oldconfig
- make menuconfig
复制代码
- Assuming /boot is mounted set an image to appear during the boot process.
- /sbin/splash -s -f /etc/bootsplash/default/config/bootsplash-1280x1024.cfg > /boot/initrd-1280x1024
复制代码
Or you can copy an already exisiting initrd image that is provided with the bootsplash package.
- cp /usr/share/bootsplash/initrd-1280x1024 /boot/
复制代码
- Edit your /boot/grub/grub.conf file. The example below has been provided for your convenience. Here are the meanings of the various parameters.
video= goes on kernel line and controls display options such as ywrap and mtrr which speed up framebuffer scrolling
vga= goes on kernel line and controls the resolution and colour depth of framebuffer
splash= goes on kernel line and takes either 'silent' or 'verbose' but silent boots may not work
initrd= goes on a new line after kernel line and loads an image during the booting process.
- default 0
- timeout 10
- splashimage=(hd0,0)/boot/grub/splash.xpm.gz
- # With both framebuffer and bootsplash
- title=Gentoo GNU/Linux 1.4 (+fb +splash)
- root=(hd0,0)
- kernel=(hd0,0)/boot/bzImage root=/dev/hda3 video=vesafb:ywrap,mtrr vga=0x31A
- initrd=/boot/initrd-1280x1024
- # With framebuffer but without bootsplash
- title=Gentoo GNU/Linux 1.4 (+fb -splash)
- root=(hd0,0)
- kernel=(hd0,0)/boot/bzImage root=/dev/hda3 video=vesafb:ywrap,mtrr vga=0x31A
- # Without both framebuffer and bootsplash
- title=Gentoo GNU/Linux 1.4 (-fb -splash)
- root=(hd0,0)
- kernel=(hd0,0)/boot/bzImage root=/dev/hda3
复制代码
Here is a lilo.conf example configuration courtesy of ophidia.
- image="/boot/bzImage"
- vga=0x31A
- root="/dev/hdb2"
- label="2.4.20-r4"
- read-only # read-only for checking
- append="hdc=ide-scsi video=vesafb:ywrap,mtrr"
- initrd=/boot/initrd-1280x1024
复制代码
Note that in the above grub and lilo configuration examples the keyword 'vesafb' is applicable to 2.6.x kernels. For 2.4.x kernels it should be changed to 'vesa'.
Here is a chart of kernel mode numbers for the 'vga=' boot parameter.
- | 640x480 800x600 1024x768 1280x1024
- ----+-------------------------------------
- 256 | 0x301 0x303 0x305 0x307
- 32k | 0x310 0x313 0x316 0x319
- 64k | 0x311 0x314 0x317 0x31A
- 16M | 0x312 0x315 0x318 0x31B
复制代码
If you want to find ALL video modes for use with the framebuffer look at this forum post for further information on how to find it yourself.
Look at the following reference files if you need more detailed information.
- /usr/share/bootsplash/grub.conf.sample
- /usr/src/linux/Documentation/fb/vesafb.txt
- /usr/src/linux/Documentation/svga.txt
复制代码
- Add bootsplash to the default run level so that it starts on every boot.
- rc-update add bootsplash default
复制代码
- Reboot and bask in the glory of bootplash wonder. To remind yourself of what kernel parameters you booted with do as below.
[/list=1]
Setting framebuffer without bootsplash!
- To have a framebuffer only without bootsplash for greater area remove bootsplash from your default run level and reboot.
- rc-update del bootsplash default
复制代码
- Remove or comment out this line from your chosen menu entry in grub.conf.
- initrd=/boot/initrd-1280x1024
复制代码
Smaller fonts on framebuffer for greater area!
Open /etc/rc.conf and change the following variable.
To see what other fonts are available for use look in the following location and add the name without the extension to /etc/rc.conf.
Extending consolefont, framebuffer and bootsplash to all 12 virtual terminals!
- Open /etc/init.d/consolefont and change all instances of
- for x in 1 2 3 4 5 6 7 8 9 10
复制代码
to
- Open /etc/conf.d/bootsplash.conf and change the following variable as below.
- BOOTSPLASH_TTYS="0 1 2 3 4 5 7 8 9 10 11"
复制代码
- For the above changes to take effect you can either reboot or restart the above init.d scripts as below. Voila!
- /etc/init.d/consolefont restart
- /etc/init.d/bootsplash restart
复制代码
Personalising your bootsplash theme!
- Create your own directory structure called 'personal'.
- mkdir -p /etc/bootsplash/personal/images/
- cp -r /etc/bootsplash/default/config /etc/bootsplash/personal/
复制代码
- Change the symbolic link for the default theme.
- rm /etc/bootsplash/default
- ln -s /etc/bootsplash/personal /etc/bootsplash/default
复制代码
- Open /etc/conf.d/bootsplash.conf and change as below.
- BOOTSPLASH_THEME=personal
复制代码
- Copy images of your choice and of correct resolution and depth into /etc/bootsplash/personal/images/. Make sure images have a resolution of 96x96 and not 300x300. Note that this is not image size but rather 'pixels per inch'. For more information look here.
- Open /etc/bootsplash/personal/config/bootsplash-1280x1024.cfg and change paths below to point to your images.
- jpeg=/etc/bootsplash/gentoo/images/bootsplash-1280x1024.jpg
- silentjpeg=/etc/bootsplash/gentoo/images/silent-1280x1024.jpg
复制代码
- To have your image appear during boot add it to /boot otherwise omit this step.
- mount /boot
- /sbin/splash -s -f /etc/bootsplash/default/config/bootsplash-1280x1024.cfg > /boot/initrd-1280x1024
复制代码
- Reboot, test and post feedback.
Taking screenshots!
To use fbgrab emerge it as root and execute it as normal user on terminal 1.
- emerge fbgrab
- fbgrab ~/console.png
复制代码
Personalising your grub splash image!
- To change your grub splash image create an image then move it to /boot/grub. As root do the following.
- emerge gimp
- wget [url]http://dhruba.codewordt.co.uk/files/grub-image.scm[/url] -P ~
- mv ~/grub-image.scm /usr/share/gimp/1.2/scripts/
复制代码
- Start gimp and open an image of your choice. Right click on the image, select File, Grub Boot Image and save in your home directory. A sample image is provided in instructions below for you to try. Other images can be found here which is a very useful resource.
- mount /boot
- wget [url]http://linux.tkdack.com/downloads/grub/powered-by.xpm.gz[/url] -P ~
- mv ~powered-by.xpm.gz /boot/grub/
复制代码
- Modify /boot/grub/grub.conf to point to the new image.
- splashimage=(hd0,0)/boot/grub/gentoo-boot.xpm.gz
复制代码
- To create images of the correct kind either follow the command line instructions at linux.tkdack.com duplicated below for convenience or use the gimp plugin.
- convert -size 800x600 file.jpg -resize 640x480 -colors 15 -profile '*' file.xpm
- gzip file.xpm
复制代码
Feedback: Since this thread is now split into two here's how to decide which thread to post on. If you are asking questions about problems or are helping another user with problems then post on the support thread. Remember to provide kernel name and version, contents of your grub.conf file and make, model and driver version of your graphics card. Everthing else can be posted in this thread including comments on improving this guide or correcting mistakes which are both welcome! Remember that if you have general problems unrelated to this guide then file bugs immediately so that hacks are no longer necessary and that problems are resolved officially for future users.
Latest news: As you can tell by the number of times that this post has been edited the guide is undergoing continual overhaul as a result of feedback from users. It is now much more concise and has recently been expanded to fit new content. Look here for people who have it working: quikchaos, basquiat, mojo, danb, maw, Cappy!
Trivia: For trivia first emerge aalib, svgalib and DirectFB. Mplayer on framebuffer: Try 'emerge mplayer' and then 'mplayer -vo svga <filename>'. Have you managed to get mplayer working under framebuffer? If so, post details! Graphical browser on framebuffer: (1) emerge links (2) chown root.root /usr/bin/links2 (3) chmod +s /usr/bin/links2 (4) links2 -g www.gentoo.org -driver directfb. Other drivers are X, vesa, svgalib and fb. Try them all and see what works best for you. How did links go for you?
Still to come: Separate sections for framebuffer, bootsplash and grubsplash (done!); Extending to all 12 VTs (done!); Using your own themes with bootsplash (done!); Smaller fonts for greater area (done!); Binding a key for taking framebuffer screenshots; Modifying console fonts! Bear with me - hugely busy atm!
Acknowledgements: devs: TaD, LiveWire; #gentoo: r2d2, Malketh, antifa, kote, Hayl, cybbe; beejay; forums: quikchaos, aardvark, allucid, tkdack; anubis2002; ophidia; other: HandyAndE.
|