One useful way to use plymouth is by installing it into
an auxillary initrd image, that overlays the primary one.
This allows plymouth and its current theme to get updated
indepedently of the kernel and the rest of the initrd
stuff.
plymouth-generate-initrd creates an initrd named:
initrd-plymouth.img
in /boot that is suitable for use a second initrd on
the initrd line in grub.conf.
Previously, we'd try to guess the plugin path based
on the arch of the running process. That's sort of
fragile, so better to just install plugins where
plymouth says it's going to look for them.
Some modules (the label plugin in particular) use
libraries with static data that don't do well with
being unmapped and remapped later.
This commit changes the module loading call so that
plugins aren't unmapped at close time (the close
is effectively ignored). This simplifies things
for now.
At some point we may want to make it decidable on
a per plugin basis.
It's what all the other boot splash plugins do. This
is important because things occasionally muck with the
terminal during boot up (knocking it out of raw mode, etc),
and resetting the window graphics mode resets the terminal
settings as well.
Future, potentially better alternatives to this could be:
1) TIOCSLCKTRMIOS to lock the terminal settings
2) Using /dev/input instead of the tty for keyboard input
The animation class doesn't handle its frames missing
too well right now. In fact, it goes into an infinite
loop instead of completing.
This commit fixes that.
When using 1 pixel wide images and stretching them, the result is a fade
between the pixel data and the transparent pixels beyond the end of the image.
Some init implementations forcefully take over the tty after rc.sysinit
with the TIOCSCTTY ioctl, forcing plymouth's connection to the tty
to get dropped. This comment just reopens the tty if it gets taken
over.
It may make sense at some point to use /dev/input for catching input
events instead of the tty, to side step these kinds of problems.
Previously, we'd only log messages to a file if plymouth
crashed and it was started with --debug. Now we log
messages to a file if it's started with --debug, or run with
plymouth:debug or plymouth:debug=file:/var/log/plymouth/foo.log
Right now if we ever get a hangup from the mainloop
on the tty fd then the window's fd watch on the tty
becomes invalid and we will ultimately crash when
trying to disconnect the watch later.
This commit sets the watch to NULL if a hang up happens,
and adds some debug spew.
We want the .pc file to have the full expanded paths,
so it doesn't end up with unexpanded datarootdir, etc.
To achieve this we copy in the AS_AC_EXPAND macro
that thomasvs did a while ago.