[systemd-devel] [PATCH] getty-generator: Enable getty on all active serial consoles.

Michael Marineau michael.marineau at coreos.com
Thu Aug 22 18:53:39 PDT 2013


Greetings, sent this last week but didn't get any feedback.

Is this change acceptable for systemd or is there a particular reason for
not starting gettys on all active consoles?


On Fri, Aug 16, 2013 at 8:28 PM, Michael Marineau <
michael.marineau at coreos.com> wrote:

> This enables a getty on active kernel consoles even when they are not
> the last one specified on the kernel command line and mapped to
> /dev/console. Now the order "console=ttyS0 console=tty0" works in
> addition to "console=tty0 console=ttyS0".
> ---
>
> I'm not sure if there is a particular reason for the more limited existing
> behavior but it took me by surprise.
>
>  src/getty-generator/getty-generator.c | 37
> ++++++++++++++++++++++-------------
>  1 file changed, 23 insertions(+), 14 deletions(-)
>
> diff --git a/src/getty-generator/getty-generator.c
> b/src/getty-generator/getty-generator.c
> index 4b7a60a..6c93806 100644
> --- a/src/getty-generator/getty-generator.c
> +++ b/src/getty-generator/getty-generator.c
> @@ -122,33 +122,42 @@ int main(int argc, char *argv[]) {
>          }
>
>          if (read_one_line_file("/sys/class/tty/console/active", &active)
> >= 0) {
> -                const char *tty;
> -
> -                tty = strrchr(active, ' ');
> -                if (tty)
> -                        tty ++;
> -                else
> -                        tty = active;
> -
> -                /* Automatically add in a serial getty on the kernel
> -                 * console */
> -                if (isempty(tty) || tty_is_vc(tty))
> -                        free(active);
> -                else {
> +                char *w, *state;
> +                size_t l;
> +
> +                /* Automatically add in a serial getty on all active
> +                 * kernel consoles */
> +                FOREACH_WORD(w, l, active, state) {
> +                        char *tty;
>                          int k;
>
> +                        tty = strndup(w, l);
> +                        if (!tty) {
> +                            log_oom();
> +                            free(active);
> +                            r = EXIT_FAILURE;
> +                            goto finish;
> +                        }
> +
> +                        if (isempty(tty) || tty_is_vc(tty)) {
> +                                free(tty);
> +                                continue;
> +                        }
> +
>                          /* We assume that gettys on virtual terminals are
>                           * started via manual configuration and do this
> magic
>                           * only for non-VC terminals. */
>
>                          k = add_serial_getty(tty);
> -                        free(active);
>
>                          if (k < 0) {
> +                                free(tty);
> +                                free(active);
>                                  r = EXIT_FAILURE;
>                                  goto finish;
>                          }
>                  }
> +                free(active);
>          }
>
>          /* Automatically add in a serial getty on the first
> --
> 1.8.1.5
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20130822/4d1a32d5/attachment.html>


More information about the systemd-devel mailing list