3

Has anyone got plymouth (startup logo package) working on Raspberry Pi?

On Raspbian Wheezy, I've successfully installed plymouth using apt-get but when I go to create the required initramfs, I get this:

# sudo update-initramfs -c -k `uname -r`
update-initramfs: Generating /boot/initrd.img-3.12.34+
cp: cannot stat `/usr/lib/arm-linux-gnueabihf/pango/1.6.0/module-files.d/libpango1.0-0.modules': No such file or directory
E: /usr/share/initramfs-tools/hooks/plymouth failed with return 1.
update-initramfs: failed for /boot/initrd.img-3.12.34+ with 1.

I've checked the filesystem and the entire pango directory is not present.

I've checked Google and most hits on that error refer to the directory moving from /usr/lib/pango to /usr/lib/*arch*/pango, which is not the problem here (I checked both places).

I've checked the Debian repository (via their web interface) and they claim that these files are part of the package libpango1.0-0. I do have the Raspbian version of that package installed, but according to dpkg -L it only contains the documentation files, not the libraries.

Is this a Raspbian packaging error, or has this been intentionally split to some other package (I couldn't find anything likely-sounding), or am I missing something else?

2

The solution is to edit /usr/share/initramfs-tools/hooks/plymouth and comment out anything referring to pango

  • Yes, it really works this way. Some more details can be seen from the bug description at launchpad, linked in a comment by Miral to the answer by goldilocks. – user27164 Jan 25 '15 at 22:50
1

Something interesting in output from apt-cache search libpango | grep ^libpango:

libpango-1.0-0 - Layout and rendering of internationalized text
libpango1.0-0 - Layout and rendering of internationalized text

I don't have them installed so can't see a list of files; apt-cache showpkg on the them shows different sets of details, but trying to apt-get install them looks exactly the same.

However:

> apt-file search "libpango1.0-0.modules"
libpango1.0-0: /usr/lib/arm-linux-gnueabihf/pango/1.6.0/module-files.d/libpango1.0-0.modules

That's exactly the file you are looking for, supposedly in the package you already have installed. I downloaded both packages with apt-get download to see what was in them, and indeed, libpango1.0-0 doesn't contain anything except trivial documentation. libpango-1.0-0 contains exactly the same thing plus the actual library, but it does not contain that module-files.d directory.

Seems like a bug at least in the sense that apt-file search reports wrongly. I did not find any reports in debian proper or raspbian for this, but I think you should file one:

http://www.raspbian.org/RaspbianBugs

You have to create a "ubuntu one" account in the process.

  • Ok, filed as bugs.launchpad.net/raspbian/+bug/1401005. I guess we'll see what happens. :) – Miral Dec 10 '14 at 6:32
  • In the bug you filed you said you had to fiddle with init scripts. Care to share how you managed to get it working? – sberder Dec 16 '14 at 8:22
  • @sberder: sorry, I missed your question. The main thing was to add plymouth --quit --wait || true into /etc/init.d/nodm just prior to actually starting nodm. Unfortunately this is not entirely satisfactory as after this change issuing service nodm restart after startup when plymouth is no longer running causes it to hang. Removing the --wait flag should resolve this but IIRC it caused another issue, though I don't recall what it was at the moment. – Miral Jan 26 '15 at 23:37
  • Note that there is a script /etc/init.d/plymouth that is supposed to get plymouth to quit but since it depends on $all it runs last, after the nodm script, and that appears to be a problem for that (presumably it works fine with gdm etc). In my case I commented out the plymouth --quit that was in this script as well (since I had added it to the nodm script), but it should be harmless if left there. – Miral Jan 26 '15 at 23:42
1

Here is how I got it to work on my Pi 2 using the latest raspbian (with thanks to jeg and david)

  1. Edit plymouth, search for "pango" and comment out every line that refers to it. (there's a whole if block to knock out)

    sudo nano /usr/share/initramfs-tools/hooks/plymouth
    
  2. Install plymouth framebuffer support

    sudo apt-get install plymouth-drm
    
  3. Make initramfs image

    sudo update-initramfs -c -k $(uname -r)
    
  4. Tell the bootloader to use the generated image

    sudo nano /boot/config.txt
    

    and add a line containing

    initramfs initrd.img-X.XX.XX+
    

    replacing the x's with the output of

    uname -r
    
  5. Specify some additional modules to be loaded

    sudo nano /etc/initramfs-tools/modules
    

    and add these modules:

    fbtft
    fbtft_device name=hy28a verbose=0
    fb_ili9320
    
  6. Tell plymouth to use /dev/fb1

    echo "export FRAMEBUFFER=/dev/fb1" | sudo tee /etc/initramfs-tools/conf.d/fb1
    
  7. Set theme

    sudo plymouth-set-default-theme text
    
  8. Update initramfs

    sudo update-initramfs -u
    
  9. Add some options to boot command line

    sudo nano /boot/cmdline.txt
    

    and at the end of the line add this

    fbcon=map:10 splash quiet plymouth.ignore-serial-consoles
    
  10. Reboot

This worked for me (although text and details) are the only themes that seem to work. If it you break your pi following this step by step you get to keep both pieces.

  • Thanks for the instructions which were very helpful to get me started, but this only worked for me when I used the 'text' and 'detail' themes. After a lot of searching and experimenting I finally decided that, at least in my case using a RPi2 and Raspbian, the error was in step 6. My RPi2 did not have a /dev/fb1 device after boot. So I figured it might not have one during startup either and was falling back to the text or detail themes. So I replaced step 6 with: echo "export FRAMEBUFFER=/dev/fb0" | sudo tee /etc/initramfs-tools/conf.d/fb0 using fb0 instead and this did the trick for me. – user30916 May 16 '15 at 10:48
  • @Leo thanks for your input. When I have some time I'll check it out and then will update this post. – StillLearnin May 19 '15 at 10:05
  • Trying this under the current Raspian Jessie, the install of plymouth-drm fails: plymouth-drm : Depends: plymouth (= 0.8.5.1-5) I suppose because the installed plymouth is 0.9.0-9 . Any ideas? – jpwynn Jan 26 '16 at 20:15
  • I also found that fb0 is the way to get this working. Also step 5 appears to be unnecessary (works fine for me on a B+ without it). Note that there's really no need to create the ramfs then update it; you can just run the -c -k "$(uname -r)" version instead of step 8, then you don't need to run step 3 at all. Also once you've run through the setup once, themes can be swapped out by running sudo plymouth-set-default-theme -R <name>, which invokes update-initramfs -u automatically. – Dave Sep 11 '16 at 18:15
0

I found another solution that seems to work (tried it with the joy theme).

Before running sudo update-initramfs -u, download the pango package from the official Debian repository:

wget http://ftp.uk.debian.org/debian/pool/main/p/pango1.0/libpango1.0-0_1.30.0-1_armhf.deb

Then extract the package somewhere convenient, i.e /home/pi/pango:

dpkg --extract libpango1.0-0_1.30.0-1_armhf.deb /home/pi/pango

Then make the pango directory in /usr/lib/arm-linux-gnueabihf/:

sudo mkdir /usr/lib/arm-linux-gnueabihf/pango

Now copy the contents of the pango directory from `/home/pi/pango/usr/lib/arm-linux-gnueabihf/' to the directory you just created:

sudo cp -r /home/pi/pango/usr/lib/arm-linux-gnueabihf/pango/* /usr/lib/arm-linux-gnueabihf/pango/

Now sudo update-initramfs -u should work - it did for me.

I have also made a script that can be downloaded that does this on Github: https://gist.github.com/alanpullen/cdfeb71bd6d85edabf871

This can also be downloaded and run using the following commands:

wget https://gist.githubusercontent.com/alanpullen/cdfeb71bd6d85edabf87/raw/5f44e180191e5b02ae8882743db2b8f1a04f9892/plymouth-pango-fix.sh
chmod +x plymouth-pango-fix.sh
./plymouth-pango-fix.sh

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.