Mailing List Archive

Serial console stops working as soon as openrc starts
I've set up a serial console by adding the following to my kernel
command line:

console=ttyS0,115200 console=tty1

It works fine for the first few seconds as the kernel starts up. All
of the expected messages are sent out ttyS0.

But, soon after init starts, the serial console stops working.

The end of the serial console log always looks like this

[ 3.502684] Freeing unused kernel image (initmem) memory: 1516K
[ 3.509155] Write protecting the kernel read-only data: 24576k
[ 3.515861] Freeing unused kernel image (text/rodata gap) memory: 2036K
[ 3.523160] Freeing unused kernel image (rodata/data gap) memory: 1156K
[ 3.568699] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[ 3.575655] x86/mm: Checking user space page tables
[ 3.615655] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[ 3.622604] Run /sbin/init as init process
[ 3.660655] kbd_mode (115) used greatest stack depth: 13096 bytes left
[ 3.667760] loadkeys (116) used greatest stack depth: 13048 bytes left

On the tty1 console, the next thing after the "loadkeys" line above is
the OpenRC banner, so apparently openrc is messing with my console
settings. It's been a few years since I setup a serial console, but
after adding the "console=" argument to the kernel args it used to
"just work".

How do I get openrc to leave the serial console alone?

--
Grant
Re: Serial console stops working as soon as openrc starts [ In reply to ]
On 2023-09-09, Grant Edwards <grant.b.edwards@gmail.com> wrote:
> I've set up a serial console by adding the following to my kernel
> command line:
>
> console=ttyS0,115200 console=tty1
>
> It works fine for the first few seconds as the kernel starts up. All
> of the expected messages are sent out ttyS0.
>
> But, soon after init starts, the serial console stops working.

That's because one of the first things openrc runs in
/etc/init.d/dmesg, and it changes the kernel logging level to the
value defined in /etc/conf.d/dmesg (which defaults to 1).

Changing the level in /etc/conf.d/dmesg from 1 to 8 allowed the serial
console to continue working as I wanted it to.

[.I spent an entire day trying to get serial logging to work on Ubuntu
with systemd, and got exactly nowhere. After replacing Ubuntu/systemd
with Gentoo/openrc it didn't take long to track down the answer in the
openrc docs.]
Re: Re: Serial console stops working as soon as openrc starts [ In reply to ]
Grant Edwards wrote:
> On 2023-09-09, Grant Edwards <grant.b.edwards@gmail.com> wrote:
>> I've set up a serial console by adding the following to my kernel
>> command line:
>>
>> console=ttyS0,115200 console=tty1
>>
>> It works fine for the first few seconds as the kernel starts up. All
>> of the expected messages are sent out ttyS0.
>>
>> But, soon after init starts, the serial console stops working.
> That's because one of the first things openrc runs in
> /etc/init.d/dmesg, and it changes the kernel logging level to the
> value defined in /etc/conf.d/dmesg (which defaults to 1).
>
> Changing the level in /etc/conf.d/dmesg from 1 to 8 allowed the serial
> console to continue working as I wanted it to.
>
> [.I spent an entire day trying to get serial logging to work on Ubuntu
> with systemd, and got exactly nowhere. After replacing Ubuntu/systemd
> with Gentoo/openrc it didn't take long to track down the answer in the
> openrc docs.]
>
>

Does it say what else changing the log level does?  If so, can you link
to the docs you found?  I'm curious. 

Thanks.

Dale

:-)  :-) 
Re: Serial console stops working as soon as openrc starts [ In reply to ]
On 2023-09-09, Dale <rdalek1967@gmail.com> wrote:

>> Changing the level in /etc/conf.d/dmesg from 1 to 8 allowed the serial
>> console to continue working as I wanted it to.
>
> Does it say what else changing the log level does?

It's a single, global value in the kernel so it has the same affect on
all linux kernel consoles.

> If so, can you link to the docs you found? I'm curious.

https://github.com/OpenRC/openrc/blob/master/conf.d/dmesg

https://man7.org/linux/man-pages/man1/dmesg.1.html

https://www.kernel.org/doc/html/next/core-api/printk-basics.html

https://linuxconfig.org/introduction-to-the-linux-kernel-log-levels

https://www.oreilly.com/library/view/linux-kernel-in/0596100795/re06.html
Re: Re: Serial console stops working as soon as openrc starts [ In reply to ]
Grant Edwards wrote:
> On 2023-09-09, Dale <rdalek1967@gmail.com> wrote:
>
>>> Changing the level in /etc/conf.d/dmesg from 1 to 8 allowed the serial
>>> console to continue working as I wanted it to.
>> Does it say what else changing the log level does?
> It's a single, global value in the kernel so it has the same affect on
> all linux kernel consoles.
>
>> If so, can you link to the docs you found? I'm curious.
> https://github.com/OpenRC/openrc/blob/master/conf.d/dmesg
>
> https://man7.org/linux/man-pages/man1/dmesg.1.html
>
> https://www.kernel.org/doc/html/next/core-api/printk-basics.html
>
> https://linuxconfig.org/introduction-to-the-linux-kernel-log-levels
>
> https://www.oreilly.com/library/view/linux-kernel-in/0596100795/re06.html


The next to last one gave me what I was curious about most.  Others are
interesting to tho. 

Learn something every day.  Remembering it is another thing tho.  :/

Thanks.

Dale

:-)  :-)