Plymouth custom initrd problems

Daire Byrne Daire.Byrne at framestore.com
Wed May 20 06:43:52 PDT 2009


Ray,

----- "Ray Strode" <halfline at gmail.com> wrote:
> > I am trying to add plymouth to a custom "busybox" based initrd we
> use for diskless boots (based on uClibc's buildroot) but we eventually
> switch_root to Fedora 11.
> [...]
> > However the plymouth --show-splash call does nothing. I am just
> trying to get VESA working (vga=0x318) for now so no fancy modesetting
> or kernel modules are required.
> Okay, should be possible.  What device nodes are you creating before
> you start plymouth?  you'll need /dev/fb , /dev/tty0, /dev/tty1
> created (with mknod or whatever), and /dev/pts, /sys,  and /proc
> mounted.

I mknod /dev/fb everytime but all the other devices of interest (ttys etc)
are part of the initrd so I don't need to create them in the init. proc, sys
and devpts are being mounted correctly.

> >My guess is that Nash does something different when setting up the
> initial terminals compared to busybox's "sh" implementation that
> plymouth doesn't like.
> >In particular the tty that my "init" script uses is set to
> /dev/console. Maybe I need it to be tty0 for plymouth?
> I don't think so.  /dev/tty0 is a synonym for "current active tty".
> /dev/console is also "current active tty" unless console has been
> redirected (with console=blah on kernel command line or from an app
> using the TIOCCONS ioctl)  Shouldn't have anything to do with graphics
> output.

Okay. I do get the "can't access tty; job control turned off" message in
the shell which seems like a common busybox problem (it's in their FAQ)
which is what got me wondering. I just don't fully understand how to avoid
it without using busybox's inbuilt init and /etc/inittab.

> > I tried setting the tty using the kernel option "console=tty0" but
> it looks like busybox's "sh" doesn't respect that.
> console=tty0 is the kernel default. Normally you'd only use it if you
> were specifying multiple console= lines ("output to the serial console
> AND the screen").
>
> >  In the Fedora initrd I noticed that there is a
> "/lib/udev/console_init tty0" command right before plymouthd starts.
> console_init just sets up the default console font / keymap /etc.
> Probably not your problem.
>
> > Here's a snippet of the relevant part of the debugging output from
> "plymouthd --debug" after issuing the "plymouth --show-splash"
> command:
> you can also do plymouth:debug / plymouth:nolog on the kernel command
> line, or type ctrl-v while it's running to get debug spew

Here's a screenshot of the full log output. Should it be trying to
load the details theme first? The default is set to "charge".

  http://www.esstec.co.uk/tmp/plymouth.jpg

> > <snip>
>
> It looks like you're doing plymouth --quit right after plymouth
> --show-splash ?

Nope. It seems to do that of it's own accord. The graphics never show -
not even a flicker.
 
> Can you attach your init file?

It's pretty long but here is an edited version with just the bare
essentials:

#!/bin/sh                              
#                                      
# init for diskless booting    

mount -n -t proc /proc /proc
mount -n -t sysfs /sys /sys
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts

. /etc/init.d/functions

export PATH=/bin:/sbin:/usr/sbin:/usr/bin
dmesg -n1                                

mknod /dev/fb c 29 0

# Start plymouthd
/bin/plymouthd

[ ! -d /lib/modules/`uname -r` ] && mkdir -p /lib/modules/`uname -r`
depmod -ae                                                          
modprobe -q i2c-core                                                
modprobe -q i2c-algo-bit                                            
modprobe -q drm                                                    

# Show plymouth splash - not working
plymouth --show-splash

# Here I start the network and mount NFS root
<snip>

plymouth --newroot=/mnt/sysroot
switch_root /mnt/sysroot /etc/diskless/rc.diskless


The initrd itself is pretty much the basic one created with minimal configuration
using uClibc's buildroot package:

  http://buildroot.uclibc.org/downloads/snapshots/

The kernel command line looks like:

  init=/init rw quiet vga=0x318 rhgb

Regards,

Daire


More information about the plymouth mailing list