<HTML ><HEAD ><TITLE >Configure Linux kernel</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="Remote Serial Console HOWTO" HREF="index.html"><LINK REL="PREVIOUS" TITLE="Configure the SYSLINUX boot loader" HREF="configure-boot-loader-syslinux.html"><LINK REL="NEXT" TITLE="Configure Linux kernel using LILO" HREF="configure-kernel-lilo.html"></HEAD ><BODY CLASS="CHAPTER" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Remote Serial Console HOWTO</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="configure-boot-loader-syslinux.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="configure-kernel-lilo.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="CHAPTER" ><H1 ><A NAME="CONFIGURE-KERNEL" ></A >Chapter 5. Configure <SPAN CLASS="SYSTEMITEM" >Linux</SPAN > kernel</H1 ><DIV CLASS="TOC" ><DL ><DT ><B >Table of Contents</B ></DT ><DT >5.1. <A HREF="configure-kernel-lilo.html" >Configure Linux kernel using <SPAN CLASS="APPLICATION" >LILO</SPAN ></A ></DT ><DT >5.2. <A HREF="configure-kernel-grub.html" >Configure Linux kernel using <SPAN CLASS="APPLICATION" >GRUB</SPAN ></A ></DT ><DT >5.3. <A HREF="configure-kernel-syslinux.html" >Configure Linux kernel using <SPAN CLASS="APPLICATION" >SYSLINUX</SPAN ></A ></DT ></DL ></DIV ><P >The <SPAN CLASS="SYSTEMITEM" >Linux</SPAN > kernel is configured to select the console by passing it the <TT CLASS="LITERAL" >console</TT > parameter. The <TT CLASS="LITERAL" >console</TT > parameter can be given repeatedly, but the parameter can only be given once for each console technology. So <TT CLASS="LITERAL" >console=tty0 console=lp0 console=ttyS0</TT > is acceptable but <TT CLASS="LITERAL" >console=ttyS0 console=ttyS1</TT > will not work.</P ><P >When multiple consoles are listed output is sent to all consoles and input is taken from the last listed console. The last <TT CLASS="LITERAL" >console</TT > is the one Linux uses as the <TT CLASS="FILENAME" >/dev/console</TT > device.</P ><P >The syntax of the <TT CLASS="LITERAL" >console</TT > parameter is given in <A HREF="configure-kernel.html#CONFIGURE-KERNEL-SYNTAX" >Figure 5-1</A >.</P ><DIV CLASS="FIGURE" ><A NAME="CONFIGURE-KERNEL-SYNTAX" ></A ><P ><B >Figure 5-1. Kernel <TT CLASS="LITERAL" >console</TT > syntax, in EBNF</B ></P ><P CLASS="LITERALLAYOUT" ><TT CLASS="LITERAL" >console=ttyS</TT ><TT CLASS="REPLACEABLE" ><I ><serial_port></I ></TT >[<TT CLASS="LITERAL" >,</TT ><TT CLASS="REPLACEABLE" ><I ><mode></I ></TT >]<br> <TT CLASS="LITERAL" >console=tty</TT ><TT CLASS="REPLACEABLE" ><I ><virtual_terminal></I ></TT ><br> <TT CLASS="LITERAL" >console=lp</TT ><TT CLASS="REPLACEABLE" ><I ><parallel_port></I ></TT ><br> <TT CLASS="LITERAL" >console=ttyUSB</TT >[<TT CLASS="REPLACEABLE" ><I ><usb_port></I ></TT >[<TT CLASS="LITERAL" >,</TT ><TT CLASS="REPLACEABLE" ><I ><mode></I ></TT >]</P ></DIV ><P ><TT CLASS="REPLACEABLE" ><I ><serial_port></I ></TT > is the number of the serial port. This is defined in <A HREF="configure-boot-loader-lilo.html#CONFIGURE-BOOT-LOADER-LILO-EBNF" >Figure 4-2</A > and discussed in <A HREF="preparation-setport.html" >Section 2.2</A >. The examples in this <I CLASS="CITETITLE" >HOWTO</I > use the first serial port, giving <TT CLASS="REPLACEABLE" ><I ><serial_port></I ></TT > the value <TT CLASS="LITERAL" >0</TT >, which in turn gives kernel parameter <TT CLASS="LITERAL" >console=ttyS0</TT >.</P ><P >If you are using the <SPAN CLASS="APPLICATION" >devfs</SPAN > device filesystem with your Linux installation the kernel parameter for the first serial port is still <TT CLASS="LITERAL" >ttyS0</TT >, even though the first serial device is no longer known as <TT CLASS="FILENAME" >/dev/ttyS0</TT > but as <TT CLASS="FILENAME" >/dev/ttys/0</TT >.</P ><P ><TT CLASS="REPLACEABLE" ><I ><mode></I ></TT > is defined in <A HREF="preparation-setspeed.html#PREPARATION-SETSPEED-MODESYNTAX" >Figure 2-7</A > and is discussed in <A HREF="preparation-setspeed.html" >Section 2.3</A >. The examples in this <I CLASS="CITETITLE" >HOWTO</I > use 9600 bits per second, one start bit, eight data bits, no parity, one stop bit, and no <SPAN CLASS="ACRONYM" >CTS</SPAN >/<SPAN CLASS="ACRONYM" >RTS</SPAN > flow control giving <TT CLASS="REPLACEABLE" ><I ><mode></I ></TT > the value of <TT CLASS="LITERAL" >9600n8</TT >. When the current kernel flow control bugs are corrected this <I CLASS="CITETITLE" >HOWTO</I > will once again recommend the value <TT CLASS="LITERAL" >9600n8r</TT >.</P ><P ><TT CLASS="REPLACEABLE" ><I ><usb_port></I ></TT > can specify the address of a <SPAN CLASS="ACRONYM" >USB</SPAN > dongle containing a serial port to be used as a serial console.<A NAME="AEN1301" HREF="#FTN.AEN1301" ><SPAN CLASS="footnote" >[1]</SPAN ></A > For example, the serial port <TT CLASS="LITERAL" >console=ttyS0,9600n8</TT > when moved to a <SPAN CLASS="ACRONYM" >USB</SPAN > serial dongle would be written as <TT CLASS="LITERAL" >console=ttyUSB0,9600n8</TT >. The <SPAN CLASS="ACRONYM" >USB</SPAN > subsystem is started rather late in the boot process, console messages printed during boot before the <SPAN CLASS="ACRONYM" >USB</SPAN > subsystem is loaded will be lost.</P ><P >With no <TT CLASS="LITERAL" >console</TT > parameter the kernel will use the first virtual terminal, which is <TT CLASS="FILENAME" >/dev/tty0</TT >. A user at the keyboard uses this virtual terminal by pressing <B CLASS="KEYCAP" >Ctrl</B >-<B CLASS="KEYCAP" >Alt</B >-<B CLASS="KEYCAP" >F1</B >.</P ><P >If your computer contains a video card then we suggest that you also configure it as a console. This is done with the kernel parameter <TT CLASS="LITERAL" >console=tty0</TT >.</P ><P >For computers with both a video card and a serial console in the port marked <SPAN CLASS="QUOTE" >"<SPAN CLASS="ACRONYM" >COM1:</SPAN >"</SPAN > this <I CLASS="CITETITLE" >HOWTO</I > suggests the kernel parameters:</P ><DIV CLASS="FIGURE" ><A NAME="CONFIGURE-KERNEL-PARAMETERS-VIDEO" ></A ><P ><B >Figure 5-2. Recommended kernel parameters, <SPAN CLASS="ACRONYM" >PC</SPAN >s with video card</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="PROGRAMLISTING" >console=tty0 console=ttyS0,9600n8</PRE ></FONT ></TD ></TR ></TABLE ></DIV ><P >Kernel messages will appear on both the first virtual terminal and the serial port. Messages from the <SPAN CLASS="APPLICATION" >init</SPAN > system and the system logger will appear only on the first serial port. This can be slightly confusing when looking at the attached monitor: the machine will appear to boot and then hang. Don't panic, the <SPAN CLASS="APPLICATION" >init</SPAN > system has started but is now printing messages to the serial port but is printing nothing to the screen. If a <SPAN CLASS="APPLICATION" >getty</SPAN > has been configured then a <TT CLASS="COMPUTEROUTPUT" >login:</TT > prompt will eventually appear on the attached monitor.</P ><P >For <SPAN CLASS="ACRONYM" >PC</SPAN >s without a video card, this <I CLASS="CITETITLE" >HOWTO</I > suggests the kernel parameters:</P ><DIV CLASS="FIGURE" ><A NAME="CONFIGURE-KERNEL-PARAMETERS-NOVIDEO" ></A ><P ><B >Figure 5-3. Recommended kernel parameters, <SPAN CLASS="ACRONYM" >PC</SPAN >s without video card</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="PROGRAMLISTING" >console=ttyS0,9600n8</PRE ></FONT ></TD ></TR ></TABLE ></DIV ><P >These parameters are passed to the booting kernel by the boot loader. Next we will configure the boot loader used by your <SPAN CLASS="SYSTEMITEM" >Linux</SPAN > installation to pass the <TT CLASS="LITERAL" >console</TT > parameters to the kernel.</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.AEN1301" HREF="configure-kernel.html#AEN1301" ><SPAN CLASS="footnote" >[1]</SPAN ></A ></TD ><TD ALIGN="LEFT" VALIGN="TOP" WIDTH="95%" ><P >A serial console attached to a <SPAN CLASS="ACRONYM" >USB</SPAN > dongle is only available in Linux kernel version 2.5.7 and later. The 2.5 series of kernels are developer's kernels and are not ready for production use.</P ></TD ></TR ></TABLE ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="configure-boot-loader-syslinux.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="configure-kernel-lilo.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Configure the <SPAN CLASS="APPLICATION" >SYSLINUX</SPAN > boot loader</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Configure Linux kernel using <SPAN CLASS="APPLICATION" >LILO</SPAN ></TD ></TR ></TABLE ></DIV ></BODY ></HTML >