26

I have a problem with autologin at startup in Ubuntu Server 16.04.1 LTS.

I use this server only for listening internet radio so I do not care about security.

I was able to create a bash script to auto start mplayer but can't configure autologin.

I've tried at least 4 solutions (always editing the file /etc/init/tty1.conf and of course replacing USERNAME with actual user name):

  1. change the line from

    exec /sbin/getty -8 38400 tty1
    

    to

    exec /sbin/getty -8 38400 tty1 -a USERNAME 
    
  2. change the line from

    exec /sbin/getty -8 38400 tty1
    

    to

    exec /bin/login -f USERNAME < /dev/tty1 > /dev/tty1 2>&1
    
  3. Install rungetty, comment the line

    exec /sbin/getty -8 38400 tty1
    

    and add the line

    exec /sbin/rungetty --autologin USERNAME tty1 
    
  4. Install mingetty, comment the line

    exec /sbin/getty -8 38400 tty1
    

    and add the line

    exec /sbin/mingetty --autologin USERNAME tty1
    

Nothing helps - I have to input my login and password at startup - any ideas what to do?

Zanna
  • 70,465
Tomek
  • 263

2 Answers2

50

Try this:

sudo systemctl edit getty@tty1.service

This will the create a drop-in file (if neccessary) and open it an editor. Add the following, replacing myusername with your user name:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --noissue --autologin myusername %I $TERM
Type=idle

This will:

  • Create the folder /etc/systemd/system/getty@tty1.service.d if necessary
  • Create the file /etc/systemd/system/getty@tty1.service.d/override.conf if necessary
PerlDuck
  • 13,335
  • I followed your guide and my machine can log in automatically now. BUT I cannot ssh to the machine as possible before. Please help me to get back to my SSH connection. – Nam G VU Feb 10 '17 at 10:04
  • Hi Nam. Your user have a password? I tried this in a machine and i can access to it over SSH with the user passwd. Shows any error? Thanks. – Jose Carlos Nieto Ramos Mar 03 '17 at 18:46
  • Too long ago and the machine is deleted on my side; sorry I can't get you the error. User has a password of course. – Nam G VU Mar 04 '17 at 11:21
  • 1
    Your guide took me stuck at [OK] Started Update UTMP about System Runlevel Changes. during boot – Patrizio Bertoni Sep 19 '17 at 08:46
  • 4
    Instead of manually creating the .d directory and the override.conf file we can also simply say sudo systemctl edit getty@tty1.service. It will the create the file (if neccessary) and open it an editor. Simply save the file under the suggested name when finished. – PerlDuck Jul 25 '18 at 11:23
  • Thanks for the answer, my autologin is also working now. May I know do you have anyway to wait for 10sec before autologin so that anyone can interrupt autologin between that period and login manually with different user. – kleash Feb 02 '20 at 01:35
  • 1
    Still works in 20.04. @PerlDuck I've edited the solution with a request that your improved steps are added to the original solution, they're faster, use the official systemctl tool which is less prone to error and chooses a text editor automatically, alleviating doubt. I've preserved the OP's documentation about the files that it creates so it doesn't lose informational value. Thanks kindly! – tresf Apr 15 '20 at 18:09
  • 1
    @tresf Very nice, thank you. I took the freedom to replace "This will the create the file" with "This will the create a drop-in file" so that people know what kind of file that is -- and what to search for in case more information is needed. – PerlDuck Apr 16 '20 at 09:41
  • Doesn't work in 20.04. (as appears to be the standard for Ubuntu questions.) Rebooting the machine after these steps, I ran "who", and the user was not logged in. – John Smith May 26 '20 at 10:07
  • 1
    Doesn't work on 18.04. I just get a black screen with blinking cursor... – Onkeltem Aug 14 '20 at 18:44
  • Worked like a charm in ubuntu server 20.04.2 fresh install. Ran sudo systemctl edit getty@tty1.service and added the file contents then rebooted. On reboot, the user had logged in. – TabsNotSpaces Mar 04 '21 at 03:42
6

agetty opens a tty port, prompts for a login name and invokes the /bin/login command.

This file overrides the config by default of agetty on systemd for tty1. This provides a new instance of tty1 with autologin for the user specified.

By the way, the parameter --noissue is used to hide the contents of /etc/issue on login, so not needed in your case.

The option Type=idle found in the default getty@.service will delay the service startup until all jobs 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 file.

More info: getty: Archlinux.org

Zanna
  • 70,465
  • 2
    Once again - thank you very much for explanations - they are very deep and clear. Some more information about autologin here: http://askubuntu.com/questions/771837/how-to-create-ubuntu-server-16-04-autologin and about overriding here: http://askubuntu.com/questions/659267/how-do-i-override-or-configure-systemd-services – Tomek Aug 31 '16 at 15:48