Problem with redirecting output to boot terminal

Andrey Borzenkov arvidjaar at gmail.com
Fri Dec 17 09:02:34 PST 2010


On Tue, Dec 14, 2010 at 11:07 PM, Ray Strode <halfline at gmail.com> wrote:
> Hi,
>
> (sorry for the slow reply)
>
> On Sun, Nov 28, 2010 at 2:22 PM, Andrey Borzenkov <arvidjaar at gmail.com> wrote:
>> It took me some time to understand why output from rc.sysinit was not visible.
>>
>> In initrd we start plymouthd and call "plymouth --show-splash". Now I
>> do not have any splash to show (i.e. no "splash" on command line) but
>> plymouthd still switches active console to boot terminal which in our
>> case in tty7.
> Even when "splash" is taken off the kernel command line, we still show
> a splash called "details"
>
> This splash basically just echos all data coming in and spews it back out.
>

Where does this data come from? At this point we have at least three sources:

- plymouth message
- programs that keep old console (most likely tty1) open and continue
to output there
- programs that are started anew after plymouthd has switched active
tty and are printing to current console (tty7 in this case)

Which output is collected and echoed?

> It does do a little more if you have encrypted disks.
>

Yes, I always wondered how it should interact with plymouth
ask-for-password. I should set up encrypted VM at some point (not sure
whether this is actually supported by my distro at installation)

>> Later rc.sysinit starts, checks whether splash is active and
>> terminates plymouthd by calling "plymouth quit".
> why do you quit plymouth that early?
>

This was done long before and I assume maintainer had reasons; he is
no more available though. Judging by comments, it is done to disable
splash; like

# killing splash when using single-user mode

> One thing to keep in mind is, plymouth performs two primary functions:
>
> 1) boot splash
> 2) boot message logger
>

Is there any documentation for it? How is it enabled?

> So even if you take "splash" off the kernel command line, it still
> logs your boot.
> Normally, you would run plymouth all the way until the end of boot up,
> so that all boot messages get logged to /var/log/boot.log
>

Mandriva does not have any /var/log/bootlog (it has boot.log which is
used for something else).

>> Only after next script starts anything appears on tty1.
>>
>> The question is - why would we switch to tty7 (or whatever is defined
>> in configuration) when we know that no splash is going to be shown
>> anyway? This splits boot output between several terminals and is
>> really confusing.

So it actually *does* show splash. So - what is the correct way to
*not* show splash?

> Honestly, I think it's a better choice to run plymouth on tty1 and run
> X on tty1.  It makes the most sense looking at things from a "fresh"
> perspective.  It's only tty7 by historical accident, basically.  I
> recognize not everyone shares my view, though.
>

It is not something that can be changed overnight in a distribution. I
could paper this over by calling "exec > /dev/console" after killing
plymouth though ... although I really think that "no splash" should
mean "no splash" not "some splash I think should be shown anyway" :)
And if someone wants to default to detail screen, (s)he could use
splash=detail for this.


More information about the plymouth mailing list