getty - ArchWiki

Jump to content

Related articles

- Display manager

A getty is the generic name for a program which manages a terminal line and its connected terminal. Its purpose is to protect the system from unauthorized access. Generally, each getty process is started by systemd and manages a single terminal line.

## Installation

agetty is the default getty in Arch Linux, as part of the util-linux package.

Alternatives include:

- mingetty — A minimal getty which allows automatic logins.

  mingettyAUR || mingettyAUR

- mgetty — A versatile program to handle all aspects of a modem under Unix.

  http://mgetty.greenie.net/ || mgettyAUR

## Tips and tricks

### Staircase effect

agetty modifies the TTY settings while waiting for a login so that the newlines are not translated to CR-LFs. This tends to cause a "staircase effect" for messages printed to the console.

It is entirely harmless, but in the event it persists once logged, you can fix this behavior with:

    $ stty onlcr

See this forums discussion on the subject.

### Add additional virtual consoles

Agetty manages virtual consoles and six of these virtual consoles are provided by default in Arch Linux. They are usually accessible by pressing `Ctrl+Alt+F1` through `Ctrl+Alt+F6`.

Open the file `/etc/systemd/logind.conf` and set the option `NAutoVTs=6` to the number of virtual terminals that you want at boot.

If needed, it is possible to temporarily start a `getty@ttyN.service` service directly.

### Automatic login to virtual console

Configuration relies on systemd unit drop-in files to override the default parameters passed to agetty.

Configuration differs for virtual versus serial consoles. In most cases, you want to set up automatic login on a virtual console, (whose device name is `ttyN`, where `N` is a number). The configuration of automatic login for serial consoles will be slightly different. Device names of the serial consoles look like `ttySN`, where `N` is a number.

Tip: Consider using greetd's auto-login feature. It will not auto-login a second time if the initial session exits, but will show a login screen instead.

#### Virtual console

Create a drop-in file for `getty@tty1.service` with the following contents:

    /etc/systemd/system/getty@tty1.service.d/autologin.conf

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin username %I $TERM

Tip:

- The option `Type=idle` found in the default `getty@.service` will delay the service startup until all jobs (state change requests to units) are completed in order to avoid polluting the login prompt with boot-up messages. When starting X automatically, it may be useful to start `getty@tty1.service` immediately by adding `Type=simple` into the drop-in file. Both the init system and startx can be silenced to avoid the interleaving of their messages during boot-up.
- The above snippet will cause the loginctl session type to be set to `tty`. If desirable (for example if starting X automatically), it is possible to manually set the session type to `wayland` or `x11` by adding `Environment=XDG_SESSION_TYPE=x11` or `Environment=XDG_SESSION_TYPE=wayland` into this file.

If you do not want full automatic login, but also do not want to type your username, see #Prompt only the password for a default user in virtual console login.

If you want to use a tty other than tty1, see systemd/FAQ#How do I change the default number of gettys?.

#### Serial console

Create a drop-in file:

    /etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty -o '-p -f -- \\u' --keep-baud --autologin username 115200,57600,38400,9600 - $TERM

#### Nspawn console

To configure auto-login for a systemd-nspawn container, override `console-getty.service` by creating a drop-in file:

    /etc/systemd/system/console-getty.service.d/autologin.conf

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --keep-baud --autologin username - 115200,38400,9600 $TERM

If `machinectl login my-container` method is used to access the container, also adjust the `container-getty@.service` template that manages `pts/[0-9]` pseudo ttys:

    /etc/systemd/system/container-getty@.service.d/autologin.conf

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --keep-baud --autologin username - 115200,38400,9600 $TERM

### Prompt only the password for a default user in virtual console login

Getty can be used to login from a virtual console with a default user, typing the password but without needing to insert the username. For instance, to prompt the password for `username` on `tty1`:

    /etc/systemd/system/getty@tty1.service.d/skip-username.conf

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty -o '-p -- username' --noclear --skip-login - $TERM

and then enable `getty@tty1`.

### Have boot messages stay on tty1

By default, Arch has the `getty@tty1` service enabled. The service file already passes `--noclear`, which stops agetty from clearing the screen. However systemd clears the screen before starting it. To disable this behavior, create a drop-in file:

    /etc/systemd/system/getty@tty1.service.d/noclear.conf

    [Service]
    TTYVTDisallocate=no

Note:

- Make sure to remove `quiet` from the kernel parameters.
- Late KMS starting may cause the first few boot messages to clear. See KMS#Early KMS start or KMS#Disabling modesetting.

## See also

- systemd#Change default target to boot into
- The TTY demystified
- Wikipedia:tty (unix)

Categories:

- Boot process
- Linux console