diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk index 50398e747e..92de540725 100644 --- a/package/systemd/systemd.mk +++ b/package/systemd/systemd.mk @@ -497,37 +497,42 @@ define SYSTEMD_USERS 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 +# systemd provides multiple units to autospawn getty as neede +# * getty@.service to start a getty on normal TTY +# * sertial-getty@.service to start a getty on serial lines +# * console-getty.service for generic /dev/console +# * container-getty@.service for a getty on /dev/pts/* # -# systemd defaults to only have getty@tty.service enabled -# * DefaultInstance=tty1 in getty@service -# * no DefaultInstance in serial-getty@.service -# * WantedBy=getty.target in console-getty.service -# * console-getty is not enabled because of 90-systemd.preset -# We want "systemctl preset-all" to do the right thing, even when run on the target after boot -# * remove the default instance of getty@.service via a drop-in in /usr/lib -# * set a new DefaultInstance for getty@.service instead, if needed -# * set a new DefaultInstance for serial-getty@.service, if needed -# * override the systemd-provided preset for console-getty.service if needed +# the generator systemd-getty-generator will +# * read the console= kernel command line parameter +# * enable one of the above units depending on what it finds +# +# Systemd defaults to enablinb getty@tty1.service +# +# What we want to do +# * Enable a getty on $BR2_TARGET_GENERIC_TTY_PATH +# * Set the baudrate for all units according to BR2_TARGET_GENERIC_GETTY_BAUDRATE +# * Always enable a getty on the console using systemd-getty-generator +# (backward compatibility with previous releases of buildroot) +# +# What we do +# * disable getty@tty1 (enabled by upstream systemd) +# * enable getty@xxx if $BR2_TARGET_GENERIC_TTY_PATH is a tty +# * enable serial-getty@xxx for other $BR2_TARGET_GENERIC_TTY_PATH +# * rewrite baudrates if a baudrate is provided define SYSTEMD_INSTALL_SERVICE_TTY mkdir $(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d; \ printf '[Install]\nDefaultInstance=\n' \ >$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \ if [ $(BR2_TARGET_GENERIC_GETTY_PORT) = "console" ]; \ then \ - TARGET="console-getty.service"; \ - printf 'enable console-getty.service\n' \ - >$(TARGET_DIR)/usr/lib/systemd/system-preset/81-buildroot-tty.preset; \ + : ; \ elif echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'tty[0-9]*$$'; \ then \ - TARGET="getty@.service"; \ printf '[Install]\nDefaultInstance=%s\n' \ $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \ >$(TARGET_DIR)/usr/lib/systemd/system/getty@.service.d/buildroot-console.conf; \ else \ - TARGET="serial-getty@.service"; \ mkdir $(TARGET_DIR)/usr/lib/systemd/system/serial-getty@.service.d;\ printf '[Install]\nDefaultInstance=%s\n' \ $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) \ @@ -535,7 +540,10 @@ define SYSTEMD_INSTALL_SERVICE_TTY fi; \ if [ $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE)) -gt 0 ] ; \ then \ - $(SED) 's,115200,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),' $(TARGET_DIR)/lib/systemd/system/$${TARGET}; \ + $(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/getty@.service; \ + $(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/serial-getty@.service; \ + $(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/console-getty@.service; \ + $(SED) 's/115200/$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),115200/' $(TARGET_DIR)/lib/systemd/system/container-getty@.service; \ fi endef endif