DRACUT(8)
=========
:doctype: manpage
:man source:   dracut
:man manual:   dracut

NAME
----
dracut - low-level tool for generating an initramfs image

SYNOPSIS
--------
*dracut* [__OPTION...__] [__<image>__ [__<kernel version>__]]

DESCRIPTION
-----------

Create an initramfs <image> for the kernel with the version <kernel version>.
If <kernel version> is omitted, then the version of the actual running
kernel is used. If <image> is omitted or empty, then the default location
/boot/initramfs-<kernel version>.img is used.

dracut creates an initial image used by the kernel for preloading the block
device modules (such as IDE, SCSI or RAID) which are needed to access the root
filesystem, mounting the root filesystem and booting into the real system.

At boot time, the kernel unpacks that archive into RAM disk, mounts and uses it
as initial root file system. All finding of the root device happens in this
early userspace.

For a complete list of kernel command line options see *dracut.cmdline*(7).

If you are dropped to an emergency shell, while booting your initramfs,
the file _/run/initramfs/rdsosreport.txt_ is created, which can be safed to a
(to be mounted by hand) partition (usually /boot) or a USB stick.
Additional debugging info can be produced by adding **rd.debug** to the kernel
command line. _/run/initramfs/rdsosreport.txt_ contains all logs and the output
of some tools. It should be attached to any report about dracut problems.

USAGE
-----

include::dracut.usage.asc[]

OPTIONS
-------
**--kver** _<kernel version>_::
    set the kernel version. This enables to specify the kernel version, without
    specifying the location of the initramfs image. For example:
----
# dracut --kver 3.5.0-0.rc7.git1.2.fc18.x86_64
----

**-f, --force**::
    overwrite existing initramfs file.

**-m, --modules** _<list of dracut modules>_::
    specify a space-separated list of dracut modules to call when building the
    initramfs. Modules are located in _/usr/lib/dracut/modules.d_. This
    parameter can be specified multiple times.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --modules "module1 module2"  ...
----
===============================

**-o, --omit** _<list of dracut modules>_::
    omit a space-separated list of dracut modules. This parameter can be
    specified multiple times.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --omit "module1 module2"  ...
----
===============================

**-a, --add** _<list of dracut modules>_::
    add a space-separated list of dracut modules to the default set of modules.
    This parameter can be specified multiple times.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --add "module1 module2"  ...
----
===============================

**--force-add** _<list of dracut modules>_::
    force to add a space-separated list of dracut modules to the default set of
    modules, when -H is specified. This parameter can be specified multiple
    times.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --force-add "module1 module2"  ...
----
===============================

**-d, --drivers** _<list of kernel modules>_::
    specify a space-separated list of kernel modules to exclusively include
    in the initramfs. The kernel modules have to be specified without the ".ko"
    suffix. This parameter can be specified multiple times.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --drivers "kmodule1 kmodule2"  ...
----
===============================

**--add-drivers** _<list of kernel modules>_::
    specify a space-separated list of kernel modules to add to the initramfs.
    The kernel modules have to be specified without the ".ko" suffix. This
    parameter can be specified multiple times.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --add-drivers "kmodule1 kmodule2"  ...
----
===============================

**--omit-drivers** _<list of kernel modules>_::
    specify a space-separated list of kernel modules not to add to the
    initramfs.
    The kernel modules have to be specified without the ".ko" suffix. This
    parameter can be specified multiple times.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --omit-drivers "kmodule1 kmodule2"  ...
----
===============================

**--filesystems** _<list of filesystems>_::
    specify a space-separated list of kernel filesystem modules to exclusively
    include in the generic initramfs. This parameter can be specified multiple
    times.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --filesystems "filesystem1 filesystem2"  ...
----
===============================

**-k, --kmoddir** _<kernel directory>_::
    specify the directory, where to look for kernel modules

**--fwdir** _<dir>[:<dir>...]++_::
    specify additional directories, where to look for firmwares. This parameter
    can be specified multiple times.

**--kernel-cmdline <parameters>**::
    specify default kernel command line parameters


**--kernel-only**::
    only install kernel drivers and firmware files

**--no-kernel**::
    do not install kernel drivers and firmware files

**--early-microcode**::
    Combine early microcode with ramdisk

**--no-early-microcode**::
    Do not combine early microcode with ramdisk

**--print-cmdline**::
    print the kernel command line for the current disk layout

**--mdadmconf**::
    include local _/etc/mdadm.conf_

**--nomdadmconf**::
    do not include local _/etc/mdadm.conf_

**--lvmconf**::
    include local _/etc/lvm/lvm.conf_

**--nolvmconf**::
    do not include local _/etc/lvm/lvm.conf_

**--fscks** [LIST]::
    add a space-separated list of fsck tools, in addition to _dracut.conf_'s
    specification; the installation is opportunistic (non-existing tools are
    ignored)
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --fscks "fsck.foo barfsck"  ...
----
===============================

**--nofscks**::
    inhibit installation of any fsck tools

**--strip**::
    strip binaries in the initramfs (default)

**--nostrip**::
    do not strip binaries in the initramfs

**--prelink**::
    prelink binaries in the initramfs (default)

**--noprelink**::
    do not prelink binaries in the initramfs

**--hardlink**::
    hardlink files in the initramfs (default)

**--nohardlink**::
    do not hardlink files in the initramfs

**--prefix** _<dir>_::
    prefix initramfs files with the specified directory

**--noprefix**::
    do not prefix initramfs files (default)

**-h, --help**::
    display help text and exit.

**--debug**::
    output debug information of the build process

**-v, --verbose**::
    increase verbosity level (default is info(4))

**-q, --quiet**:: decrease verbosity level (default is info(4))

**-c, --conf** _<dracut configuration file>_::
    specify configuration file to use.
+
Default:
   _/etc/dracut.conf_

**--confdir** _<configuration directory>_::
    specify configuration directory to use.
+
Default:
   _/etc/dracut.conf.d_

**--tmpdir** _<temporary directory>_::
    specify temporary directory to use.
+
Default:
   _/var/tmp_

**--sshkey** _<sshkey file>_:: ssh key file used with ssh-client module.

**--logfile** _<logfile>_:: logfile to use; overrides any setting from
    the configuration files.
+
Default:
    _/var/log/dracut.log_

**-l, --local**::
    activates the local mode. dracut will use modules from the current working
    directory instead of the system-wide installed modules in
    _/usr/lib/dracut/modules.d_.
    This is useful when running dracut from a git checkout.

**-H, --hostonly**::
    Host-Only mode: Install only what is needed for booting the local host
    instead of a generic host and generate host-specific configuration.
+
[WARNING]
====
If chrooted to another root other than the real root device, use "--fstab" and
provide a valid _/etc/fstab_.
====

**-N, --no-hostonly**::
    Disable Host-Only mode

**--hostonly-cmdline**:
    Store kernel command line arguments needed in the initramfs

**--no-hostonly-cmdline**:
    Do not store kernel command line arguments needed in the initramfs

**--hostonly-i18n**:
    Install only needed keyboard and font files according to the host configuration (default).

**--no-hostonly-i18n**:
    Install all keyboard and font files available.

**--persistent-policy** _<policy>_::
    Use _<policy>_ to address disks and partitions.
    _<policy>_ can be any directory name found in /dev/disk.
    E.g. "by-uuid", "by-label"

**--fstab**::
    Use _/etc/fstab_ instead of _/proc/self/mountinfo_.

**--add-fstab** _<filename>_::
    Add entries of _<filename>_ to the initramfs /etc/fstab.

**--mount** "_<device>_ _<mountpoint>_ _<filesystem type>_ [_<filesystem options>_ [_<dump frequency>_ [_<fsck order>_]]]"::
    Mount _<device>_ on _<mountpoint>_ with _<filesystem type>_ in the
    initramfs. _<filesystem options>_, _<dump options>_ and _<fsck order>_ can
    be specified, see fstab manpage for the details.
    The default _<filesystem options>_ is "defaults".
    The default _<dump frequency>_ is "0".
    the default _<fsck order>_ is "2".

**--add-device** _<device>_ ::
    Bring up _<device>_ in initramfs, _<device>_ should be the device name.
    This can be useful in hostonly mode for resume support when your swap is on
    LVM or an encrypted partition.
    [NB --device can be used for compatibility with earlier releases]

**-i, --include** _<SOURCE>_ _<TARGET>_::
    include the files in the SOURCE directory into the
    TARGET directory in the final initramfs. If SOURCE is a file, it will be
    installed to TARGET in the final initramfs. This parameter can be specified
    multiple times.

**-I, --install** _<file list>_::
    install the space separated list of files into the initramfs.
+
[NOTE]
===============================
If [LIST] has multiple arguments, then you have to put these in quotes. For
example:
----
# dracut --install "/bin/foo /sbin/bar"  ...
----
===============================

**--install-optional** _<file list>_::
    install the space separated list of files into the initramfs, if they exist.

**--gzip**::
    Compress the generated initramfs using gzip. This will be done by default,
    unless another compression option or --no-compress is passed. Equivalent to
    "--compress=gzip -9"

**--bzip2**::
    Compress the generated initramfs using bzip2.
+
[WARNING]
====
Make sure your kernel has bzip2 decompression support compiled in, otherwise you
will not be able to boot. Equivalent to "--compress=bzip2"
====

**--lzma**::
    Compress the generated initramfs using lzma.
+
[WARNING]
====
Make sure your kernel has lzma decompression support compiled in, otherwise you
will not be able to boot. Equivalent to "lzma --compress=lzma -9"
====

**--xz**::
    Compress the generated initramfs using xz.
+
[WARNING]
====
Make sure your kernel has xz decompression support compiled in, otherwise you
will not be able to boot. Equivalent to
"lzma --compress=xz --check=crc32 --lzma2=dict=1MiB"
====

**--lzo**::
    Compress the generated initramfs using lzop.
[WARNING]
====
Make sure your kernel has lzo decompression support compiled in, otherwise you
will not be able to boot.
====

**--lz4**::
    Compress the generated initramfs using lz4.
[WARNING]
====
Make sure your kernel has lz4 decompression support compiled in, otherwise you
will not be able to boot.
====

**--compress** _<compressor>_::
    Compress the generated initramfs using the passed compression program. If
    you pass it just the name of a compression program, it will call that
    program with known-working arguments. If you pass a quoted string with
    arguments, it will be called with exactly those arguments. Depending on what
    you pass, this may result in an initramfs that the kernel cannot decompress.

**--no-compress**::
    Do not compress the generated initramfs. This will override any other
    compression options.

**--list-modules**::
    List all available dracut modules.

**-M, --show-modules**::
    Print included module's name to standard output during build.

**--keep**::
    Keep the initramfs temporary directory for debugging purposes.

**--printsize**::
    Print out the module install size

**--profile**:
    Output profile information of the build process

**--ro-mnt**:
    Mount / and /usr read-only by default.

**-L, --stdlog** _<level>_::
    [0-6] Specify logging level (to standard error)
----
          0 - suppress any messages
          1 - only fatal errors
          2 - all errors
          3 - warnings
          4 - info
          5 - debug info (here starts lots of output)
          6 - trace info (and even more)
----

**--regenerate-all**::
    Regenerate all initramfs images at the default location with the kernel
    versions found on the system. Additional parameters are passed through.

FILES
-----
_/var/log/dracut.log_::
    logfile of initramfs image creation

_/tmp/dracut.log_::
    logfile of initramfs image creation, if _/var/log/dracut.log_ is not
    writable

_/etc/dracut.conf_::
    see dracut.conf5

_/etc/dracut.conf.d/*.conf_::
    see dracut.conf5

_/usr/lib/dracut/dracut.conf.d/*.conf_::
    see dracut.conf5

Configuration in the initramfs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_/etc/conf.d/_::
    Any files found in _/etc/conf.d/_ will be sourced in the initramfs to
    set initial values. Command line options will override these values
    set in the configuration files.

_/etc/cmdline_::
    Can contain additional command line options. Deprecated, better use
    /etc/cmdline.d/*.conf.

_/etc/cmdline.d/*.conf_::
    Can contain additional command line options.

AVAILABILITY
------------
The dracut command is part of the dracut package and is available from
link:$$https://dracut.wiki.kernel.org$$[https://dracut.wiki.kernel.org]

AUTHORS
-------
Harald Hoyer

Victor Lowther

Philippe Seewer

Warren Togami

Amadeusz Żołnowski

Jeremy Katz

David Dillow

Will Woods

SEE ALSO
--------
*dracut.cmdline*(7) *dracut.conf*(5)
