I want to spawn a little TUI program instead of the shell on a raspberry-pi on the standard tty (without x11 of course)

Therefore I need to know how to switch of the starting of the standard-shell there and how to start my own program?

Using Raspbian9 with systemd


In systemd, local virtual consoles are managed by getty@.service and serial lines by serial-getty@.service. Both start the agetty program which initializes a few tty parameters, displays the banner, and the "login:" prompt.

For your program, it's best to just use the existing unit as a base, and change it to run the custom program.

Copy /usr/lib/systemd/system/getty@.service to /etc/systemd/system/myapp@.service. Edit your new file to have the correct program in ExecStart=, and additionally add a line Conflicts=getty@%i.service in the [Unit] section.

Test with systemctl start myapp@tty1. If it works, disable the original getty@tty1.service through systemctl and enable your own.

  • There is no such folder, only /usr/lib/systemd/ exists – Theo Freeman Jan 11 at 10:18
  • Then your distro probably keeps unit files in /lib/systemd/system/ instead. – grawity Jan 11 at 10:38
  • You meant to write Conflicts=getty@%I.service, with uppercase 'I', correct? Thanks for the great advice so far, this seems to be the right way, but when I try to start my service everything except a blinking underscore in tty1 disappears – Theo Freeman Jan 11 at 12:57

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.