kernel) as a fallback to rescue your system.
=== Inspecting the Contents
-To see the contents of the image created by dracut, you can use the lsinitrd tool.
+To see the contents of the image created by dracut, you can use the lsinitrd
+tool.
----
# lsinitrd | less
----
=== Adding Kernel Modules
If you need a special kernel module in the initramfs, which is not
automatically picked up by dracut, you have the use the --add-drivers option
-on the command line or the drivers vaiable in the _/etc/dracut.conf_
+on the command line or the drivers variable in the _/etc/dracut.conf_
or _/etc/dracut.conf.d/myconf.conf_ configuration file (see *dracut.conf*(5)):
----
# dracut --add-drivers mymod initramfs-with-mymod.img
configuration files (except for some special exceptions), so the configuration
has to be done on the kernel command line. With this flexibility, you can easily
boot from a changed root partition, without the need to recompile the initramfs
-image. So, you could completly change your root partition (move it inside a md
+image. So, you could completely change your root partition (move it inside a md
raid with encryption and LVM on top), as long as you specify the correct
filesystem LABEL or UUID on the kernel command line for your root device, dracut
will find it and boot from it.
-The kernel command line usually can be configured in _/boot/grub/grub.conf_, if
-grub is your bootloader and it also can be edited in the real boot process in
-the grub menu.
-
The kernel command line can also be provided by the dhcp server with the
root-path option. See <<NetworkBoot>>.
-For a full reference of all kernel command line parameters, see *dracut.cmdline*(5).
+For a full reference of all kernel command line parameters,
+see *dracut.cmdline*(5).
-To get a quick start for the suitable kernel command line on your system, use the
-__--print-cmdline__ option:
+To get a quick start for the suitable kernel command line on your system,
+use the __--print-cmdline__ option:
----
# dracut --print-cmdline
root=UUID=8b8b6f91-95c7-4da2-831b-171e12179081 rootflags=rw,relatime,discard,data=ordered rootfstype=ext4
If you have to input passwords for encrypted disk volumes, you might want to set
the keyboard layout and specify a display font.
-A typical german kernel command would contain:
+A typical german kernel command line would contain:
----
-rd.vconsole.font=latarcyrheb-sun16 rd.vconsole.keymap=de-latin1-nodeadkeys rd.locale.LANG=de_DE.UTF-8
+rd.vconsole.font=eurlatgr rd.vconsole.keymap=de-latin1-nodeadkeys rd.locale.LANG=de_DE.UTF-8
----
Setting these options can override the setting stored on your system, if you use
rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0
----
-This turns off every automatic assembly of LVM, MD raids, DM raids and crypto LUKS.
+This turns off every automatic assembly of LVM, MD raids, DM raids and
+crypto LUKS.
Of course, you could also omit the dracut modules in the initramfs creation
-process, but then you would lose the posibility to turn it on on demand.
+process, but then you would lose the possibility to turn it on on demand.
[[Injecting]]
=== Injecting custom Files
To add your own files to the initramfs image, you have several possibilities.
-The --include option let you specify a source path and a target path. For example
+The --include option let you specify a source path and a target path.
+For example
----
# dracut --include cmdline-preset /etc/cmdline.d/mycmdline.conf initramfs-cmdline-pre.img
----
will create an initramfs image, where the file cmdline-preset will be copied
-inside the initramfs to _/etc/cmdline.d/mycmdline.conf_. --include can only be specified once.
+inside the initramfs to _/etc/cmdline.d/mycmdline.conf_. --include can only
+be specified once.
----
# mkdir -p rd.live.overlay/etc/cmdline.d
# mkdir -p rd.live.overlay/etc/conf.d
-# echo "ip=auto" >> rd.live.overlay/etc/cmdline.d/mycmdline.conf
+# echo "ip=dhcp" >> rd.live.overlay/etc/cmdline.d/mycmdline.conf
# echo export FOO=testtest >> rd.live.overlay/etc/conf.d/testvar.conf
# echo export BAR=testtest >> rd.live.overlay/etc/conf.d/testvar.conf
# tree rd.live.overlay/
If your root partition is on a network drive, you have to have the network
dracut modules installed to create a network aware initramfs image.
-On a Red Hat Enterprise Linux or Fedora system, this means, you have to install
-the _dracut-network_ rpm package:
-
-
-----
-# yum install dracut-network
-----
-
-The resulting initramfs image can be served by a boot manager residing on your
-local hard drive or it can be served by a PXE/TFTP server.
-
-How to setup your PXE/TFTP server can be found in the
-http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/[Red
-Hat Enterprise Linux Storage Administration Guide].
-
-If you specify ip=auto on the kernel command line, then dracut asks a dhcp
-server about the ip adress for the machine. The dhcp server can also serve an
+If you specify ip=dhcp on the kernel command line, then dracut asks a dhcp
+server about the ip address for the machine. The dhcp server can also serve an
additional root-path, which will set the root device for dracut. With this
mechanism, you have static configuration on your client machine and a
centralized boot configuration on your TFTP/DHCP server. If you can't pass a
-kernel command line, then you can inject _/etc/cmdline.d/mycmdline.conf_, with a method described
-in <<Injecting>>.
+kernel command line, then you can inject _/etc/cmdline.d/mycmdline.conf_, with a
+method described in <<Injecting>>.
==== Reducing the Image Size
-To reduce the size of the initramfs, you should create it with by ommitting all
+To reduce the size of the initramfs, you should create it with by omitting all
dracut modules, which you know, you don't need to boot the machine.
You can also specify the exact dracut and kernel modules to produce a very tiny
----
-# dracut -m "nfs network base" initramfs-nfs-only.img
+# dracut -m "nfs network base" initramfs-nfs-only.img
----
Then you would boot from this image with your target machine and reduce the size
If the boot process does not succeed, you have several options to debug the
situation. Some of the basic operations are covered here. For more information
you should also visit:
-http://fedoraproject.org/wiki/How_to_debug_Dracut_problems
+https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html
[[identifying-your-problem-area]]
. Add ''rd.shell rd.debug log_buf_len=1M'' to the kernel command line so that
dracut shell commands are printed as they are executed
. The file /run/initramfs/rdsosreport.txt is generated,
-which contains all the logs and the output of all significant tools, which are mentioned later.
+which contains all the logs and the output of all significant tools, which are
+mentioned later.
-If you want to save that output, simply mount /boot by hand or insert an USB stick and mount that.
-Then you can store the output for later inspection.
+If you want to save that output, simply mount /boot by hand or insert an USB
+stick and mount that. Then you can store the output for later inspection.
[[information-to-include-in-your-report]]
=== Information to include in your report
In all cases, the following should be mentioned and attached to your bug report:
* The exact kernel command-line used. Typically from the bootloader
-configuration file (e.g. _/etc/grub.conf_) or from _/proc/cmdline_.
+configuration file (e.g. _/boot/grub2/grub.cfg_) or from _/proc/cmdline_.
* A copy of your disk partition information from _/etc/fstab_, which might be
obtained booting an old working initramfs or a rescue medium.
* Turn on dracut debugging (see _the 'debugging dracut' section_), and attach
serial console connection to record boot messages.
. First, enable serial console output for both the kernel and the bootloader.
-. Open the file _/etc/grub.conf_ for editing. Below the line ''timeout=5'', add
+. Open the file _/boot/grub2/grub.cfg_ for editing. Below the line ''timeout=5'', add
the following:
+
----
terminal --timeout=5 serial console
----
+
-. Also in _/etc/grub.conf_, add the following boot arguemnts to the ''kernel''
+. Also in _/boot/grub2/grub.cfg_, add the following boot arguments to the ''kernel''
line:
+
----
console=tty0 console=ttyS0,9600
----
+
-. When finished, the _/etc/grub.conf_ file should look similar to the example
+. When finished, the _/boot/grub2/grub.cfg_ file should look similar to the example
below.
+
----
locate your root filesystem. To enable the shell:
. Add the boot parameter ''rd.shell'' to your bootloader configuration file
-(e.g. _/etc/grub.conf_)
+(e.g. _/boot/grub2/grub.cfg_)
. Remove the boot arguments ''rhgb'' and ''quiet''
+
-A sample _/etc/grub.conf_ bootloader configuration file is listed below.
+A sample _/boot/grub2/grub.cfg_ bootloader configuration file is listed below.
+
----
default=0
initrd /dracut-2.6.29.5-191.fc11.x86_64.img
----
+
-. If system boot fails, you will be dropped into a shell as seen in the example below.
+. If system boot fails, you will be dropped into a shell as seen in the example
+below.
+
----
No root device found
#
----
+
-. Use this shell prompt to gather the information requested above (see <<all-bug-reports>>).
+. Use this shell prompt to gather the information requested above
+(see <<all-bug-reports>>).
[[accessing-the-root-volume-from-the-dracut-shell]]
==== Accessing the root volume from the dracut shell
* A block device (e.g. _/dev/sda7_)
* A LVM logical volume (e.g. _/dev/VolGroup00/LogVol00_)
-* An encrypted device (e.g. _/dev/mapper/luks-4d5972ea-901c-4584-bd75-1da802417d83_)
-* A network attached device (e.g. netroot=iscsi:@192.168.0.4::3260::iqn.2009-02.org.fedoraproject:for.all)
+* An encrypted device
+ (e.g. _/dev/mapper/luks-4d5972ea-901c-4584-bd75-1da802417d83_)
+* A network attached device
+ (e.g. _netroot=iscsi:@192.168.0.4::3260::iqn.2009-02.org.example:for.all_)
The exact method for locating and preparing will vary. However, to continue with
a successful boot, the objective is to locate your root volume and create a
To do this from an already booted system:
----
# mkdir -p /run/initramfs/etc/cmdline.d
-# echo "rd.break=pre-shutdown" > /run/initramfs/etc/cmdline.d/debug.conf
+# echo "rd.debug rd.break=pre-shutdown rd.break=shutdown" > /run/initramfs/etc/cmdline.d/debug.conf
# touch /run/initramfs/.need_shutdown
----
-This will give you a dracut shell after the system pivot'ed back in the initramfs.
+This will give you a dracut shell after the system pivot'ed back in the
+initramfs.