<HTML ><HEAD ><TITLE >Configuring init to start getty: the /etc/inittab file</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.63 "><LINK REL="HOME" TITLE="The Linux System Administrator's Guide" HREF="index.html"><LINK REL="UP" TITLE="init" HREF="init.html"><LINK REL="PREVIOUS" TITLE="init comes first" HREF="x2016.html"><LINK REL="NEXT" TITLE="Run levels" HREF="x2111.html"></HEAD ><BODY CLASS="SECT1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >The Linux System Administrator's Guide: Version 0.7</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="x2016.html" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Chapter 9. <B CLASS="COMMAND" >init</B ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x2111.html" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="AEN2051" >9.2. Configuring <B CLASS="COMMAND" >init</B > to start <B CLASS="COMMAND" >getty</B >: the <TT CLASS="FILENAME" >/etc/inittab</TT > file</A ></H1 ><P >When it starts up, <B CLASS="COMMAND" >init</B > reads the <TT CLASS="FILENAME" >/etc/inittab</TT > configuration file. While the system is running, it will re-read it, if sent the HUP signal; <A NAME="AEN2059" HREF="#FTN.AEN2059" >[1]</A > this feature makes it unnecessary to boot the system to make changes to the <B CLASS="COMMAND" >init</B > configuration take effect.</P ><P >The <TT CLASS="FILENAME" >/etc/inittab</TT > file is a bit complicated. We'll start with the simple case of configuring <B CLASS="COMMAND" >getty</B > lines. Lines in <TT CLASS="FILENAME" >/etc/inittab</TT > consist of four colon-delimited fields: <TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >id:runlevels:action:process</PRE ></FONT ></TD ></TR ></TABLE > The fields are described below. In addition, <TT CLASS="FILENAME" >/etc/inittab</TT > can contain empty lines, and lines that begin with a number sign (`<TT CLASS="LITERAL" >#</TT >'); these are both ignored. <DIV CLASS="GLOSSLIST" ><DL ><DT ><B >id</B ></DT ><DD ><P > This identifies the line in the file. For <B CLASS="COMMAND" >getty</B > lines, it specifies the terminal it runs on (the characters after <TT CLASS="FILENAME" >/dev/tty</TT > in the device file name). For other lines, it doesn't matter (except for length restrictions), but it should be unique. </P ></DD ><DT ><B >runlevels</B ></DT ><DD ><P > The run levels the line should be considered for. The run levels are given as single digits, without delimiters. (Run levels are described in the next section.) </P ></DD ><DT ><B >action</B ></DT ><DD ><P > What action should be taken by the line, e.g., <TT CLASS="LITERAL" >respawn</TT > to run the command in the next field again, when it exits, or <TT CLASS="LITERAL" >once</TT > to run it just once. </P ></DD ><DT ><B >process</B ></DT ><DD ><P > The command to run. </P ></DD ></DL ></DIV > To start a <B CLASS="COMMAND" >getty</B > on the first virtual terminal (<TT CLASS="FILENAME" >/dev/tty1</TT >), in all the normal multi-user run levels (2-5), one would write the following line: <TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >1:2345:respawn:/sbin/getty 9600 tty1</PRE ></FONT ></TD ></TR ></TABLE > The first field says that this is the line for <TT CLASS="FILENAME" >/dev/tty1</TT >. The second field says that it applies to run levels 2, 3, 4, and 5. The third field means that the command should be run again, after it exits (so that one can log in, log out, and then log in again). The last field is the command that runs <B CLASS="COMMAND" >getty</B > on the first virtual terminal. <A NAME="AEN2096" HREF="#FTN.AEN2096" >[2]</A > </P ><P >If you wanted to add terminals or dial-in modem lines to a system, you'd add more lines to <TT CLASS="FILENAME" >/etc/inittab</TT >, one for each terminal or dial-in line. For more details, see the manual pages <B CLASS="COMMAND" >init</B >, <TT CLASS="FILENAME" >inittab</TT >, and <B CLASS="COMMAND" >getty</B >.</P ><P >If a command fails when it starts, and <B CLASS="COMMAND" >init</B > is configured to <TT CLASS="LITERAL" >restart</TT > it, it will use a lot of system resources: <B CLASS="COMMAND" >init</B > starts it, it fails, <B CLASS="COMMAND" >init</B > starts it, it fails, <B CLASS="COMMAND" >init</B > starts it, it fails, and so on, ad infinitum. To prevent this, <B CLASS="COMMAND" >init</B > will keep track of how often it restarts a command, and if the frequency grows to high, it will delay for five minutes before restarting again. </P ></DIV ><H3 CLASS="FOOTNOTES" >Notes</H3 ><TABLE BORDER="0" CLASS="FOOTNOTES" WIDTH="100%" ><TR ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="5%" ><A NAME="FTN.AEN2059" HREF="x2051.html#AEN2059" >[1]</A ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="95%" ><P >Using the command <B CLASS="COMMAND" >kill -HUP 1</B > as root, for example </P ></TD ></TR ><TR ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="5%" ><A NAME="FTN.AEN2096" HREF="x2051.html#AEN2096" >[2]</A ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="95%" ><P >Different versions of <B CLASS="COMMAND" >getty</B > are run differently. Consult your manual page, and make sure it is the correct manual page.</P ></TD ></TR ></TABLE ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="x2016.html" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x2111.html" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><B CLASS="COMMAND" >init</B > comes first</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="init.html" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Run levels</TD ></TR ></TABLE ></DIV ></BODY ></HTML >