Hello, all
On RPi OS Bookworm, console and keyboard initialisation via `setupcon' seem doubly duplicated (sic), and I am x-posting this to .debian because it may not be speific to Pi OS:
- in that systemd services and init.d scripts do the same thing: /etc/init.d: console-setup.sh -> /lib/console-setup/console-setup.sh keyboard-setup.sh -> /lib/console-setup/keyboard-setup.sh
/usr/lib/systemd/system: console-setup.service -> /lib/console-setup/console-setup.sh keyboard-setup.service -> /lib/console-setup/keyboard-setup.sh
- in that /lib/console-setup/console-setup.sh includes both console and keyboard setup, making keyboard-setup.sh redundant.
This is futher complicated by what I consider two crutches in /lib/console-setup/keyboard-setup.sh :
- `setupcon' is invoked if and only if at least one of following conditions is met: 1. this is /not/ the first time after reboot that the script runs -- a special case misleadingly annotated in the source as skipping an invocation "after boot," without an explanation why it should be skipped. Nor does it always /skip/ the invocation, because this is only one of the two sufficient (OR'ed) conditions .
- the cache (from a previous invocation with --size) does not exist or is older than the default configuration in /etc/default/console-setup.
- it invokes `setupcon' with the --size option, which causes it to cache the necessary data files under /etc/console-setup so that they are available to subsequent invocations before /usr is mounted, e.g. at an early state of the boot process. In the script, however, --size seems redunadant, because:
- if at the time of invocation /usr is not yet mounted, `setupcon' will take its data from the cache, and --size will have no effect, (expect, perhaps, rewriting the cache with the same contents).
- if at the time invocation /usr is already mounted, `setupcon' will build the data based on its config file, /etc/default/console-setup , and the files in /usr .
Therefore, I think that all this confusing complexity can be reduced to a very simple invocation that configures both keyboard and console:
if [ -f /etc/default/locale ]; then # In order to permit auto-detection of the charmap when # console-setup-mini operates without configuration file. . /etc/default/locale export LANG fi setupcon
and is invoked by a single systemd service requiring that /usr be mounted, as the current services already do. Perhaps it is a newbie's wishful thinking, so what is the reason for current setup? Also, are able to configure your Bookworms to set the font in your TTYs without changing the aforementioned shell scripts? I was not, and had to simplify the process as described above.