Plymouth on Gentoo (Funtoo) – Revisited

I decided to try to get Plymouth running again (previous blog post about Plymouth. A lot has been fixed since then). This is my guide on how to make it work on Gentoo/Funtoo. This should in general work on any Hardware as long as your Graphics Adapter supports Kernel Mode Setting.

THIS ARTICLE IS UPDATED EVERY TIME I DO A COMPLETE SYSTEM UPDATE OR KERNEL UPGRADE!

Tested System:

Using a Lenovo Tinkpad R400 with Mobile Intel GM45 Express (Intel GMA 4500MHD Dynamic Video Memory Technology 5.0).

Running with Funtoo Linux (2012 experimental, 2012 stable, 2011 was tested). Even worked when using bleeding-edge non-supported 3rd party repositories with alpha and beta packages.

Current: Linux amifuntoo 3.6.0-gentoo #1 SMP PREEMPT x86_64 Intel(R) Core(TM)2 Duo CPU T6670 @ 2.20GHz GenuineIntel GNU/Linux

NOTE: All my configuration files (etc.) are stored in my GitHub repository (Maintained since this article on installing Funtoo on my system). It may become usefull.

Preparations:

  • (Optional) Use a stable kernel and user-space libraries for optimal and best outcome
  • Your graphics adapter has to be supported  by the kernel
  • Run a complete system update/upgrade before continuing and reboot.
    • emerge @world -DNu‘ and run a ‘revdep-rebuild‘ to make sure everything is fine.
  • Make sure your /boot partition is mounted (if you have a custom partition for this)

NOTE: If you’re in luck KMS is already enabled for your Kernel. See how to test this below!

Abstract procedure:

  • Enable KMS in kernel, compile, install, reboot (Check if KMS is active first, see notice above)
  • Test if KMS is working
  • Configure Portage to use correct flags
  • Install Plymouth and Dracut (some dependencies may be required)
  • Create a boot image for Grub containing Plymouth using Dracut
  • Update Grub configuration and reboot
  • Check if it actually works! 🙂

Enable KMS in kernel:

NOTE: This may be located elsewhere, depending on kernel distributor/version or GPU manufacturer

Device Drivers --->
   Graphics Support --->
      <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->
         <*>   Intel 8xx/9xx/G3x/G4x/HD Graphics
         [*]     Enable modesetting on intel by default

NOTE: On some kernels modesetting is toggled here:

Device Drivers --->
   [*] Staging drivers  --->
      [*]     Enable modesetting on radeon by default

NB: It’s highly advised that you disable the cute Linux logo. On some systems this can cause problems

Device Drivers --->
   Graphics Support --->
      [ ] Bootup logo  --->

Test if KMS is actually working (Suggested):

When you have logged into your Graphical Environment try to change to another virtual terminal using CTRL+ALT+F1 then CTRL+ALT+F7 (If you haven’t customized what VT to start your X-session). If you notice any flickering/resolution-changing/darkening of screen and/or delay between switching then KMS is probably not working.

Configure Portage:

We need some USE flags:

/etc/make.conf

DRACUT_MODULES="plymouth caps"
VIDEO_CARDS="intel"

/etc/portage/package.use

sys-boot/plymouth openrc pango

Install packages:

These are the packages that got installed on my system:

amitop ~ # emerge plymouth -pv

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] app-shells/dash-0.5.5.1.7  USE="-libedit -static" 251 kB
[ebuild  N     ] sys-kernel/dracut-013-r1  USE="-debug (-selinux)" DRACUT_MODULES="caps plymouth -biosdevname -btrfs -crypt -crypt-gpg -dmraid -dmsquash-live -gensplash -iscsi -livenet -lvm -mdraid -multipath -nbd -nfs -syslog -xen" 146 kB
[ebuild  N     ] sys-boot/plymouth-openrc-plugin-0.1.2  9 kB
[ebuild  N     ] sys-boot/plymouth-0.8.3-r5  USE="openrc pango -gdm -static-libs" VIDEO_CARDS="intel -nouveau -radeon" 760 kB

Total: 4 packages (4 new), Size of downloads: 1,165 kB

Configure system and booting:

General:

Dracut requires a /run directory on your root partition — create this.

Set rc_interactive=”NO” in /etc/rc.conf  to make everything work with OpenRC.

Configure dracut:

/etc/dracut.conf

We need to add plymouth to our add_dracutmodules parameter.

# Sample dracut config file

logfile=/var/log/dracut.log
fileloglvl=6

# Exact list of dracut modules to use.  Modules not listed here are not going
# to be included.  If you only want to add some optional modules use
# add_dracutmodules option instead.
#dracutmodules+=""

# Dracut modules to omit
#omit_dracutmodules+=""

# Dracut modules to add to the default
add_dracutmodules+="i18n plymouth udev-rules"

# additional kernel modules to the default
add_drivers+="tp_smapi hdaps thinkpad_ec"

# list of kernel filesystem modules to be included in the generic initramfs
#filesystems+=""

# build initrd only to boot current hardware
#hostonly="yes"
#

# install local /etc/mdadm.conf
mdadmconf="no"

# install local /etc/lvm/lvm.conf
lvmconf="no"

Create image:

Mount /boot (if needed). Then create the initrd image (This creates for the running kernel `uanme -a`, see manpage for how to build for a custom defined kernel):

dracut --force 

You’ll get something like this if no errors occured:

*** Including module: dash ***
*** Including module: caps ***
*** Including module: i18n ***
*** Including module: plymouth ***
*** Including module: kernel-modules ***
*** Including module: resume ***
*** Including module: rootfs-block ***
*** Including module: terminfo ***
*** Including module: udev-rules ***
Skipping udev rule: 50-udev.rules
Skipping udev rule: 95-late.rules
*** Including module: base ***
*** Including module: fs-lib ***
Skipping program xfs_db as it cannot be found and is flagged to be optional
Skipping program xfs_check as it cannot be found and is flagged to be optional
Skipping program xfs_repair as it cannot be found and is flagged to be optional
Skipping program jfs_fsck as it cannot be found and is flagged to be optional
Skipping program btrfsck as it cannot be found and is flagged to be optional
*** Including module: shutdown ***
Skipping program kexec as it cannot be found and is flagged to be optional
*** Including modules done ***
Wrote /boot/initramfs-3.0.3-gentoo.img:
-rw-r--r-- 1 root root 6554720 Sep  6 20:45 /boot/initramfs-3.0.3-gentoo.img

Configure grub (version 2):

When using dracut you’ll need to add an initramfs section to your Grub configuration to load up Plymouth before actual start-up takes place. This is just examples, all text marked as bold is what you’ll have to include.

Funtoo Linux:

In my Funtoo installation I can edit entries via /etc/boot.conf :

"Funtoo Linux (Gentoo Kernel, Plymouth)" {
 kernel vmlinuz[-v]
 params root=/dev/sda2 resume=/dev/sda3 quiet splash
 initrd initramfs[-v].img
}

Running /sbin/boot-update then automatically creates/updates the Grub configuration using this as a template.

Gentoo and Others:

You can also do this manually by editing /boot/grub/grub.cfg :

menuentry "Gentoo Linux - vmlinuz-3.6.0-gentoo (Gentoo Kernel, Plymouth)" {
  set root=(hd0,1)
  linux /vmlinuz-3.6.0-gentoo rootfstype=ext4 root=/dev/sda2 resume=/dev/sda3 quiet splash
  initrd /initramfs-3.6.0-gentoo.img
}

Testing and results:

Restarted and it worked. A nice sparkly (animated) Gentoo logo came to life  🙂 XDM started up fine and no problems occurred after login. Plymouth also works during shutdown.

The only problem that I’ve encountered is that tty1 (the first virtual terminal, CTRL+ALT+F1) is unusable. Keyboard input and output from console does not work correctly. All the other tty’s works though.

UPDATE: plymouth-0.9_pre20111013 (released in funtoo overlay Oct 27. ) fixed all the problems I had.

UPDATE: I’ve added a video capture of the boot process on YouTube (direct link).

Links:

https://anderse.wordpress.com/2009/11/05/plymouth-on-gentoo/

http://dev.gentoo.org/~aidecoe/doc/en/plymouth.xml

 

 

 
(Reference in Gentoo Wiki Article: http://en.gentoo-wiki.com/wiki/Plymouth)


About this entry