Replacing getty with ngetty on Debian

This article was originally posted back in October 2013. As such, I’ve updated it, since the current Debian release, Debian 9, no longer uses init, but instead uses systemd. Systemd is a system and service manager for Linux. It is the default init system for Debian since Debian 8 (Jessie).  ngetty or mingetty may be useful for tiny cloud servers with < 1GB of memory, if you have no need for serial lines or if you prefer the way they can be configured. Feel free to send in your suggestions, comments or questions.

ngetty –  is a single-process getty replacement, so instead of running 6 getty processes consuming up to 2MB of memory each, you can instead use a single getty process using < 1MB total.

mingetty –  is a minimal getty for use on virtual consoles. Unlike the getty in the util-linux or mgetty packages, mingetty – like ngetty – is not suitable for serial lines, which is why it’s smaller.


ngetty (or mingetty) on Debian 8 and newer releases – systemd


First login to your Debian box and run the below commands.
You may use ngetty if you prefer. I’m using mingetty below, because ngetty isn’t available in Debian 9 repositories, but available in Debian 8 and Debian SID.

# apt install mingetty

To tell debian to start using you the new getty, update the /sbin/getty symbolic-link to:

# cd /sbin
# rm getty
# ln -s mingetty getty

If in a cloud-based environment, you really shouldn’t care about multiple consoles, you should reduce the # of consoles to just 1. To do this, edit /etc/default/console-setup and replace:





ngetty Debian 7 and older releases – init

Once you install ngetty: apt-get install ngetty, edit /etc/inittab. The end of it should be edited to look like this:

# /sbin/getty invocations for the runlevels.
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
# Format:
#  <id>:<runlevels>:<action>:<process>
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#1:2345:respawn:/sbin/getty 38400 tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
ng:2345:respawn:/sbin/ngetty 1 2 3 4 5 6

# Example how to put a getty on a serial line (for a terminal)
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3

So basically commented out the 1 – 6 getty lines, then add

ng:2345:respawn:/sbin/ngetty 1 2 3 4 5 6

…which replaces the six getty lines.

I was stripping down a Debian 7 server for a client (back in 2013) and some of the steps were included here. However, there were no instructions for replacing getty with ngetty or mingetty on that Debian wiki page, so decided to write this brief guide. Debian has since added the section “Replace the getty processes with the ngetty single process daemon” to that page.

To avoid updates breaking your custom getty setup. You can use for example:

dpkg-divert --add /sbin/getty


Also read: Best Linux Distro 2019, for Desktop and/or Choosing the Best Linux Server Distro 2019.


Other getty replacement options

fgetty – very small, efficient, console-only getty and login.
mgetty – Smart Modem getty replacement.
rungetty – minimal console getty that can run any process.

Posted: October 11th 2013 | Last updated: May 31st 2019

Tags: , ,

Replacing getty with ngetty on Debian

3 Responses

  1. thanks!

    Patrick October 20, 2014 at 4:29 pm #
  2. Good for small mother boards like beagleboard, pi etc. as well. Just you need to add to your tutorial, “init q” for inittab restart without system reboot.

    ZEROF December 12, 2014 at 3:20 am #
  3. Note: this no longer works for debian 8 as jessie does not have /etc/inittab (due to systemd). I would love to have updated instructions for jessie if ngetty can still be used as its been a great resource saver in the past!

    drad September 27, 2015 at 11:28 am #

Leave a Reply