All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Hilliard <james.hilliard1@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 03/15] fix tty handling
Date: Sun, 3 Nov 2019 12:48:18 -0500	[thread overview]
Message-ID: <CADvTj4rFQ0a_k=sYS_ugNMOXQpTV3AA-3AOrZCSwNHaSg2XXkg@mail.gmail.com> (raw)
In-Reply-To: <20191103165640.21819-4-jeremy.rosen@smile.fr>

On Sun, Nov 3, 2019 at 11:57 AM J?r?my Rosen <jeremy.rosen@smile.fr> wrote:
>
> Handling of tty is a bit tricky, we need to aggressively disable what
> systemd does with tty1 then update for what buildroot wants to do
>
> Rework the whole tty generation to work with presets
>
> Signed-off-by: J?r?my Rosen <jeremy.rosen@smile.fr>
> ---
>  ...e-default-instance-of-getty-.service.patch | 27 +++++++++++++++++++
>  package/systemd/80-buildroot.preset           |  5 ++--
>  package/systemd/systemd.mk                    | 25 ++++++++++++-----
>  3 files changed, 48 insertions(+), 9 deletions(-)
>  create mode 100644 package/systemd/0002-remove-default-instance-of-getty-.service.patch
>
> diff --git a/package/systemd/0002-remove-default-instance-of-getty-.service.patch b/package/systemd/0002-remove-default-instance-of-getty-.service.patch
> new file mode 100644
> index 0000000000..b412620cbd
> --- /dev/null
> +++ b/package/systemd/0002-remove-default-instance-of-getty-.service.patch
> @@ -0,0 +1,27 @@
> +From 77384f2f107ca99fef6a9c0b9d54a3f2147a0d18 Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Rosen?= <jeremy.rosen@smile.fr>
> +Date: Thu, 31 Oct 2019 16:24:02 +0100
> +Subject: [PATCH] remove default instance of getty at .service
> +
> +upstream assumes that tty1 is always a valid tty, this generally makes
> +sense but might not be the case for embedded devices. Having it as a
> +DefaultInstance makes it enabled by "systemctl preset-all"
> +
> +it is simpler for us to remove the DefaultInstance entirely and manually
> +link as needed
Can we make this suitable for inclusion in upstream systemd by making
the DefaultInstance
tty a meson config option instead?
> +---
> + units/getty at .service.m4 | 1 -
> + 1 file changed, 1 deletion(-)
> +
> +diff --git a/units/getty at .service.m4 b/units/getty at .service.m4
> +index 80e793bb73..7060457cb1 100644
> +--- a/units/getty at .service.m4
> ++++ b/units/getty at .service.m4
> +@@ -57,4 +57,3 @@ UnsetEnvironment=LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETAR
> +
> + [Install]
> + WantedBy=getty.target
> +-DefaultInstance=tty1
> +--
> +2.24.0.rc1
> +
> diff --git a/package/systemd/80-buildroot.preset b/package/systemd/80-buildroot.preset
> index 4074901cbd..5dbae39173 100644
> --- a/package/systemd/80-buildroot.preset
> +++ b/package/systemd/80-buildroot.preset
> @@ -1,5 +1,4 @@
>  # Higher priority than systemd presets
>
> -# by default systemd enables a getty on tty1
> -# we don't want that because tty1 may not exist
> -disable getty at .service
> +# This file is currently empty, but is available for demonstration and future use
> +
> diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
> index d4680cd225..ed039de82b 100644
> --- a/package/systemd/systemd.mk
> +++ b/package/systemd/systemd.mk
> @@ -428,22 +428,35 @@ 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 defaults to only have getty at tty.service enabled
> +# * DefaultInstance=tty1 in getty at service
> +# * no DefaultInstance in serial-getty at .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 at .service via a patch on systemd source
> +#   drop-ins cannot override DefaultInstance with an empty string
> +# * set a new DefaultInstance for getty at .service, if needed
> +# * set a new DefaultInstance for serial-getty at .service, if needed
> +# * override the systemd-provided preset for console-getty.service if needed
>  define SYSTEMD_INSTALL_SERVICE_TTY
>         if [ $(BR2_TARGET_GENERIC_GETTY_PORT) = "console" ]; \
>         then \
>                 TARGET="console-getty.service"; \
> -               LINK_NAME="console-getty.service"; \
> +               echo enable console-getty.service > $(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 at .service"; \
> -               LINK_NAME="getty@$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)).service"; \
> +               mkdir $(TARGET_DIR)/usr/lib/systemd/system/getty at .service.d;\
> +               echo [Install] > $(TARGET_DIR)/usr/lib/systemd/system/getty at .service.d/buildroot-console.conf;\
> +               echo DefaultInstance=$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) >> $(TARGET_DIR)/usr/lib/systemd/system/getty at .service.d/buildroot-console.conf;\
>         else \
>                 TARGET="serial-getty at .service"; \
> -               LINK_NAME="serial-getty@$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)).service"; \
> +               mkdir $(TARGET_DIR)/usr/lib/systemd/system/serial-getty at .service.d;\
> +               echo [Install] > $(TARGET_DIR)/usr/lib/systemd/system/serial-getty at .service.d/buildroot-console.conf;\
> +               echo DefaultInstance=$(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) >> $(TARGET_DIR)/usr/lib/systemd/system/serial-getty at .service.d/buildroot-console.conf;\
>         fi; \
> -       mkdir -p $(TARGET_DIR)/etc/systemd/system/getty.target.wants/; \
> -       ln -fs ../../../../lib/systemd/system/$${TARGET} \
> -               $(TARGET_DIR)/etc/systemd/system/getty.target.wants/$${LINK_NAME}; \
>         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}; \
> --
> 2.24.0.rc1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

  reply	other threads:[~2019-11-03 17:48 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-03 16:56 [Buildroot] [PATCH 00/15] use host-systemd to enable units Jérémy Rosen
2019-11-03 16:56 ` [Buildroot] [PATCH 01/15] new recipe : host-systemd Jérémy Rosen
2019-11-03 17:20   ` James Hilliard
2019-11-04 17:02     ` Jérémy ROSEN
     [not found]       ` <CAJ4jsafSoX5ayztTZgOS38YPtVZbT7gYkk3FKHQ0U1FDG8u+bA@mail.gmail.com>
     [not found]         ` <CAFvCimWyMdTTZDxv3EyKDaHGXhrzOd2brLSe+BgbuU9oxJ3S8A@mail.gmail.com>
2019-11-04 20:40           ` Carlos Santos
2019-11-09 21:52     ` Yann E. MORIN
2019-11-09 21:49   ` Yann E. MORIN
2019-11-10 10:43     ` Jérémy ROSEN
2019-11-03 16:56 ` [Buildroot] [PATCH 02/15] use host-systemctl preset all to enable units Jérémy Rosen
2019-11-03 16:56 ` [Buildroot] [PATCH 03/15] fix tty handling Jérémy Rosen
2019-11-03 17:48   ` James Hilliard [this message]
2019-11-04 17:08     ` Jérémy ROSEN
2019-11-03 16:56 ` [Buildroot] [PATCH 04/15] fix trivial packages with buildroot-provided services Jérémy Rosen
2019-11-03 16:56 ` [Buildroot] [PATCH 05/15] fix trivial cases, upstream-provided services Jérémy Rosen
2019-11-03 16:56 ` [Buildroot] [PATCH 06/15] package/avahi: adapt to preset-all Jérémy Rosen
2019-11-03 17:15   ` James Hilliard
2019-11-03 17:17     ` Jérémy ROSEN
2019-11-09 22:08       ` Yann E. MORIN
2019-11-03 16:56 ` [Buildroot] [PATCH 07/15] package/connman: " Jérémy Rosen
2019-11-03 17:39   ` James Hilliard
2019-11-09 22:11   ` Yann E. MORIN
2019-11-09 22:36     ` James Hilliard
2019-11-10 10:19       ` Jérémy ROSEN
2019-11-03 16:56 ` [Buildroot] [PATCH 08/15] package/dante: " Jérémy Rosen
2019-11-03 17:17   ` James Hilliard
2019-11-03 16:56 ` [Buildroot] [PATCH 09/15] package/linuxptp " Jérémy Rosen
2019-11-03 17:23   ` James Hilliard
2019-11-03 16:56 ` [Buildroot] [PATCH 10/15] package/docker-engine: " Jérémy Rosen
2019-11-03 17:25   ` James Hilliard
2019-11-04 17:03     ` Jérémy ROSEN
2019-11-03 16:56 ` [Buildroot] [PATCH 11/15] package/network-manager: " Jérémy Rosen
2019-11-03 17:30   ` James Hilliard
2019-11-09 22:14   ` Yann E. MORIN
2019-11-09 22:25     ` James Hilliard
2019-11-03 16:56 ` [Buildroot] [PATCH 12/15] package/wpa_supplicant: adapt for preset-all Jérémy Rosen
2019-11-03 17:32   ` James Hilliard
2019-11-03 16:56 ` [Buildroot] [PATCH 13/15] package/sysklogd: adapt to preset-all Jérémy Rosen
2019-11-03 17:33   ` James Hilliard
2019-11-03 16:56 ` [Buildroot] [PATCH 14/15] package/targetcli-fb: " Jérémy Rosen
2019-11-03 17:34   ` James Hilliard
2019-11-03 16:56 ` [Buildroot] [PATCH 15/15] package/tor: " Jérémy Rosen
2019-11-03 17:31   ` James Hilliard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CADvTj4rFQ0a_k=sYS_ugNMOXQpTV3AA-3AOrZCSwNHaSg2XXkg@mail.gmail.com' \
    --to=james.hilliard1@gmail.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.