How to debug Dracut problems

From FedoraProject

Revision as of 15:36, 17 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

The output of.

dmesg|grep dracut 

{admin/note| You will need to have created an image with debug enabled and added the rdshell to the kernel command line see below for details on how to do that}

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

This example 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 should look something like this after you've made those changes..

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 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 /boot/test-$(uname -r) $(uname -r) 
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

Add "rdshell" to the kernel command line and remove "rhgb" and "quiet" and boot the image. This will drop you to the shell.

Need commands example #FIXME

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