Installing Serial Terminal (AGetty)

From GlassTTY
Jump to: navigation, search

This section describes the installation procedure for adding a Serial terminal to an Arch Linux based system.

Ignore this section if GRUB2 is configured to listen on the serial interface. If GRUB2 is not listening and only a getty is required after boot then follow these steps.

To start getty listening on /dev/ttyUSBS0

   systemctl start serial-getty@ttyUSB0.service
   systemctl enable serial-getty@ttyUSB0.service

Similarly for /sev/ttyS0

   systemctl start serial-getty@ttyS0.service
   systemctl enable serial-getty@ttyS0.service

The getty can be checked with systemctl, e.g.

   systemctl status serial-getty@ttyUSB0.service

Here is an example of a serail getty service file from an Arch Linux machine. The file can be found at /usr/lib/systemd/system/serial-getty@.service. Note the entry ExecStart, this launches the agetty binary and sets the baud rate options.

   #  SPDX-License-Identifier: LGPL-2.1+
   #
   #  This file is part of systemd.
   #
   #  systemd is free software; you can redistribute it and/or modify it
   #  under the terms of the GNU Lesser General Public License as published by
   #  the Free Software Foundation; either version 2.1 of the License, or
   #  (at your option) any later version.
   
   [Unit]
   Description=Serial Getty on %I
   Documentation=man:agetty(8) man:systemd-getty-generator(8)
   Documentation=http://0pointer.de/blog/projects/serial-console.html
   BindsTo=dev-%i.device
   After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service getty-pre.target
   
   # If additional gettys are spawned during boot then we should make
   # sure that this is synchronized before getty.target, even though
   # getty.target didn't actually pull it in.
   Before=getty.target
   IgnoreOnIsolate=yes
   
   # IgnoreOnIsolate causes issues with sulogin, if someone isolates
   # rescue.target or starts rescue.service from multi-user.target or
   # graphical.target.
   Conflicts=rescue.service
   Before=rescue.service
   
   [Service]
   # The '-o' option value tells agetty to replace 'login' arguments with an
   # option to preserve environment (-p), followed by '--' for safety, and then
   # the entered username.
   ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 19200,9600,4800,2400,1200 %I $TERM
   Type=idle
   Restart=always
   UtmpIdentifier=%I
   TTYPath=/dev/%I
   TTYReset=yes
   TTYVHangup=yes
   KillMode=process
   IgnoreSIGPIPE=no
   SendSIGHUP=yes
   
   [Install]
   WantedBy=getty.target