Difference between revisions of "Automatic login to virtual console"

From ArchWiki
Jump to: navigation, search
(Use drop-in feature of systemd for getty autologin: added steps and made clearer)
Line 17: Line 17:
 
There are two types of consoles: virtual and serial ones. In most cases you would want to setup up autologin on virtual console, the one which device name is ''ttyN'', where ''N'' is a number. The configuration of the autologin for the serial consoles will be slightly different. Device names of the serial consoles look like ''ttySN'', where ''N'' is a number.
 
There are two types of consoles: virtual and serial ones. In most cases you would want to setup up autologin on virtual console, the one which device name is ''ttyN'', where ''N'' is a number. The configuration of the autologin for the serial consoles will be slightly different. Device names of the serial consoles look like ''ttySN'', where ''N'' is a number.
  
For the virtual console proceed with the following steps, the case with serial console is dealt with at the bottom of this page.
+
==== Virtual console ====
  
 
Create a new directory named {{ic|getty@tty1.service.d}} under {{ic|/etc/systemd/system}}:
 
Create a new directory named {{ic|getty@tty1.service.d}} under {{ic|/etc/systemd/system}}:
Line 28: Line 28:
 
2=[Service]
 
2=[Service]
 
ExecStart=
 
ExecStart=
ExecStart=-/usr/bin/agetty --autologin <username> --noclear %I 38400 linux
+
ExecStart=/usr/bin/agetty --autologin <username> --noclear %I 38400 linux
 
}}
 
}}
  
{{Tip|The option {{ic|1=Type=idle}} will delay the execution of agetty until all jobs (state change requests to units) are completed. On the other hand it may cause systemd boot-up messages to pollute the login prompt. This option is more useful when [[Start X at Login|starting X automatically]]. See {{ic|man systemd.service}} for more info.}}
+
Then disable getty@.service and enable getty@tty1.service
  
By default, {{ic|getty@.service}} uses {{ic|1=Type=idle}}. If you want to use {{ic|1=Type=simple}}, then your {{ic|autologin.conf}} should look like this:
+
{{bc|
 
+
systemctl disable getty@.service
{{hc|/etc/systemd/system/getty@tty1.service.d/autologin.conf|
+
systemctl enable getty@tty1.service
2=[Service]
+
ExecStart=
+
ExecStart=-/usr/bin/agetty --autologin <username> --noclear %I 38400 linux
+
Type=simple
+
 
}}
 
}}
  
If you want to use another tty than tty1 see [[Systemd FAQ#Q:_How_do_I_change_the_number_of_gettys_running_by_default.3F|Systemd FAQ]].
+
==== Serial console ====
 
+
In the case of a serial console you need to create different directory
+
  
 
  # mkdir /etc/systemd/system/serial-getty@ttyS0.service.d
 
  # mkdir /etc/systemd/system/serial-getty@ttyS0.service.d
Line 56: Line 50:
 
Type=simple
 
Type=simple
 
}}
 
}}
 +
 +
=== Tips ===
 +
====Start X at Login====
 +
[[Start X at Login|starting X automatically]]. By default, {{ic|getty@.service}} uses {{ic|1=Type=idle}}, which delays the execution of agetty until all jobs (state change requests to units) are completed. By using {{ic|1=Type=simple}} {{ic|getty@.service}} will start immediately, but systemd boot-up messages might pollute the login prompt. To enable {{ic|1=Type=simple}} just add a line to {{ic|autologin.conf}}:
 +
 +
{{hc|/etc/systemd/system/getty@tty1.service.d/autologin.conf|
 +
2=[Service]
 +
ExecStart=
 +
ExecStart=-/usr/bin/agetty --autologin <username> --noclear %I 38400 linux
 +
Type=simple
 +
}}
 +
 +
 +
==== Adding ttys ====
 +
[[Systemd FAQ#Q:_How_do_I_change_the_number_of_gettys_running_by_default.3F|Systemd FAQ]].
  
 
== Tips & Tricks ==
 
== Tips & Tricks ==

Revision as of 05:47, 11 December 2013

This article describes how to automatically log in to a virtual console at the end of the boot process. This article only covers console log-ins; methods for starting an X server are described in Start X at Login.

Installation

Use drop-in feature of systemd for getty autologin

Since systemd 198 unit files may now be extended via drop-in files without having to edit/override the unit files themselves, to learn more about this feature, consult systemd.unit(5) and search for Along with a unit file foo.service a directory foo.service.d/ may exist.

There are two types of consoles: virtual and serial ones. In most cases you would want to setup up autologin on virtual console, the one which device name is ttyN, where N is a number. The configuration of the autologin for the serial consoles will be slightly different. Device names of the serial consoles look like ttySN, where N is a number.

Virtual console

Create a new directory named getty@tty1.service.d under /etc/systemd/system:

# mkdir /etc/systemd/system/getty@tty1.service.d

Then create a new file named autologin.conf and add it into the directory:

/etc/systemd/system/getty@tty1.service.d/autologin.conf
[Service]
ExecStart=
ExecStart=/usr/bin/agetty --autologin <username> --noclear %I 38400 linux

Then disable getty@.service and enable getty@tty1.service

systemctl disable getty@.service
systemctl enable getty@tty1.service

Serial console

# mkdir /etc/systemd/system/serial-getty@ttyS0.service.d

The file autologin.conf will also look slightly different

/etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin <username> -s %I 115200,38400,9600 vt102
Type=simple

Tips

Start X at Login

starting X automatically. By default, getty@.service uses Type=idle, which delays the execution of agetty until all jobs (state change requests to units) are completed. By using Type=simple getty@.service will start immediately, but systemd boot-up messages might pollute the login prompt. To enable Type=simple just add a line to autologin.conf:

/etc/systemd/system/getty@tty1.service.d/autologin.conf
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin <username> --noclear %I 38400 linux
Type=simple


Adding ttys

Systemd FAQ.

Tips & Tricks

Avoiding unnecessary dmesg errors

To avoid errors related to display-manager.service in dmesg, you should set the default target to multi-user instead of graphical:

# systemctl enable multi-user.target

See also