How to debug Dracut problems

From FedoraProject

Revision as of 22:38, 2 July 2009 by Johannbg (Talk | contribs)

Jump to: navigation, search

All bug reports

In all cases, the following should be mentioned and attached to your bug report:

The exact kernel command line used!

An copy of /etc/fstab

cp /etc/fstab ~USER/Desktop/fstab.txt

The output of dmsetup ls --tree.

 dmsetup ls --tree > ~USER/Desktop/dmsetup.txt

If using an raid device the output of cat /proc/mdstat.

 cat /proc/mdstat > ~USER/Desktop/mdstat.txt

A copy of /etc/dracut.conf if you have edited it.

 cp /etc/dracut.conf ~USER/home/Desktop/dracut.conf.txt

Preparing your system for debugging

To be successful in debugging you will need setup and remotely connect to the serial console.

Add the following lines to you /etc/grub.conf

The examples in this uses the first serial port, giving <serial_port> the value 0, which in turn gives kernel parameter console=ttyS0

Beneath timeout=5 put..

serial --unit=0 --speed=9600
terminal --timeout=5 serial console

At the end of the kernel line put..

console=tty0 console=ttyS0,9600

So /etc/grub.conf looks something like this now

serial --unit=0 --speed=9600
terminal --timeout=5 serial console
title Fedora (
        root (hd0,0)
        kernel /vmlinuz- ro root=/dev/mapper/vg_uc1-lv_root console=tty0 console=ttyS0,9600
        initrd /initrd-

Further information on how to configure the kernel for console output can be found here.

You can redirect all non-interactive stuff output to /dev/kmsg and the kernel will put it out on the console when it reaches the kernel buffer by doing
exec >/dev/kmsg 2>&1 </dev/console

Create the image with debug enabled.

dracut -a debug <imagename> <kernel version>
You can overwrite an existing image by using the -f option.
dracut -f -a debug <imagename> <kernel version>

Boot with debug enable.

rdinitdebug rdnetdebug

Using the shell to debug

When boot fails you might be dropped to to a the shell which you can use to debug.

  1. FIXME Example's needed on how to use the shell..

Dracut debugging kernel command parameters

set -x for the dracut shell
drop the shell on defined breakpoint
set udev to loglevel info
set udev to loglevel debug
debug network scripts in dracut