I have my old Laptop (A Thinkpad T30) plugged into my local [headless] server with a RS-232 serial cable for convenient access when things go wrong (booting new kernels and toying with network settings).

CentOS 6.3 has no access on the serial port by default.


On the Laptop I use Minicom for a client, but gtkterm is a good graphical alternative. Run minicom with -s for the first time to configure the serial port:

$ dmesg | grep tty
[    0.000000] console [tty0] enabled
[    1.390457] 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a NS16550A
$ apt-get install minicom
$ minicom -s
# configure with these settings:
Serial device: /dev/ttyS0
Bps/Par/Bits: 9600 8N1
Hardware Flow Control: Yes
Software Flow Control: no


Find out what ports we have on the server:

[root@supermicro ~]# dmesg | grep tty
console [tty1] enabled
console [ttyS0] enabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

Edit the /etc/inittab file to attach a getty process to the serial port, this will allow us to login over the serial cable.

1:23:respawn:/sbin/agetty -h -L ttyS0 9600 linux
grub serial access

Edit /boot/grub/grub.conf to output grub to the serial port:

serial --unit=1 --speed=9600
terminal serial console --timeout=10

title CentOS (XXXXXXXXXX.el6.x86_64)
root (hd0,0)

kernel /vmlinuz-XXXXXXXXXX.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root nomodeset rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM vga=795 console=tty1 console=ttyS0,9600

initrd /initramfs-2.6.32-279.2.1.el6.x86_64.img

Now after rebooting the CentOS server I can use the serial cable to select which kernel I want to use, watch it boot and then login - without a monitor or working network connection.