[Buildroot] [PATCH 1/1] package/systemd: fix "Timed out waiting for device /dev/console."

Peter Korsgaard peter at korsgaard.com
Sun Mar 3 20:26:15 UTC 2019


>>>>> "Yann" == Yann E MORIN <yann.morin.1998 at free.fr> writes:

 > Xavier, All,
 > On 2019-03-03 12:30 +0100, Xavier Ruppen spake thusly:
 >> Buildroot built with systemd fails to open a login prompt on the
 >> serial port when /dev/console is specified as BR2_TARGET_GENERIC_GETTY_PORT
 >> (which is its default value):
 >> 
 >> systemd[1]: dev-console.device: Job dev-console.device/start timed out.
 >> systemd[1]: Timed out waiting for device /dev/console.
 >> systemd[1]: Dependency failed for Serial Getty on console.
 >> systemd[1]: serial-getty at console.service: Job serial-getty at console.service/start failed with result 'dependency'.
 >> systemd[1]: dev-console.device: Job dev-console.device/start failed with result 'timeout'.
 >> systemd[1]: Reached target Login Prompts.
 >> systemd[1]: Reached target Multi-User System.
 >> 
 >> According to this issue on Github [1], serial-getty at .service should
 >> not be instantiated on /dev/console, console-getty at .service should
 >> be used instead. This stems from the fact that there should be no
 >> dependency on /dev/console.
 >> 
 >> [1] https://github.com/systemd/systemd/issues/10914
 >> 
 >> Signed-off-by: Xavier Ruppen <xruppen at gmail.com>
 >> ---
 >> package/systemd/systemd.mk | 4 ++++
 >> 1 file changed, 4 insertions(+)
 >> 
 >> diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
 >> index 7a46a50ed3..f378203e8d 100644
 >> --- a/package/systemd/systemd.mk
 >> +++ b/package/systemd/systemd.mk
 >> @@ -397,11 +397,15 @@ endef
 >> 
 >> ifneq ($(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)),)
 >> # systemd needs getty.service for VTs and serial-getty.service for serial ttys
 >> +# note that console-getty.service should be used on /dev/console as it should not have dependencies
 >> # also patch the file to use the correct baud-rate, the default baudrate is 115200 so look for that
 >> define SYSTEMD_INSTALL_SERVICE_TTY
 >> if echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'tty[0-9]*$$'; \
 >> then \
 >> SERVICE="getty"; \
 >> +	elif echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'console'; \
 >> +	then \
 >> +		SERVICE="console-getty"; \

 > Actually, I think we should check for 'console' first, and since this is
 > a literal, we do not need grep, just a test for equality:

 >     if [ $(BR2_TARGET_GENERIC_GETTY_PORT) = /dev/console ]; \

We don't specify the /dev/ part, so this should be just '= console'.

I was going to commit this, but then I noticed that there isn't a
console-getty at .service file, so this doesn't seem right:

ls -lah ../../../../lib/systemd/system/|grep getty
lrwxrwxrwx  1 peko peko   49 Mar  3 21:13 autovt at .service -> ../../../../usr/lib/systemd/system/getty at .service
-rw-r--r--  1 peko peko 1.1K Mar  3 21:13 console-getty.service
-rw-r--r--  1 peko peko 1.2K Mar  3 21:13 container-getty at .service
-rw-r--r--  1 peko peko  506 Dec 21 19:53 getty-pre.target
-rw-r--r--  1 peko peko 1.8K Mar  3 21:13 getty at .service
-rw-r--r--  1 peko peko  500 Dec 21 19:53 getty.target
-rw-r--r--  1 peko peko 1.5K Mar  3 21:13 serial-getty at .service

I guess we need to introduce a TARGET variable that is
$${SERVICE}.service for console-getty, and $${SERVICE}@.service for
everything else, but I know next to nothing about systemd, so I will let
someone who can actually test this send a patch.

Xavier, will you send an updated patch please?

-- 
Bye, Peter Korsgaard


More information about the buildroot mailing list