Commit | Line | Data |
---|---|---|
8e7fbec6 MCC |
1 | .. _serial_console: |
2 | ||
c2ffd5da MCC |
3 | Linux Serial Console |
4 | ==================== | |
1da177e4 LT |
5 | |
6 | To use a serial port as console you need to compile the support into your | |
7 | kernel - by default it is not compiled in. For PC style serial ports | |
c2ffd5da MCC |
8 | it's the config option next to menu option: |
9 | ||
10 | :menuselection:`Character devices --> Serial drivers --> 8250/16550 and compatible serial support --> Console on 8250/16550 and compatible serial port` | |
11 | ||
1da177e4 LT |
12 | You must compile serial support into the kernel and not as a module. |
13 | ||
14 | It is possible to specify multiple devices for console output. You can | |
15 | define a new kernel command line option to select which device(s) to | |
16 | use for console output. | |
17 | ||
c2ffd5da | 18 | The format of this option is:: |
1da177e4 LT |
19 | |
20 | console=device,options | |
21 | ||
22 | device: tty0 for the foreground virtual console | |
23 | ttyX for any other virtual console | |
24 | ttySx for a serial port | |
25 | lp0 for the first parallel port | |
f1a1c2dc | 26 | ttyUSB0 for the first USB serial device |
1da177e4 LT |
27 | |
28 | options: depend on the driver. For the serial port this | |
f1a1c2dc RD |
29 | defines the baudrate/parity/bits/flow control of |
30 | the port, in the format BBBBPNF, where BBBB is the | |
31 | speed, P is parity (n/o/e), N is number of bits, | |
32 | and F is flow control ('r' for RTS). Default is | |
1da177e4 LT |
33 | 9600n8. The maximum baudrate is 115200. |
34 | ||
35 | You can specify multiple console= options on the kernel command line. | |
36 | Output will appear on all of them. The last device will be used when | |
c2ffd5da | 37 | you open ``/dev/console``. So, for example:: |
1da177e4 LT |
38 | |
39 | console=ttyS1,9600 console=tty0 | |
40 | ||
c2ffd5da | 41 | defines that opening ``/dev/console`` will get you the current foreground |
1da177e4 LT |
42 | virtual console, and kernel messages will appear on both the VGA |
43 | console and the 2nd serial port (ttyS1 or COM2) at 9600 baud. | |
44 | ||
45 | Note that you can only define one console per device type (serial, video). | |
46 | ||
47 | If no console device is specified, the first device found capable of | |
48 | acting as a system console will be used. At this time, the system | |
49 | first looks for a VGA card and then for a serial port. So if you don't | |
50 | have a VGA card in your system the first serial port will automatically | |
51 | become the console. | |
52 | ||
c2ffd5da MCC |
53 | You will need to create a new device to use ``/dev/console``. The official |
54 | ``/dev/console`` is now character device 5,1. | |
1da177e4 | 55 | |
f1a1c2dc | 56 | (You can also use a network device as a console. See |
d9d6ef25 | 57 | ``Documentation/networking/netconsole.rst`` for information on that.) |
f1a1c2dc | 58 | |
c2ffd5da | 59 | Here's an example that will use ``/dev/ttyS1`` (COM2) as the console. |
1da177e4 LT |
60 | Replace the sample values as needed. |
61 | ||
c2ffd5da MCC |
62 | 1. Create ``/dev/console`` (real console) and ``/dev/tty0`` (master virtual |
63 | console):: | |
1da177e4 | 64 | |
c2ffd5da MCC |
65 | cd /dev |
66 | rm -f console tty0 | |
67 | mknod -m 622 console c 5 1 | |
68 | mknod -m 622 tty0 c 4 0 | |
1da177e4 LT |
69 | |
70 | 2. LILO can also take input from a serial device. This is a very | |
71 | useful option. To tell LILO to use the serial port: | |
c2ffd5da | 72 | In lilo.conf (global section):: |
1da177e4 | 73 | |
c2ffd5da | 74 | serial = 1,9600n8 (ttyS1, 9600 bd, no parity, 8 bits) |
1da177e4 LT |
75 | |
76 | 3. Adjust to kernel flags for the new kernel, | |
c2ffd5da | 77 | again in lilo.conf (kernel section):: |
1da177e4 | 78 | |
c2ffd5da | 79 | append = "console=ttyS1,9600" |
1da177e4 LT |
80 | |
81 | 4. Make sure a getty runs on the serial port so that you can login to | |
82 | it once the system is done booting. This is done by adding a line | |
c2ffd5da | 83 | like this to ``/etc/inittab`` (exact syntax depends on your getty):: |
1da177e4 | 84 | |
c2ffd5da | 85 | S1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 |
1da177e4 | 86 | |
c2ffd5da | 87 | 5. Init and ``/etc/ioctl.save`` |
1da177e4 | 88 | |
c2ffd5da MCC |
89 | Sysvinit remembers its stty settings in a file in ``/etc``, called |
90 | ``/etc/ioctl.save``. REMOVE THIS FILE before using the serial | |
1da177e4 LT |
91 | console for the first time, because otherwise init will probably |
92 | set the baudrate to 38400 (baudrate of the virtual console). | |
93 | ||
c2ffd5da | 94 | 6. ``/dev/console`` and X |
1da177e4 | 95 | Programs that want to do something with the virtual console usually |
c2ffd5da | 96 | open ``/dev/console``. If you have created the new ``/dev/console`` device, |
1da177e4 LT |
97 | and your console is NOT the virtual console some programs will fail. |
98 | Those are programs that want to access the VT interface, and use | |
c2ffd5da | 99 | ``/dev/console instead of /dev/tty0``. Some of those programs are:: |
1da177e4 | 100 | |
c2ffd5da | 101 | Xfree86, svgalib, gpm, SVGATextMode |
1da177e4 LT |
102 | |
103 | It should be fixed in modern versions of these programs though. | |
104 | ||
c2ffd5da MCC |
105 | Note that if you boot without a ``console=`` option (or with |
106 | ``console=/dev/tty0``), ``/dev/console`` is the same as ``/dev/tty0``. | |
107 | In that case everything will still work. | |
1da177e4 LT |
108 | |
109 | 7. Thanks | |
110 | ||
111 | Thanks to Geert Uytterhoeven <geert@linux-m68k.org> | |
112 | for porting the patches from 2.1.4x to 2.1.6x for taking care of | |
113 | the integration of these patches into m68k, ppc and alpha. | |
114 | ||
115 | Miquel van Smoorenburg <miquels@cistron.nl>, 11-Jun-2000 |