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