[Pkg-raspi-maintainers] Bug#926325: raspi3-firmware: console tty0 is not the main console

Fabian Pietsch fabian-debian at canvon.de
Wed Apr 3 16:00:17 BST 2019


Package: raspi3-firmware
Version: 1.20190215-1
Severity: normal

Dear Maintainer,

due to the order of the console=... arguments on the kernel command
line, given to the firmware in /boot/firmware/cmdline.txt, constructed
by your hook script /etc/kernel/postinst.d/z50-raspi3-firmware,
the serial console is the main system console. (The last argument wins.)

This means that, e.g., systemd boot messages won't appear on the
HDMI-connected display. This also means that systemd units with
StandardOutput=journal+console won't be able to give live comment
on what they are doing / waiting for at boot to the person sitting in
front of the monitor.

Due to the construction of the Raspberry Pi 3 board and presumed usual
use I consider it easier and more likely to connect a monitor (or TV)
via an HDMI cable, than to first wire something up to even have a serial
port at all in the first place.

If still the serial console should be the default main console, and the
HDMI-connected display only an additional console, please make this
configurable in, e.g., /etc/default/raspi3-firmware. (It could be nice
to be able to set additional kernel cmdline arguments or even override
the complete cmdline from there, btw.)

For the time being, to avoid editing (and later merging on upgrade)
a 143 lines script conffile /etc/kernel/postinst.d/z50-raspi3-firmware
(see above), I place this little sed script which exchanges the position
of two console=... arguments if the first (not the final) is tty0:


/etc/kernel/postinst.d/z51-raspi3-fixup and symlinked from
/etc/initramfs/post-update.d/z51-raspi3-fixup:

#!/bin/bash
# (Note: This will not suffice with more than two console=...)
exec -- sed -e 's/\(console=tty0 \)\(console=[^ ]* \)/\2\1/' -i /boot/firmware/cmdline.txt


This changes /boot/firmware/cmdline.txt from, e.g. (with raised CMA
in /etc/default/raspi3-firmware), this:

| console=tty0 console=ttyS1,115200 root=/dev/mmcblk0p2 rw elevator=deadline fsck.repair=yes net.ifnames=0 cma=128M rootwait

..to this:

| console=ttyS1,115200 console=tty0 root=/dev/mmcblk0p2 rw elevator=deadline fsck.repair=yes net.ifnames=0 cma=128M rootwait

That is, tty0 boots as the main console, receiving, e.g.,
systemd boot output.

The result can be checked by /proc/consoles:

| tty0                 -WU (EC p  )    4:7
| ttyS1                -W- (E  p a)    4:65

Look for flag "C = it is preferred console", according to
/usr/share/doc/linux-doc/Documentation/filesystems/proc.txt.gz


Regards, Fabian


-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: arm64 (aarch64)

Kernel: Linux 4.19.0-4-arm64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_CRAP
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages raspi3-firmware depends on:
ii  dosfstools  4.1-2

raspi3-firmware recommends no packages.

raspi3-firmware suggests no packages.

-- Configuration Files:
/etc/default/raspi3-firmware changed:
CMA=128M


-- no debconf information



More information about the Pkg-raspi-maintainers mailing list