How to Capture Boot Time Error Messages

One of the easiest ways to capture boot time error messages (when no log file is present) is to use a null modem cable on the serial ports between the troubled machine and another machine.


Terminology

Machine #1, for these instructions, will be running Windows or Linux and will run a terminal program from which we will capture the boot messages on Machine #2.

Machine #2, for these instructions, is the machine where we will be booting the troubled copy of Linux.


1. Attach the Null Modem Cable

The first step is to attach the null modem cable between the serial ports of Machine #1 and Machine #2.


2. Set up the Terminal Program on Machine #1:

On the system you are controlling the install (Machine #1), type the following:

For Linux:


script
miterm -s 9600 -l /dev/ttyS0


After you captured the error messages then exit from the “script” program:
exit

For Windows:
HyperTerminal 9600, 8, N, 1

HyperTerminal can capture output if you need it to.

Other terminal programs will work as well.


3. Begin the Linux Install on Machine #2:

At the RedHat Installer Boot Prompt, type one of the following lines:

linux console=ttyS0,9600

or
linux serial

or
linux console=tty0 console=ttyS0,9600


If you watch closely (and you have a monitor and video card on Machine #2) you will see a couple of lines show up on Machine #2, but all following lines will show up through the serial port to the terminal on Machine #1. This behavior is normal.

On a headless machine (a machine without a video card nor monitor), you can modify one of the boot disks found in the /images directory on the RedHat CD. Create the floppy, then find the file named syslinux.cfg and add the console=… parameters there. Then when you boot the headless machine on that floppy you will be able to control the install through the serial port.

You can make the serial port the permanent default console by reading up on serial-console.txt


Notes:

The script program allows you to capture output from a program by logging everything to a log file. You finish running the script program by typing exit – you will then see a message stating that your log file has been saved.

Another way of running a program and controlling it through the serial port (useful for capturing screens when script and other programs are not available) is by redirecting both input and output. Here is an example of running the fdisk program on one machine, but controlling it through the serial port from another machine. You need to have the null modem cable attached and run the terminal program as mentioned above. Here is how to redirect input and output:

fdisk /dev/hda </dev/ttyS0 1>/dev/ttyS0 2>/dev/ttyS0


References:

/usr/src/linux/Documentation/serial-console.txt
/usr/src/linux/Documentation/kernel-parameters.txt

Published
Categorized as How To

By shibaa987

Linux kernel developer and a firmware developer with an experience of 10+ years.

Leave a comment

Your email address will not be published. Required fields are marked *