diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-03 13:54:25 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-03 13:54:25 +0000 |
commit | 9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a (patch) | |
tree | 2efb72864cc69e174c9c5ee33efb88a5f1553b48 /man | |
parent | Initial commit. (diff) | |
download | dracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.tar.xz dracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.zip |
Adding upstream version 060+5.upstream/060+5
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man')
-rw-r--r-- | man/dracut-catimages.8.asc | 59 | ||||
-rw-r--r-- | man/dracut.8.asc | 771 | ||||
-rw-r--r-- | man/dracut.asc | 182 | ||||
-rw-r--r-- | man/dracut.bootup.7.asc | 127 | ||||
-rw-r--r-- | man/dracut.cmdline.7.asc | 1475 | ||||
-rw-r--r-- | man/dracut.conf.5.asc | 341 | ||||
-rw-r--r-- | man/dracut.modules.7.asc | 307 | ||||
-rw-r--r-- | man/dracut.usage.asc | 519 | ||||
-rw-r--r-- | man/lsinitrd.1.asc | 71 |
9 files changed, 3852 insertions, 0 deletions
diff --git a/man/dracut-catimages.8.asc b/man/dracut-catimages.8.asc new file mode 100644 index 0000000..621f8af --- /dev/null +++ b/man/dracut-catimages.8.asc @@ -0,0 +1,59 @@ +DRACUT-CATIMAGES(8) +=================== +:doctype: manpage +:man source: dracut +:man manual: dracut + +NAME +---- +dracut-catimages - creates initial ramdisk image by concatenating images + +SYNOPSIS +-------- +**dracut-catimages** [_OPTION_...] _<initramfs base image>_ [_<image>_...] + +DESCRIPTION +----------- +dracut-catimages creates an initial ramdisk image by concatenating several +images from the command line and /boot/dracut/*.img + +OPTIONS +------- +**-f, --force**:: + overwrite existing initramfs file. + +**-i, --imagedir**:: + Directory with additional images to add (default: /boot/dracut/) + +**-o, --overlaydir**:: + Overlay directory, which contains additional files that will be used to + create an additional image + +**--nooverlay**:: Do not use the overlay directory + +**--noimagedir**:: Do not use the additional image directory + +**-h, --help**:: display help text and exit. + +**--debug**:: output debug information of the build process + +**-v, --verbose**:: verbose output during the build process + +FILES +----- +_/boot/dracut/*.img_:: + images to work with + +AUTHORS +------- +Harald Hoyer + +AVAILABILITY +------------ +The dracut-catimages command is part of the dracut package and is available from +link:$$https://github.com/dracutdevs/dracut$$[https://github.com/dracutdevs/dracut] + +SEE ALSO +-------- +*dracut*(8) + diff --git a/man/dracut.8.asc b/man/dracut.8.asc new file mode 100644 index 0000000..ae4497e --- /dev/null +++ b/man/dracut.8.asc @@ -0,0 +1,771 @@ +DRACUT(8) +========= +:doctype: manpage +:man source: dracut +:man manual: dracut +:man version: {version} + +NAME +---- +dracut - low-level tool for generating an initramfs/initrd 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, depending on bootloader +specification, the default location can be +_/efi/<machine-id>/<kernel-version>/initrd_, +_/boot/<machine-id>/<kernel-version>/initrd_, +_/boot/efi/<machine-id>/<kernel-version>/initrd_, +_/lib/modules/<kernel-version>/initrd_ or +_/boot/initramfs-<kernel-version>.img_. + +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. + +Initramfs images are also called "initrd". + +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 saved 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. + +_<output file>_ **--rebuild**:: + Append the current arguments to those with which the input initramfs image + was built. This option helps in incrementally building the initramfs for + testing. If optional _<output file>_ is not provided, the input initramfs + provided to rebuild will be used as output file. + +**-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 the 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 the list has multiple arguments, then you have to put these in quotes. For +example: +---- +# dracut --force-add "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 the list has multiple arguments, then you have to put these in quotes. For +example: +---- +# dracut --omit "module1 module2" ... +---- +=============================== + +**-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. + This option forces dracut to only include the specified dracut modules. + In most cases the "--add" option is what you want to use. ++ +[NOTE] +=============================== +If the list has multiple arguments, then you have to put these in quotes. For +example: +---- +# dracut --modules "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 the 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 the list has multiple arguments, then you have to put these in quotes. For +example: +---- +# dracut --add-drivers "kmodule1 kmodule2" ... +---- +=============================== + +**--force-drivers** _<list of kernel modules>_:: + See add-drivers above. But in this case it is ensured that the drivers + are tried to be loaded early via modprobe. ++ +[NOTE] +=============================== +If the list has multiple arguments, then you have to put these in quotes. For +example: +---- +# dracut --force-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 the 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 the 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. + +**--libdirs** _<list of directories>_:: + Specify a space-separated list of directories to look for libraries to + include in the generic initramfs. This parameter can be specified multiple + times. ++ +[NOTE] +=============================== +If the list has multiple arguments, then you have to put these in quotes. For +example: +---- +# dracut --libdirs "dir1 dir2" ... +---- +=============================== + +**--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_ file. + +**--nomdadmconf**:: + Do not include local _/etc/mdadm.conf_ file. + +**--lvmconf**:: + Include local _/etc/lvm/lvm.conf_ file. + +**--nolvmconf**:: + Do not include local _/etc/lvm/lvm.conf_ file. + +**--fscks** _<list of fsck tools>_:: + 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 the 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). + +**--aggressive-strip**:: + Strip more than just debug symbol and sections, for a smaller initramfs + build. The --strip option must also be specified. + +**--nostrip**:: + Do not strip 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)). + +**--version**:: + Display version and exit. + +**-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_ + +**-r, --sysroot** _<sysroot directory>_:: + Specify the sysroot directory to collect files from. + This is useful to create the initramfs image from + a cross-compiled sysroot directory. For the extra helper + variables, see *ENVIRONMENT* below. ++ +Default: + _empty_ + +**--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-mode _<mode>_**:: + Specify the host-only mode to use. _<mode>_ could be one of "sloppy" or + "strict". + In "sloppy" host-only mode, extra drivers and modules will be installed, so + minor hardware change won't make the image unbootable (e.g. changed + keyboard), and the image is still portable among similar hosts. + With "strict" mode enabled, anything not necessary for booting the local + host in its current state will not be included, and modules may do some + extra job to save more space. Minor change of hardware or environment could + make the image unbootable. ++ +Default: + _sloppy_ + +**--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. + +**--no-hostonly-default-device**:: + Do not generate implicit host devices like root, swap, fstab, etc. + Use "--mount" or "--add-device" to explicitly add devices as needed. + +**--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. + +**--hostonly-nics** _<list of nics>_:: + Only enable listed NICs in the initramfs. The list can be empty, so other + modules can install only the necessary network drivers. + +**--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"), or "mapper" to use /dev/mapper device names (default). + +**--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". + +**--mount** "_<mountpoint>_":: + Like above, but _<device>_, _<filesystem type>_ and _<filesystem options>_ + are determined by looking at the current mounts. + +**--add-device** _<device>_ :: + Bring up _<device>_ in initramfs, _<device>_ should be the device name. + This can be useful in host-only 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 the 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 -9". +==== + +**--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 "--compress=lzma -9 -T0". +==== + +**--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 +"--compress=xz --check=crc32 --lzma2=dict=1MiB -T0". +==== + +**--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. Equivalent to "--compress=lzop -9". +==== + +**--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. Equivalent to "--compress=lz4 -l -9". +==== + +**--zstd**:: + Compress the generated initramfs using Zstandard. ++ +[WARNING] +==== +Make sure your kernel has zstd decompression support compiled in, otherwise you +will not be able to boot. Equivalent to "--compress=zstd -15 -q -T0". +==== + +**--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. + The default value can also be set via the _INITRD_COMPRESS_ environment + variable. + +**--squash-compressor** _<compressor>_:: + Compress the squashfs image using the passed compressor and compressor + specific options for mksquashfs. You can refer to mksquashfs manual for + supported compressors and compressor specific options. If squash module is + not called when building the initramfs, this option will not take effect. + +**--no-compress**:: + Do not compress the generated initramfs. This will override any other + compression options. + +**--reproducible**:: + Create reproducible images. + +**--no-reproducible**:: + Do not create reproducible images. + +**--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. + +**-p, --parallel**:: + Try to execute tasks in parallel. Currently only supported with + **--regenerate-all** (build initramfs images for all kernel + versions simultaneously). + +**--noimageifnotneeded**:: + Do not create an image in host-only mode, if no kernel driver is needed +and no /etc/cmdline/*.conf will be generated into the initramfs. + +**--loginstall _<directory>_**:: + Log all files installed from the host to _<directory>_. + +**--uefi**:: + Instead of creating an initramfs image, dracut will create an UEFI + executable, which can be executed by an UEFI BIOS. The default output + filename is _<EFI>/EFI/Linux/linux-$kernel$-<MACHINE_ID>-<BUILD_ID>.efi_. + <EFI> might be _/efi_, _/boot_ or _/boot/efi_ depending on where the ESP + partition is mounted. The <BUILD_ID> is taken from BUILD_ID in + _/usr/lib/os-release_ or if it exists _/etc/os-release_ and is left out, + if BUILD_ID is non-existent or empty. + +**--no-uefi**:: + Disables UEFI mode. + +**--no-machineid**:: + Affects the default output filename of **--uefi** and will discard the + <MACHINE_ID> part. + +**--uefi-stub _<file>_**:: + Specifies the UEFI stub loader, which will load the attached kernel, + initramfs and kernel command line and boots the kernel. The default is + _$prefix/lib/systemd/boot/efi/linux<EFI-MACHINE-TYPE-NAME>.efi.stub_. + +**--uefi-splash-image _<file>_**:: + Specifies the UEFI stub loader's splash image. Requires bitmap (**.bmp**) + image format. + +**--kernel-image _<file>_**:: + Specifies the kernel image, which to include in the UEFI executable. The + default is _/lib/modules/<KERNEL-VERSION>/vmlinuz_ or + _/boot/vmlinuz-<KERNEL-VERSION>_. + +**--sbat <parameters>**:: + Specifies the SBAT parameters, which to include in the UEFI executable. By default + the default SBAT string added is "sbat,1,SBAT Version,sbat,1, + https://github.com/rhboot/shim/blob/main/SBAT.md". + +**--enhanced-cpio**:: + Attempt to use the dracut-cpio binary, which optimizes archive creation for + copy-on-write filesystems by using the copy_file_range(2) syscall via Rust's + io::copy(). When specified, initramfs archives are also padded to ensure + optimal data alignment for extent sharing. To retain reflink data + deduplication benefits, this should be used alongside the **--no-compress** + and **--nostrip** parameters, with initramfs source files, **--tmpdir** + staging area and destination all on the same copy-on-write capable + filesystem. + +ENVIRONMENT +----------- + +_INITRD_COMPRESS_:: + sets the default compression program. See **--compress**. + +_DRACUT_LDCONFIG_:: + sets the _ldconfig_ program path and options. Optional. + Used for **--sysroot**. ++ +Default: + _ldconfig_ + +_DRACUT_LDD_:: + sets the _ldd_ program path and options. Optional. + Used for **--sysroot**. ++ +Default: + _ldd_ + +_DRACUT_TESTBIN_:: + sets the initially tested binary for detecting library paths. + Optional. Used for **--sysroot**. In the cross-compiled sysroot, + the default value (_/bin/sh_) is unusable, as it is an absolute + symlink and points outside the sysroot directory. ++ +Default: + _/bin/sh_ + +_DRACUT_INSTALL_:: + overrides path and options for executing _dracut-install_ internally. + Optional. Can be used to debug _dracut-install_ while running the + main dracut script. ++ +Default: + _dracut-install_ ++ +Example: + DRACUT_INSTALL="valgrind dracut-install" + +_DRACUT_COMPRESS_BZIP2_:: +_DRACUT_COMPRESS_LBZIP2_:: +_DRACUT_COMPRESS_LZMA_:: +_DRACUT_COMPRESS_XZ_:: +_DRACUT_COMPRESS_GZIP_:: +_DRACUT_COMPRESS_PIGZ_:: +_DRACUT_COMPRESS_LZOP_:: +_DRACUT_COMPRESS_ZSTD_:: +_DRACUT_COMPRESS_LZ4_:: +_DRACUT_COMPRESS_CAT_:: + overrides for compression utilities to support using them from + non-standard paths. ++ +Default values are the default compression utility names to be found in **PATH**. + +_DRACUT_ARCH_:: + overrides the value of **uname -m**. Used for **--sysroot**. ++ +Default: + _empty_ (the value of **uname -m** on the host system) + +_SYSTEMD_VERSION_:: + overrides systemd version. Used for **--sysroot**. + +_SYSTEMCTL_:: + overrides the systemctl binary. Used for **--sysroot**. + +_NM_VERSION_:: + overrides the NetworkManager version. Used for **--sysroot**. + +_DRACUT_INSTALL_PATH_:: + overrides **PATH** environment for **dracut-install** to look for + binaries relative to **--sysroot**. In a cross-compiled environment + (e.g. Yocto), PATH points to natively built binaries that are not + in the host's /bin, /usr/bin, etc. **dracut-install** still needs plain + /bin and /usr/bin that are relative to the cross-compiled sysroot. ++ +Default: + _PATH_ + +_DRACUT_INSTALL_LOG_TARGET_:: + overrides **DRACUT_LOG_TARGET** for **dracut-install**. It allows + running **dracut-install* to run with different log target that + **dracut** runs with. ++ +Default: + _DRACUT_LOG_TARGET_ + +_DRACUT_INSTALL_LOG_LEVEL_:: + overrides **DRACUT_LOG_LEVEL** for **dracut-install**. It allows + running **dracut-install* to run with different log level that + **dracut** runs with. ++ +Default: + _DRACUT_LOG_LEVEL_ + +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://github.com/dracutdevs/dracut$$[https://github.com/dracutdevs/dracut] + +AUTHORS +------- +Harald Hoyer + +Victor Lowther + +Amadeusz Żołnowski + +Hannes Reinecke + +Daniel Molkentin + +Will Woods + +Philippe Seewer + +Warren Togami + +SEE ALSO +-------- +*dracut.cmdline*(7) *dracut.conf*(5) *lsinitrd*(1) diff --git a/man/dracut.asc b/man/dracut.asc new file mode 100644 index 0000000..c806ab2 --- /dev/null +++ b/man/dracut.asc @@ -0,0 +1,182 @@ +dracut {mainversion} +==================== +:author: Harald Hoyer +:email: harald@profian.com +:revnumber: {version} +:language: bash + += Introduction +This section is a modified version of +http://en.wikipedia.org/wiki/Initrd which is licensed under the +Creative Commons Attribution/Share-Alike License. + +== Definition +An _initial ramdisk_ is a temporary file system used in the boot process of the +Linux kernel. _initrd_ and _initramfs_ refer to slightly different schemes for +loading this file system into memory. Both are commonly used to make +preparations before the real root file system can be mounted. + +== Rationale +Many Linux distributions ship a single, generic kernel image that is intended to +boot as wide a variety of hardware as possible. The device drivers for this +generic kernel image are included as loadable modules, as it is not possible to +statically compile them all into the one kernel without making it too large to +boot from computers with limited memory or from lower-capacity media like floppy +disks. + +This then raises the problem of detecting and loading the modules necessary to +mount the root file system at boot time (or, for that matter, deducing where or +what the root file system is). + +To further complicate matters, the root file system may be on a software RAID +volume, LVM, NFS (on diskless workstations), or on an encrypted partition. All +of these require special preparations to mount. + +Another complication is kernel support for hibernation, which suspends the +computer to disk by dumping an image of the entire system to a swap partition or +a regular file, then powering off. On next boot, this image has to be made +accessible before it can be loaded back into memory. + +To avoid having to hardcode handling for so many special cases into the kernel, +an initial boot stage with a temporary root file system +—now dubbed early user space— is used. This root file system would contain +user-space helpers that would do the hardware detection, module loading and +device discovery necessary to get the real root file system mounted. + +== Implementation +An image of this initial root file system (along with the kernel image) must be +stored somewhere accessible by the Linux bootloader or the boot firmware of the +computer. This can be: + +* The root file system itself +* A boot image on an optical disc +* A small ext2/ext3/ext4 or FAT-formatted partition on a local disk + (a _boot partition_) +* A TFTP server (on systems that can boot from Ethernet) + +The bootloader will load the kernel and initial root file system image into +memory and then start the kernel, passing in the memory address of the image. + +Depending on which algorithms were compiled statically into it, the kernel can +currently unpack initrd/initramfs images compressed with gzip, bzip2 and LZMA. + +== Mount preparations +dracut can generate a customized initramfs image which contains only whatever is +necessary to boot some particular computer, such as ATA, SCSI and filesystem +kernel modules (host-only mode). + +dracut can also generate a more generic initramfs image (default mode). + +dracut's initramfs starts only with the device name of the root file system (or +its UUID) and must discover everything else at boot time. A complex cascade of +tasks must be performed to get the root file system mounted: + +* Any hardware drivers that the boot process depends on must be loaded. All +kernel modules for common storage devices are packed onto the initramfs and then +udev pulls in modules matching the computer's detected hardware. + +* On systems which display a boot rd.splash screen, the video hardware must be +initialized and a user-space helper started to paint animations onto the display +in lockstep with the boot process. + +* If the root file system is on NFS, dracut does then: +** Bring up the primary network interface. +** Invoke a DHCP client, with which it can obtain a DHCP lease. +** Extract the name of the NFS share and the address of the NFS server from the +lease. +** Mount the NFS share. + +* If the root file system appears to be on a software RAID device, there is no +way of knowing which devices the RAID volume spans; the standard MD utilities +must be invoked to scan all available block devices with a raid signature and +bring the required ones online. + +* If the root file system appears to be on a logical volume, the LVM utilities +must be invoked to scan for and activate the volume group containing it. + +* If the root file system is on an encrypted block device: +** Invoke a helper script to prompt the user to type in a passphrase and/or +insert a hardware token (such as a smart card or a USB security dongle). + +* Create a decryption target with the device mapper. + +dracut uses udev, an event-driven hotplug agent, which invokes helper programs +as hardware devices, disk partitions and storage volumes matching certain rules +come online. This allows discovery to run in parallel, and to progressively +cascade into arbitrary nestings of LVM, RAID or encryption to get at the root +file system. + +When the root file system finally becomes visible: + +* Any maintenance tasks which cannot run on a mounted root file system +are done. +* The root file system is mounted read-only. +* Any processes which must continue running (such as the rd.splash screen helper +and its command FIFO) are hoisted into the newly-mounted root file system. + +The final root file system cannot simply be mounted over /, since that would +make the scripts and tools on the initial root file system inaccessible for any +final cleanup tasks. On an initramfs, the initial root file system cannot be +rotated away. Instead, it is simply emptied and the final root file system +mounted over the top. + +If the systemd module is used in the initramfs, the ordering of the services +started looks like <<dracutbootup7>>. + +== Dracut on shutdown + +On a systemd driven system, the dracut initramfs is also used for the shutdown +procedure. + +The following steps are executed during a shutdown: + +* systemd switches to the shutdown.target +* systemd starts + $prefix/lib/systemd/system/shutdown.target.wants/dracut-shutdown.service +* dracut-shutdown.service executes /usr/lib/dracut/dracut-initramfs-restore + which unpacks the initramfs to /run/initramfs +* systemd finishes shutdown.target +* systemd kills all processes +* systemd tries to unmount everything and mounts the remaining read-only +* systemd checks, if there is a /run/initramfs/shutdown executable +* if yes, it does a pivot_root to /run/initramfs and executes ./shutdown. + The old root is then mounted on /oldroot. + /usr/lib/dracut/modules.d/99shutdown/shutdown.sh is the shutdown executable. +* shutdown will try to unmount every /oldroot mount and calls the various + shutdown hooks from the dracut modules + +This ensures, that all devices are disassembled and unmounted cleanly. + += User Manual + +:leveloffset: 1 +include::dracut.8.asc[] + +:leveloffset: 1 +[[dracutconf5]] +include::dracut.conf.5.asc[] + +[[dracutcmdline7]] +include::dracut.cmdline.7.asc[] + +[[lsinitrd1]] +include::lsinitrd.1.asc[] + += Developer Manual + +:leveloffset: 1 +[[dracutmodules7]] +include::dracut.modules.7.asc[] + +[[dracutbootup7]] +include::dracut.bootup.7.asc[] + +:leveloffset: 0 +[appendix] +License +------- +This work is licensed under the Creative Commons Attribution/Share-Alike +License. To view a copy of this license, visit +http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative +Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. + diff --git a/man/dracut.bootup.7.asc b/man/dracut.bootup.7.asc new file mode 100644 index 0000000..b2aba6a --- /dev/null +++ b/man/dracut.bootup.7.asc @@ -0,0 +1,127 @@ +DRACUT.BOOTUP(7) +================ +:doctype: manpage +:man source: dracut +:man manual: dracut +:man version: {version} + +NAME +---- +dracut.bootup - boot ordering in the initramfs + +DESCRIPTION +----------- + +This flow chart illustrates the ordering of the services, if systemd is used in +the dracut initramfs. +---- + + systemd-journal.socket + | + v + dracut-cmdline.service + | + v + dracut-pre-udev.service + | + v + systemd-udevd.service + | + v +local-fs-pre.target dracut-pre-trigger.service + | | + v v + (various mounts) (various swap systemd-udev-trigger.service + | devices...) | (various low-level (various low-level + | | | services: seed, API VFS mounts: + v v v tmpfiles, random mqueue, configfs, + local-fs.target swap.target dracut-initqueue.service sysctl, ...) debugfs, ...) + | | | | | + \_______________|____________________ | ___________________|____________________/ + \|/ + v + sysinit.target + | + _________________/|\___________________ + / | \ + | | | + v | v + (various | rescue.service + sockets...) | | + | | v + v | rescue.target + sockets.target | + | | + \_________________ | emergency.service + \| | + v v + basic.target emergency.target + | + ______________________/| + / | + | v + | initrd-root-device.target + | | + | v + | dracut-pre-mount.service + | | + | v + | sysroot.mount + | | + | v + | initrd-root-fs.target + (custom initrd services) | + | v + | dracut-mount.service + | | + | v + | initrd-parse-etc.service + | | + | v + | (sysroot-usr.mount and + | various mounts marked + | with fstab option + | x-initrd.mount) + | | + | v + | initrd-fs.target + \______________________ | + \| + v + initrd.target + | + v + dracut-pre-pivot.service + | + v + initrd-cleanup.service + isolates to + initrd-switch-root.target + | + v + ______________________/| + / | + | initrd-udevadm-cleanup-db.service + | | + (custom initrd services) | + | | + \______________________ | + \| + v + initrd-switch-root.target + | + v + initrd-switch-root.service + | + v + switch-root +---- + + +AUTHOR +------ +Harald Hoyer + +SEE ALSO +-------- +*dracut*(8) *bootup*(7) diff --git a/man/dracut.cmdline.7.asc b/man/dracut.cmdline.7.asc new file mode 100644 index 0000000..fefa209 --- /dev/null +++ b/man/dracut.cmdline.7.asc @@ -0,0 +1,1475 @@ +DRACUT.CMDLINE(7) +================= +:doctype: manpage +:man source: dracut +:man manual: dracut +:man version: {version} + +NAME +---- +dracut.cmdline - dracut kernel command line options + +DESCRIPTION +----------- +The root device used by the kernel is specified in the boot configuration +file on the kernel command line, as always. + +The traditional _root=/dev/sda1_ style device specification is allowed, but not +encouraged. The root device should better be identified by LABEL or UUID. If a +label is used, as in _root=LABEL=<label_of_root>_ the initramfs will search all +available devices for a filesystem with the appropriate label, and mount that +device as the root filesystem. _root=UUID=<uuidnumber>_ will mount the partition +with that UUID as the root filesystem. + +In the following all kernel command line parameters, which are processed by +dracut, are described. + +"rd.*" parameters mentioned without "=" are boolean parameters. They can be +turned on/off by setting them to {0|1}. If the assignment with "=" is missing +"=1" is implied. For example _rd.info_ can be turned off with _rd.info=0_ or +turned on with _rd.info=1_ or _rd.info_. The last value in the kernel command +line is the value, which is honored. + +Standard +~~~~~~~~ +**init=**__<path to real init>__:: + specify the path to the init program to be started after the initramfs has + finished + +**root=**__<path to blockdevice>__:: + specify the block device to use as the root filesystem. ++ +[listing] +.Example +-- +root=/dev/sda1 +root=/dev/disk/by-path/pci-0000:00:1f.1-scsi-0:0:1:0-part1 +root=/dev/disk/by-label/Root +root=LABEL=Root +root=/dev/disk/by-uuid/3f5ad593-4546-4a94-a374-bcfb68aa11f7 +root=UUID=3f5ad593-4546-4a94-a374-bcfb68aa11f7 +root=PARTUUID=3f5ad593-4546-4a94-a374-bcfb68aa11f7 +-- + +**rootfstype=**__<filesystem type>__:: "auto" if not specified. ++ +[listing] +.Example +-- +rootfstype=ext4 +-- + +**rootflags=**__<mount options>__:: + specify additional mount options for the root filesystem. If not set, + _/etc/fstab_ of the real root will be parsed for special mount options and + mounted accordingly. + +**ro**:: + force mounting _/_ and _/usr_ (if it is a separate device) read-only. If + none of ro and rw is present, both are mounted according to _/etc/fstab_. + +**rw**:: + force mounting _/_ and _/usr_ (if it is a separate device) read-write. + See also ro option. + +**rootfallback=**__<path to blockdevice>__:: + specify the block device to use as the root filesystem, if the normal root + cannot be found. This can only be a simple block device with a simple file + system, for which the filesystem driver is either compiled in, or added + manually to the initramfs. This parameter can be specified multiple times. + +**rd.auto** **rd.auto=1**:: + enable autoassembly of special devices like cryptoLUKS, dmraid, mdraid or + lvm. Default is off as of dracut version >= 024. + +**rd.hostonly=0**:: + removes all compiled in configuration of the host system the initramfs image + was built on. This helps booting, if any disk layout changed, especially in + combination with rd.auto or other parameters specifying the layout. + +**rd.cmdline=ask**:: + prompts the user for additional kernel command line parameters + +**rd.fstab=0**:: + do not honor special mount options for the root filesystem found in + _/etc/fstab_ of the real root. + +**resume=**__<path to resume partition>__:: + resume from a swap partition ++ +[listing] +.Example +-- +resume=/dev/disk/by-path/pci-0000:00:1f.1-scsi-0:0:1:0-part1 +resume=/dev/disk/by-uuid/3f5ad593-4546-4a94-a374-bcfb68aa11f7 +resume=UUID=3f5ad593-4546-4a94-a374-bcfb68aa11f7 +-- + +**rd.skipfsck**:: + skip fsck for rootfs and _/usr_. If you're mounting _/usr_ read-only and + the init system performs fsck before remount, you might want to use this + option to avoid duplication. + +iso-scan/filename +~~~~~~~~~~~~~~~~~ + +Mount all mountable devices and search for ISO pointed by the argument. When +the ISO is found set it up as a loop device. Device containing this ISO +image will stay mounted at /run/initramfs/isoscandev. +Using iso-scan/filename with a Fedora/Red Hat/CentOS Live iso should just work +by copying the original kernel cmdline parameters. + +[listing] +.Example +-- +menuentry 'Live Fedora 20' --class fedora --class gnu-linux --class gnu --class os { + set isolabel=Fedora-Live-LXDE-x86_64-20-1 + set isofile="/boot/iso/Fedora-Live-LXDE-x86_64-20-1.iso" + loopback loop $isofile + linux (loop)/isolinux/vmlinuz0 boot=isolinux iso-scan/filename=$isofile root=live:LABEL=$isolabel ro rd.live.image quiet rhgb + initrd (loop)/isolinux/initrd0.img +} +-- + +Misc +~~~~ +**rd.emergency=**__[reboot|poweroff|halt]__:: + specify, what action to execute in case of a critical failure. rd.shell=0 must also + be specified. + +**rd.driver.blacklist=**__<drivername>__[,__<drivername>__,...]:: + do not load kernel module <drivername>. This parameter can be specified + multiple times. + +**rd.driver.pre=**__<drivername>__[,__<drivername>__,...]:: + force loading kernel module <drivername>. This parameter can be specified + multiple times. + +**rd.driver.post=**__<drivername>__[,__<drivername>__,...]:: + force loading kernel module <drivername> after all automatic loading modules + have been loaded. This parameter can be specified multiple times. + +**rd.retry=**__<seconds>__:: + specify how long dracut should retry the initqueue to configure devices. + The default is 180 seconds. After 2/3 of the time, degraded raids are force + started. If you have hardware, which takes a very long time to announce its + drives, you might want to extend this value. + +**rd.timeout=**__<seconds>__:: + specify how long dracut should wait for devices to appear. The + default is '0', which means 'forever'. Note that this timeout + should be longer than rd.retry to allow for proper configuration. + +**rd.noverifyssl**:: + accept self-signed certificates for ssl downloads. + +**rd.ctty=**__<terminal device>__:: + specify the controlling terminal for the console. + This is useful, if you have multiple "console=" arguments. + +**rd.shutdown.timeout.umount=**__<seconds>__:: + specify how long dracut should wait for an individual umount to finish + during shutdown. This avoids the system from blocking when unmounting a file + system cannot complete and waits indefinitely. Value '0' means to wait + 'forever'. The default is 90 seconds. + +[[dracutkerneldebug]] +Debug +~~~~~ +If you are dropped to an emergency shell, the file +_/run/initramfs/rdsosreport.txt_ is created, which can be saved 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. + +**rd.info**:: + print informational output though "quiet" is set + +**rd.shell**:: + allow dropping to a shell, if root mounting fails + +**rd.debug**:: + set -x for the dracut shell. + If systemd is active in the initramfs, all output is logged to the systemd + journal, which you can inspect with "journalctl -ab". + If systemd is not active, the logs are written to dmesg and + _/run/initramfs/init.log_. + If "quiet" is set, it also logs to the console. + +**rd.memdebug=[0-5]**:: + Print memory usage info at various points, set the verbose level from 0 to 5. ++ + Higher level means more debugging output: ++ +---- + 0 - no output + 1 - partial /proc/meminfo + 2 - /proc/meminfo + 3 - /proc/meminfo + /proc/slabinfo + 4 - /proc/meminfo + /proc/slabinfo + memstrack summary + NOTE: memstrack is a memory tracing tool that tracks the total memory + consumption, and peak memory consumption of each kernel modules + and userspace progress during the whole initramfs runtime, report + is generated and the end of initramsfs run. + 5 - /proc/meminfo + /proc/slabinfo + memstrack (with top memory stacktrace) + NOTE: memstrack (with top memory stacktrace) will print top memory + allocation stack traces during the whole initramfs runtime. +---- + +**rd.break**:: + drop to a shell at the end + +**rd.break=**__{cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot|cleanup}__:: + drop to a shell before the defined breakpoint starts + +**rd.udev.info**:: + set udev to loglevel info + +**rd.udev.debug**:: + set udev to loglevel debug + +I18N +~~~~ +**rd.vconsole.keymap=**__<keymap base file name>__:: + keyboard translation table loaded by loadkeys; taken from keymaps directory; + will be written as KEYMAP to _/etc/vconsole.conf_ in the initramfs. ++ +[listing] +.Example +-- +rd.vconsole.keymap=de-latin1-nodeadkeys +-- + +**rd.vconsole.keymap.ext=**__<list of keymap base file names>__:: + list of extra keymaps to bo loaded (sep. by space); will be written as + EXT_KEYMAP to _/etc/vconsole.conf_ in the initramfs + +**rd.vconsole.unicode**:: + boolean, indicating UTF-8 mode; will be written as UNICODE to + _/etc/vconsole.conf_ in the initramfs + +**rd.vconsole.font=**__<font base file name>__:: + console font; taken from consolefonts directory; will be written as FONT to + _/etc/vconsole.conf_ in the initramfs. ++ +[listing] +.Example +-- +rd.vconsole.font=eurlatgr +-- + +**rd.vconsole.font.map=**__<console map base file name>__:: + see description of '-m' parameter in setfont manual; taken from consoletrans + directory; will be written as FONT_MAP to _/etc/vconsole.conf_ in the + initramfs + +**rd.vconsole.font.unimap=**__<unicode table base file name>__:: + see description of '-u' parameter in setfont manual; taken from unimaps + directory; will be written as FONT_UNIMAP to _/etc/vconsole.conf_ in the + initramfs + +**rd.locale.LANG=**__<locale>__:: + taken from the environment; if no UNICODE is defined we set its value in + basis of LANG value (whether it ends with ".utf8" (or similar) or not); will + be written as LANG to _/etc/locale.conf_ in the initramfs. ++ +[listing] +.Example +-- +rd.locale.LANG=pl_PL.utf8 +-- + +**rd.locale.LC_ALL=**__<locale>__:: + taken from the environment; will be written as LC_ALL to _/etc/locale.conf_ + in the initramfs + +LVM +~~~ +**rd.lvm=0**:: + disable LVM detection + +**rd.lvm.vg=**__<volume group name>__:: + only activate all logical volumes in the the volume groups with the given name. + rd.lvm.vg can be specified multiple times on the kernel command line. + +**rd.lvm.lv=**__<volume group name>/<logical volume name>__:: + only activate the logical volumes with the given name. + rd.lvm.lv can be specified multiple times on the kernel command line. + +**rd.lvm.conf=0**:: + remove any _/etc/lvm/lvm.conf_, which may exist in the initramfs + +crypto LUKS +~~~~~~~~~~~ +**rd.luks=0**:: + disable crypto LUKS detection + +**rd.luks.uuid=**__<luks uuid>__:: + only activate the LUKS partitions with the given UUID. Any "luks-" of the + LUKS UUID is removed before comparing to _<luks uuid>_. + The comparisons also matches, if _<luks uuid>_ is only the beginning of the + LUKS UUID, so you don't have to specify the full UUID. + This parameter can be specified multiple times. + _<luks uuid>_ may be prefixed by the keyword `keysource:`, see + _rd.luks.key_ below. + +**rd.luks.allow-discards=**__<luks uuid>__:: + Allow using of discards (TRIM) requests for LUKS partitions with the given + UUID. Any "luks-" of the LUKS UUID is removed before comparing to + _<luks uuid>_. The comparisons also matches, if _<luks uuid>_ is only the + beginning of the LUKS UUID, so you don't have to specify the full UUID. + This parameter can be specified multiple times. + +**rd.luks.allow-discards**:: + Allow using of discards (TRIM) requests on all LUKS partitions. + +**rd.luks.crypttab=0**:: + do not check, if LUKS partition is in _/etc/crypttab_ + +**rd.luks.timeout=**__<seconds>__:: + specify how long dracut should wait when waiting for the user to enter the + password. This avoid blocking the boot if no password is entered. It does + not apply to luks key. The default is '0', which means 'forever'. + +crypto LUKS - key on removable device support +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +NB: If systemd is included in the dracut initrd, dracut's built in +removable device keying support won't work. systemd will prompt for +a password from the console even if you've supplied **rd.luks.key**. +You may be able to use standard systemd *fstab*(5) syntax to +get the same effect. If you do need **rd.luks.key** to work, +you will have to exclude the "systemd" dracut module and any modules +that depend on it. See *dracut.conf*(5) and +https://bugzilla.redhat.com/show_bug.cgi?id=905683 for more +information. + +**rd.luks.key=**_<keypath>[:<keydev>[:<luksdev>]]_:: + _<keypath>_ is the pathname of a key file, relative to the root + of the filesystem on some device. It's REQUIRED. When + _<keypath>_ ends with '.gpg' it's considered to be key encrypted + symmetrically with GPG. You will be prompted for the GPG password on + boot. GPG support comes with the 'crypt-gpg' module, which needs to be + added explicitly. ++ +_<keydev>_ identifies the device on which the key file resides. It may +be the kernel name of the device (should start with "/dev/"), a UUID +(prefixed with "UUID=") or a label (prefix with "LABEL="). You don't +have to specify a full UUID. Just its beginning will suffice, even if +its ambiguous. All matching devices will be probed. This parameter is +recommended, but not required. If it's not present, all block devices will +be probed, which may significantly increase boot time. ++ +If _<luksdev>_ is given, the specified key will only be used for +the specified LUKS device. Possible values are the same as for +_<keydev>_. Unless you have several LUKS devices, you don't have to +specify this parameter. The simplest usage is: ++ +[listing] +.Example +-- +rd.luks.key=/foo/bar.key +-- ++ +As you see, you can skip colons in such a case. + +[NOTE] +=============================== +Your LUKS partition must match your key file. + +dracut provides keys to cryptsetup with _-d_ (an older alias for +_--key-file_). This uses the entire binary +content of the key file as part of the secret. If +you pipe a password into cryptsetup *without* _-d_ or _--key-file_, +it will be treated as text user input, and only characters before +the first newline will be used. Therefore, when you're creating +an encrypted partition for dracut to mount, and you pipe a key into +_cryptsetup luksFormat_,you must use _-d -_. + +Here is an example for a key encrypted with GPG (warning: +_--batch-mode_ will overwrite the device without asking for +confirmation): + +[listing] +-- +gpg --quiet --decrypt rootkey.gpg | \ +cryptsetup --batch-mode --key-file - \ + luksFormat /dev/sda47 +-- + +If you use unencrypted key files, just use the key file pathname +instead of the standard input. For a random key with 256 bits of +entropy, you might use: + +[listing] +-- +head -32c /dev/urandom > rootkey.key +cryptsetup --batch-mode --key-file rootkey.key \ + luksFormat /dev/sda47 +-- + +You can also use regular key files on an encrypted _keydev_. + +Compared to using GPG encrypted keyfiles on an unencrypted +device this provides the following advantages: + +- you can unlock your disk(s) using multiple passphrases +- better security by not losing the key stretching mechanism + +To use an encrypted _keydev_ you *must* ensure that it becomes +available by using the keyword `keysource`, e.g. +`rd.luks.uuid=keysource:aaaa` +_aaaa_ being the uuid of the encrypted _keydev_. + +Example: + +Lets assume you have three disks _A_, _B_ and _C_ with the uuids +_aaaa_, _bbbb_ and _cccc_. + +You want to unlock _A_ and _B_ using keyfile _keyfile_. + +The unlocked volumes be _A'_, _B'_ and _C'_ with the uuids +_AAAA_, _BBBB_ and _CCCC_. + +_keyfile_ is saved on _C'_ as _/keyfile_. + +One luks keyslot of each _A_, _B_ and _C_ is setup with a +passphrase. + +Another luks keyslot of each _A_ and _B_ is setup with _keyfile_. + +To boot this configuration you could use: +[listing] +-- +rd.luks.uuid=aaaa +rd.luks.uuid=bbbb +rd.luks.uuid=keysource:cccc +rd.luks.key=/keyfile:UUID=CCCC +-- +Dracut asks for the passphrase for _C_ and uses the +keyfile to unlock _A_ and _B_. + +If getting the passphrase for _C_ fails it falls back to +asking for the passphrases for _A_ and _B_. + +If you want _C'_ to stay unlocked, specify a luks name for +it, e.g. `rd.luks.name=cccc=mykeys`, otherwise it gets closed +when not needed anymore. +=============================== + +**rd.luks.key.tout=0**:: + specify how many times dracut will try to read the keys specified in in + rd.luk.key. This gives a chance to the removable device containing the key + to initialise. + +MD RAID +~~~~~~~ +**rd.md=0**:: + disable MD RAID detection + +**rd.md.imsm=0**:: + disable MD RAID for imsm/isw raids, use DM RAID instead + +**rd.md.ddf=0**:: + disable MD RAID for SNIA ddf raids, use DM RAID instead + +**rd.md.conf=0**:: + ignore mdadm.conf included in initramfs + +**rd.md.waitclean=1**:: + wait for any resync, recovery, or reshape activity to finish before + continuing + +**rd.md.uuid=**__<md raid uuid>__:: + only activate the raid sets with the given UUID. This parameter can be + specified multiple times. + +DM RAID +~~~~~~~ +**rd.dm=0**:: + disable DM RAID detection + +**rd.dm.uuid=**__<dm raid uuid>__:: + only activate the raid sets with the given UUID. This parameter can be + specified multiple times. + +MULTIPATH +~~~~~~~~~ +**rd.multipath=0**:: + disable multipath detection + +**rd.multipath=default**:: + use default multipath settings + +FIPS +~~~~ +**rd.fips**:: + enable FIPS + +**boot=**__<boot device>__:: + specify the device, where /boot is located. ++ +[listing] +.Example +-- +boot=/dev/sda1 +boot=/dev/disk/by-path/pci-0000:00:1f.1-scsi-0:0:1:0-part1 +boot=UUID=<uuid> +boot=LABEL=<label> +-- + +**rd.fips.skipkernel**:: + skip checksum check of the kernel image. Useful, if the kernel image is not + in a separate boot partition. + +Network +~~~~~~~ + +[IMPORTANT] +===================== +It is recommended to either bind an interface to a MAC with the **ifname** +argument, or to use the systemd-udevd predictable network interface names. + +Predictable network interface device names based on: + +- firmware/bios-provided index numbers for on-board devices +- firmware-provided pci-express hotplug slot index number +- physical/geographical location of the hardware +- the interface's MAC address + +See: +http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames + +Two character prefixes based on the type of interface: + +en:: ethernet +wl:: wlan +ww:: wwan + +Type of names: + +o<index>:: on-board device index number +s<slot>[f<function>][d<dev_id>]:: hotplug slot index number +x<MAC>:: MAC address +[P<domain>]p<bus>s<slot>[f<function>][d<dev_id>]:: PCI geographical location +[P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]:: USB port number chain + +All multi-function PCI devices will carry the [f<function>] number in the +device name, including the function 0 device. + +When using PCI geography, The PCI domain is only prepended when it is not 0. + +For USB devices the full chain of port numbers of hubs is composed. If the +name gets longer than the maximum number of 15 characters, the name is not +exported. +The usual USB configuration == 1 and interface == 0 values are suppressed. + +PCI ethernet card with firmware index "1":: +* eno1 + +PCI ethernet card in hotplug slot with firmware index number:: +* ens1 + +PCI ethernet multi-function card with 2 ports:: +* enp2s0f0 +* enp2s0f1 + +PCI wlan card:: +* wlp3s0 + +USB built-in 3G modem:: +* wwp0s29u1u4i6 + +USB Android phone:: +* enp0s29u1u2 +===================== + +The following options are supported by the 'network-legacy' dracut +module. Other network modules might support a slightly different set of +options; refer to the documentation of the specific network module in use. For +NetworkManager, see *nm-initrd-generator*(8). + +**ip=**__{dhcp|on|any|dhcp6|auto6|either6|link6|single-dhcp}__:: + dhcp|on|any::: get ip from dhcp server from all interfaces. If netroot=dhcp, + loop sequentially through all interfaces (eth0, eth1, ...) and use the first + with a valid DHCP root-path. + + single-dhcp::: Send DHCP on all available interfaces in parallel, as + opposed to one after another. After the first DHCP response is received, + stop DHCP on all other interfaces. This gives the fastest boot time by + using the IP on interface for which DHCP succeeded first during early boot. + Caveat: Does not apply to Network Manager. + + auto6::: IPv6 autoconfiguration + + dhcp6::: IPv6 DHCP + + either6::: if auto6 fails, then dhcp6 + + link6::: bring up interface for IPv6 link-local addressing + +**ip=**__<interface>__:__{dhcp|on|any|dhcp6|auto6|link6}__[:[__<mtu>__][:__<macaddr>__]]:: + This parameter can be specified multiple times. ++ +===================== +dhcp|on|any|dhcp6::: get ip from dhcp server on a specific interface +auto6::: do IPv6 autoconfiguration +link6::: bring up interface for IPv6 link local address +<macaddr>::: optionally **set** <macaddr> on the <interface>. This +cannot be used in conjunction with the **ifname** argument for the +same <interface>. +===================== + +**ip=**__<client-IP>__:[__<peer>__]:__<gateway-IP>__:__<netmask>__:__<client_hostname>__:__<interface>__:__{none|off|dhcp|on|any|dhcp6|auto6|ibft}__[:[__<mtu>__][:__<macaddr>__]]:: + explicit network configuration. If you want do define a IPv6 address, put it + in brackets (e.g. [2001:DB8::1]). This parameter can be specified multiple + times. __<peer>__ is optional and is the address of the remote endpoint + for pointopoint interfaces and it may be followed by a slash and a decimal + number, encoding the network prefix length. ++ +===================== +<macaddr>::: optionally **set** <macaddr> on the <interface>. This +cannot be used in conjunction with the **ifname** argument for the +same <interface>. +===================== + +**ip=**__<client-IP>__:[__<peer>__]:__<gateway-IP>__:__<netmask>__:__<client_hostname>__:__<interface>__:__{none|off|dhcp|on|any|dhcp6|auto6|ibft}__[:[__<dns1>__][:__<dns2>__]]:: + explicit network configuration. If you want do define a IPv6 address, put it + in brackets (e.g. [2001:DB8::1]). This parameter can be specified multiple + times. __<peer>__ is optional and is the address of the remote endpoint + for pointopoint interfaces and it may be followed by a slash and a decimal + number, encoding the network prefix length. + +**ifname=**__<interface>__:__<MAC>__:: + Assign network device name <interface> (i.e. "bootnet") to the NIC with + MAC <MAC>. ++ +WARNING: Do **not** use the default kernel naming scheme for the interface name, +as it can conflict with the kernel names. So, don't use "eth[0-9]+" for the +interface name. Better name it "bootnet" or "bluesocket". + +**rd.route=**__<net>__/__<netmask>__:__<gateway>__[:__<interface>__]:: + Add a static route with route options, which are separated by a colon. + IPv6 addresses have to be put in brackets. ++ +[listing] +.Example +-- + rd.route=192.168.200.0/24:192.168.100.222:ens10 + rd.route=192.168.200.0/24:192.168.100.222 + rd.route=192.168.200.0/24::ens10 + rd.route=[2001:DB8:3::/8]:[2001:DB8:2::1]:ens10 +-- + +**bootdev=**__<interface>__:: + specify network interface to use routing and netroot information from. + Required if multiple ip= lines are used. + +**BOOTIF=**__<MAC>__:: + specify network interface to use routing and netroot information from. + +**rd.bootif=0**:: + Disable BOOTIF parsing, which is provided by PXE + +**nameserver=**__<IP>__ [**nameserver=**__<IP>__ ...]:: + specify nameserver(s) to use + +**rd.peerdns=0**:: + Disable DNS setting of DHCP parameters. + +**biosdevname=0**:: + boolean, turn off biosdevname network interface renaming + +**rd.neednet=1**:: + boolean, bring up network even without netroot set + +**vlan=**__<vlanname>__:__<phydevice>__:: + Setup vlan device named <vlanname> on <phydevice>. + We support the four styles of vlan names: VLAN_PLUS_VID (vlan0005), + VLAN_PLUS_VID_NO_PAD (vlan5), DEV_PLUS_VID (eth0.0005), + DEV_PLUS_VID_NO_PAD (eth0.5) + +**bond=**__<bondname>__[:__<bondslaves>__:[:__<options>__[:<mtu>]]]:: + Setup bonding device <bondname> on top of <bondslaves>. + <bondslaves> is a comma-separated list of physical (ethernet) interfaces. + <options> is a comma-separated list on bonding options (modinfo bonding for + details) in format compatible with initscripts. If <options> includes + multi-valued arp_ip_target option, then its values should be separated by + semicolon. if the mtu is specified, it will be set on the bond master. + Bond without parameters assumes + bond=bond0:eth0,eth1:mode=balance-rr + +**team=**__<teammaster>__:__<teamslaves>__[:__<teamrunner>__]:: + Setup team device <teammaster> on top of <teamslaves>. + <teamslaves> is a comma-separated list of physical (ethernet) interfaces. + <teamrunner> is the runner type to be used (see *teamd.conf*(5)); defaults to + activebackup. + Team without parameters assumes + team=team0:eth0,eth1:activebackup + +**bridge=**__<bridgename>__:__<ethnames>__:: + Setup bridge <bridgename> with <ethnames>. <ethnames> is a comma-separated + list of physical (ethernet) interfaces. Bridge without parameters assumes + bridge=br0:eth0 + +NFS +~~~ +**root=**\[_<server-ip>_:]__<root-dir>__[:__<nfs-options>__]:: + mount nfs share from <server-ip>:/<root-dir>, if no server-ip is given, use + dhcp next_server. If server-ip is an IPv6 address it has to be put in + brackets, e.g. [2001:DB8::1]. NFS options can be appended with the prefix + ":" or "," and are separated by ",". + +**root=**nfs:\[_<server-ip>_:]__<root-dir>__[:__<nfs-options>__], **root=**nfs4:\[_<server-ip>_:]__<root-dir>__[:__<nfs-options>__], **root=**__{dhcp|dhcp6}__:: + netroot=dhcp alone directs initrd to look at the DHCP root-path where NFS + options can be specified. ++ +[listing] +.Example +-- + root-path=<server-ip>:<root-dir>[,<nfs-options>] + root-path=nfs:<server-ip>:<root-dir>[,<nfs-options>] + root-path=nfs4:<server-ip>:<root-dir>[,<nfs-options>] +-- + +**root=**_/dev/nfs_ nfsroot=\[_<server-ip>_:]__<root-dir>__[:__<nfs-options>__]:: + _Deprecated!_ kernel Documentation_/filesystems/nfsroot.txt_ defines this + method. This is supported by dracut, but not recommended. + +**rd.nfs.domain=**__<NFSv4 domain name>__:: + Set the NFSv4 domain name. Will override the settings in _/etc/idmap.conf_. + +**rd.net.dhcp.retry=**__<cnt>__:: + If this option is set, dracut will try to connect via dhcp <cnt> times before failing. + Default is 1. + +**rd.net.timeout.dhcp=**__<arg>__:: + If this option is set, dhclient is called with "--timeout <arg>". + +**rd.net.timeout.iflink=**__<seconds>__:: + Wait <seconds> until link shows up. Default is 60 seconds. + +**rd.net.timeout.ifup=**__<seconds>__:: + Wait <seconds> until link has state "UP". Default is 20 seconds. + +**rd.net.timeout.route=**__<seconds>__:: + Wait <seconds> until route shows up. Default is 20 seconds. + +**rd.net.timeout.ipv6dad=**__<seconds>__:: + Wait <seconds> until IPv6 DAD is finished. Default is 50 seconds. + +**rd.net.timeout.ipv6auto=**__<seconds>__:: + Wait <seconds> until IPv6 automatic addresses are assigned. Default is 40 seconds. + +**rd.net.timeout.carrier=**__<seconds>__:: + Wait <seconds> until carrier is recognized. Default is 10 seconds. + +CIFS +~~~ +**root=**cifs://[__<username>__[:__<password>__]@]__<server-ip>__:__<root-dir>__:: + mount cifs share from <server-ip>:/<root-dir>, if no server-ip is given, use + dhcp next_server. if server-ip is an IPv6 address it has to be put in + brackets, e.g. [2001:DB8::1]. If a username or password are not specified +as part of the root, then they must be passed on the command line through +cifsuser/cifspass. ++ +WARNING: Passwords specified on the kernel command line are visible for all +users via the file _/proc/cmdline_ and via dmesg or can be sniffed on the +network, when using DHCP with DHCP root-path. + +**cifsuser**=__<username>__:: + Set the cifs username, if not specified as part of the root. + +**cifspass**=__<password>__:: + Set the cifs password, if not specified as part of the root. ++ +WARNING: Passwords specified on the kernel command line are visible for all +users via the file _/proc/cmdline_ and via dmesg or can be sniffed on the +network, when using DHCP with DHCP root-path. + +iSCSI +~~~~~ +**root=**iscsi:[__<username>__:__<password>__[:__<reverse>__:__<password>__]@][__<servername>__]:[__<protocol>__]:[__<port>__][:[__<iscsi_iface_name>__]:[__<netdev_name>__]]:[__<LUN>__]:__<targetname>__:: + protocol defaults to "6", LUN defaults to "0". If the "servername" field is + provided by BOOTP or DHCP, then that field is used in conjunction with other + associated fields to contact the boot server in the Boot stage. However, if + the "servername" field is not provided, then the "targetname" field is then + used in the Discovery Service stage in conjunction with other associated + fields. See + link:$$http://tools.ietf.org/html/rfc4173#section-5$$[rfc4173]. ++ +WARNING: Passwords specified on the kernel command line are visible for all +users via the file _/proc/cmdline_ and via dmesg or can be sniffed on the +network, when using DHCP with DHCP root-path. ++ +[listing] +.Example +-- +root=iscsi:192.168.50.1::::iqn.2009-06.dracut:target0 +-- ++ +If servername is an IPv6 address, it has to be put in brackets: ++ +[listing] +.Example +-- +root=iscsi:[2001:DB8::1]::::iqn.2009-06.dracut:target0 +-- + +**root=**__???__ **netroot=**iscsi:[__<username>__:__<password>__[:__<reverse>__:__<password>__]@][__<servername>__]:[__<protocol>__]:[__<port>__][:[__<iscsi_iface_name>__]:[__<netdev_name>__]]:[__<LUN>__]:__<targetname>__ ...:: + multiple netroot options allow setting up multiple iscsi disks: ++ +[listing] +.Example +-- +root=UUID=12424547 +netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target0 +netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target1 +-- ++ +If servername is an IPv6 address, it has to be put in brackets: ++ +[listing] +.Example +-- +netroot=iscsi:[2001:DB8::1]::::iqn.2009-06.dracut:target0 +-- ++ +WARNING: Passwords specified on the kernel command line are visible for all +users via the file _/proc/cmdline_ and via dmesg or can be sniffed on the +network, when using DHCP with DHCP root-path. +You may want to use rd.iscsi.firmware. + +**root=**__???__ **rd.iscsi.initiator=**__<initiator>__ **rd.iscsi.target.name=**__<target name>__ **rd.iscsi.target.ip=**__<target ip>__ **rd.iscsi.target.port=**__<target port>__ **rd.iscsi.target.group=**__<target group>__ **rd.iscsi.username=**__<username>__ **rd.iscsi.password=**__<password>__ **rd.iscsi.in.username=**__<in username>__ **rd.iscsi.in.password=**__<in password>__:: + manually specify all iscsistart parameter (see **+iscsistart --help+**) ++ +WARNING: Passwords specified on the kernel command line are visible for all +users via the file _/proc/cmdline_ and via dmesg or can be sniffed on the +network, when using DHCP with DHCP root-path. +You may want to use rd.iscsi.firmware. + +**root=**_???_ **netroot=**iscsi **rd.iscsi.firmware=1**:: + will read the iscsi parameter from the BIOS firmware + +**rd.iscsi.login_retry_max=**__<num>__:: + maximum number of login retries + +**rd.iscsi.param=**__<param>__:: + <param> will be passed as "--param <param>" to iscsistart. + This parameter can be specified multiple times. ++ +[listing] +.Example +-- +"netroot=iscsi rd.iscsi.firmware=1 rd.iscsi.param=node.session.timeo.replacement_timeout=30" +-- ++ +will result in ++ +[listing] +-- +iscsistart -b --param node.session.timeo.replacement_timeout=30 +-- + +**rd.iscsi.ibft** **rd.iscsi.ibft=1**: + Turn on iBFT autoconfiguration for the interfaces + +**rd.iscsi.mp** **rd.iscsi.mp=1**: + Configure all iBFT interfaces, not only used for booting (multipath) + +**rd.iscsi.waitnet=0**: + Turn off waiting for all interfaces to be up before trying to login to the iSCSI targets. + +**rd.iscsi.testroute=0**: + Turn off checking, if the route to the iSCSI target IP is possible before trying to login. + +FCoE +~~~~ +**rd.fcoe=0**:: + disable FCoE and lldpad + +**fcoe=**__<edd|interface|MAC>__:__{dcb|nodcb}__:__{fabric|vn2vn}__:: + Try to connect to a FCoE SAN through the NIC specified by _<interface>_ or + _<MAC>_ or EDD settings. The second argument specifies if DCB + should be used. The optional third argument specifies whether + fabric or VN2VN mode should be used. + This parameter can be specified multiple times. ++ +NOTE: letters in the MAC-address must be lowercase! + +NVMf +~~~~ +**rd.nonvmf**:: + Disable NVMf + +**rd.nvmf.nonbft**:: + Disable connecting to targets from the NVMe Boot Firmware Table. Without + this parameter, NBFT connections will take precedence over _rd.nvmf.discover_. + +**rd.nvmf.nostatic**:: + Disable connecting to targets that have been statically configured when + the initramfs was built. Targets specified with rd.nvmf.discover on the + kernel command line will still be tried. + +**rd.nvmf.hostnqn=**__<hostNQN>__:: + NVMe host NQN to use + +**rd.nvmf.hostid=**__<hostID>__:: + NVMe host id to use + +**rd.nvmf.discover=**__{rdma|fc|tcp}__,__<traddr>__,[__<host_traddr>__],[__<trsvcid>__]:: + Discover and connect to a NVMe-over-Fabric controller specified by + _<traddr>_ and the optionally _<host_traddr>_ or _<trsvcid>_. + The first argument specifies the transport to use; currently only + 'rdma', 'fc', or 'tcp' are supported. + This parameter can be specified multiple times. ++ +[listing] +.Examples +-- +rd.nvmf.discover=tcp,192.168.10.10,,4420 +rd.nvmf.discover=fc,nn-0x201700a05634f5bf:pn-0x201900a05634f5bf,nn-0x200000109b579ef3:pn-0x100000109b579ef3 +-- + +**rd.nvmf.discover=fc,auto**:: + This special syntax determines that Fibre Channel autodiscovery + is to be used rather than regular NVMe discovery. It takes precedence + over all other _rd.nvmf.discover=_ arguments. + +NBD +~~~ +**root=**??? **netroot=**nbd:__<server>__:__<port/exportname>__[:__<fstype>__[:__<mountopts>__[:__<nbdopts>__]]]:: + mount nbd share from <server>. ++ +NOTE: + If "exportname" instead of "port" is given the standard port is used. + Newer versions of nbd are only supported with "exportname". + +**root=/dev/root netroot=dhcp** with **dhcp** **root-path=**nbd:__<server>__:__<port/exportname>__[:__<fstype>__[:__<mountopts>__[:__<nbdopts>__]]]:: + netroot=dhcp alone directs initrd to look at the DHCP root-path where NBD + options can be specified. This syntax is only usable in cases where you are + directly mounting the volume as the rootfs. ++ +NOTE: + If "exportname" instead of "port" is given the standard port is used. + Newer versions of nbd are only supported with "exportname". + +VIRTIOFS +~~~~~~~~ +**root=**virtiofs:__<mount-tag>__:: + mount virtiofs share using the tag <mount-tag>. + The tag name is arbitrary and must match the tag given in the qemu '-device' command. + +**rootfstype=**virtiofs **root=**__<mount-tag>__:: + mount virtiofs share using the tag <mount-tag>. + The tag name is arbitrary and must match the tag given in the qemu '-device' command. + +Both formats are supported by the 'virtiofs' dracut module. +See https://gitlab.com/virtio-fs/virtiofsd for more information. + +[listing] +.Example +-- +root=virtiofs:host rw +-- + +DASD +~~~~ +**rd.dasd=**....:: + same syntax as the kernel module parameter (s390 only) + +ZFCP +~~~~ +**rd.zfcp=**__<zfcp adaptor device bus ID>__,__<WWPN>__,__<FCPLUN>__:: + rd.zfcp can be specified multiple times on the kernel command + line. + +**rd.zfcp=**__<zfcp adaptor device bus ID>__:: + If NPIV is enabled and the 'allow_lun_scan' parameter to the zfcp + module is set to 'Y' then the zfcp adaptor will be initiating a + scan internally and the <WWPN> and <FCPLUN> parameters can be omitted. ++ +[listing] +.Example +-- +rd.zfcp=0.0.4000,0x5005076300C213e9,0x5022000000000000 +rd.zfcp=0.0.4000 +-- + +**rd.zfcp.conf=0**:: + ignore zfcp.conf included in the initramfs + +ZNET +~~~~ +**rd.znet=**__<nettype>__,__<subchannels>__,__<options>__:: + The whole parameter is appended to /etc/ccw.conf, which is used on + RHEL/Fedora with ccw_init, which is called from udev for certain + devices on z-series. + rd.znet can be specified multiple times on the kernel command line. + +**rd.znet_ifname=**__<ifname>__:__<subchannels>__:: + Assign network device name <interface> (i.e. "bootnet") to the NIC + corresponds to the subchannels. This is useful when dracut's default + "ifname=" doesn't work due to device having a changing MAC address. ++ +[listing] +.Example +-- +rd.znet=qeth,0.0.0600,0.0.0601,0.0.0602,layer2=1,portname=foo +rd.znet=ctc,0.0.0600,0.0.0601,protocol=bar +-- + +Booting live images +~~~~~~~~~~~~~~~~~~~ +Dracut offers multiple options for live booted images: + +===================== +SquashFS with read-only filesystem image::: The system will boot with a +read-only filesystem from the SquashFS and apply a writable Device-mapper +snapshot or an OverlayFS overlay mount for the read-only base filesystem. This +method ensures a relatively fast boot and lower RAM usage. Users **must be +careful** to avoid writing too many blocks to a snapshot volume. Once the +blocks of the snapshot overlay are exhausted, the root filesystem becomes +read-only and may cause application failures. The snapshot overlay file is +marked 'Overflow', and a difficult recovery is required to repair and enlarge +the overlay offline. Non-persistent overlays are sparse files in RAM that only +consume content space as required blocks are allocated. They default to an +apparent size of 32 GiB in RAM. The size can be adjusted with the +**rd.live.overlay.size=** kernel command line option. ++ +The filesystem structure is traditionally expected to be: ++ +[listing] +-- +squashfs.img | SquashFS from LiveCD .iso + !(mount) + /LiveOS + |- rootfs.img | Filesystem image to mount read-only + !(mount) + /bin | Live filesystem + /boot | + /dev | + ... | +-- ++ +For OverlayFS mount overlays, the filesystem structure may also be a direct +compression of the root filesystem: ++ +[listing] +-- +squashfs.img | SquashFS from LiveCD .iso + !(mount) + /bin | Live filesystem + /boot | + /dev | + ... | +-- ++ +Dracut uses one of the overlay methods of live booting by default. No +additional command line options are required other than **root=live:<URL>** to +specify the location of your squashed filesystem. ++ +- The compressed SquashFS image can be copied during boot to RAM at +`/run/initramfs/squashed.img` by using the **rd.live.ram=1** option. +- A device with a persistent overlay can be booted read-only by using the +**rd.live.overlay.readonly** option on the kernel command line. This will +either cause a temporary, writable overlay to be stacked over a read-only +snapshot of the root filesystem or the OverlayFS mount will use an additional +lower layer with the root filesystem. ++ +Uncompressed live filesystem image::: +When the live system was installed with the '--skipcompress' option of the +__livecd-iso-to-disk__ installation script for Live USB devices, the root +filesystem image, __rootfs.img__, is expanded on installation and no SquashFS +is involved during boot. ++ +- If **rd.live.ram=1** is used in this situation, the full, uncompressed +root filesystem is copied during boot to `/run/initramfs/rootfs.img` in the +`/run` tmpfs. ++ +- If **rd.live.overlay=none** is provided as a kernel command line option, +a writable, linear Device-mapper target is created on boot with no overlay. + +Writable filesystem image::: +The system will retrieve a compressed filesystem image, extract it to +`/run/initramfs/fsimg/rootfs.img`, connect it to a loop device, create a +writable, linear Device-mapper target at `/dev/mapper/live-rw`, and mount that +as a writable volume at `/`. More RAM is required during boot but the live +filesystem is easier to manage if it becomes full. Users can make a filesystem +image of any size and that size will be maintained when the system boots. There +is no persistence of root filesystem changes between boots with this option. ++ +The filesystem structure is expected to be: ++ +[listing] +-- +rootfs.tgz | Compressed tarball containing filesystem image + !(unpack) + /rootfs.img | Filesystem image at /run/initramfs/fsimg/ + !(mount) + /bin | Live filesystem + /boot | + /dev | + ... | +-- ++ +To use this boot option, ensure that **rd.writable.fsimg=1** is in your kernel +command line and add the **root=live:<URL>** to specify the location +of your compressed filesystem image tarball or SquashFS image. +===================== + +**rd.writable.fsimg=**1:: +Enables writable filesystem support. The system will boot with a fully +writable (but non-persistent) filesystem without snapshots __(see notes above +about available live boot options)__. You can use the **rootflags** option to +set mount options for the live filesystem as well __(see documentation about +rootflags in the **Standard** section above)__. +This implies that the whole image is copied to RAM before the boot continues. ++ +NOTE: There must be enough free RAM available to hold the complete image. ++ +This method is very suitable for diskless boots. + +**rd.minmem=**__<megabyte>__:: +Specify minimum free RAM in MB after copying a live disk image into memory. +The default is 1024. ++ +This parameter only applies together with the parameters rd.writable.fsimg +or rd.live.ram. + +**root=**live:__<url>__:: +Boots a live image retrieved from __<url>__. Requires the dracut 'livenet' +module. Valid handlers: __http, https, ftp, torrent, tftp__. ++ +[listing] +.Examples +-- +root=live:http://example.com/liveboot.img +root=live:ftp://ftp.example.com/liveboot.img +root=live:torrent://example.com/liveboot.img.torrent +-- + +**rd.live.debug=**1:: +Enables debug output from the live boot process. + +**rd.live.dir=**__<path>__:: +Specifies the directory within the boot device where the squashfs.img or +rootfs.img can be found. By default, this is `/LiveOS`. + +**rd.live.squashimg=**__<filename of SquashFS image>__:: +Specifies the filename for a SquashFS image of the root filesystem. +By default, this is __squashfs.img__. + +**rd.live.ram=**1:: +Copy the complete image to RAM and use this for booting. This is useful +when the image resides on, e.g., a DVD which needs to be ejected later on. + +**rd.live.overlay={**__<devspec>__[:__{<pathspec>|auto}__]|__none__}:: +Manage the usage of a permanent overlay. ++ +-- +* _<devspec>_ specifies the path to a device with a mountable filesystem. +* _<pathspec>_ is the path to a file within that filesystem, which shall be +used to persist the changes made to the device specified by the +**root=live:__<url>__** option. ++ +The default _pathspec_, when _auto_ or no _:<pathspec>_ is given, is +`/<rd.live.dir>/overlay-<label>-<uuid>`, where _<label>_ is the +device LABEL, and _<uuid>_ is the device UUID. +* _none_ (the word itself) specifies that no overlay will be used, such as when +an uncompressed, writable live root filesystem is available. ++ +If a persistent overlay __is detected__ at the standard LiveOS path, the +overlay & overlay type detected, whether Device-mapper or OverlayFS, will be +used. +-- ++ +[listing] +.Examples +-- +rd.live.overlay=/dev/sdb1:persistent-overlay.img +rd.live.overlay=UUID=99440c1f-8daa-41bf-b965-b7240a8996f4 +-- + +**rd.live.overlay.cowfs=**__[btrfs|ext4|xfs]__:: +Specifies the filesystem to use when formatting the overlay partition. +The default is ext4. + +**rd.live.overlay.size=**__<size_MiB>__:: +Specifies a non-persistent Device-mapper overlay size in MiB. The default is +_32768_. + +**rd.live.overlay.readonly=**1:: +This is used to boot with a normally read-write persistent overlay in a +read-only mode. With this option, either an additional, non-persistent, +writable snapshot overlay will be stacked over a read-only snapshot, +`/dev/mapper/live‑ro`, of the base filesystem with the persistent overlay, or a +read-only loop device, in the case of a writable __rootfs.img__, or an OverlayFS +mount will use the persistent overlay directory linked at `/run/overlayfs‑r` as +an additional lower layer along with the base root filesystem and apply a +transient, writable upper directory overlay, in order to complete the booted +root filesystem. + +**rd.live.overlay.reset=**1:: +Specifies that a persistent overlay should be reset on boot. All previous root +filesystem changes are vacated by this action. + +**rd.live.overlay.thin=**1:: +Enables the usage of thin snapshots instead of classic dm snapshots. +The advantage of thin snapshots is that they support discards, and will free +blocks that are not claimed by the filesystem. In this use case, this means +that memory is given back to the kernel when the filesystem does not claim it +anymore. + +**rd.live.overlay.overlayfs=**1:: +Enables the use of the *OverlayFS* kernel module, if available, to provide a +copy-on-write union directory for the root filesystem. OverlayFS overlays are +directories of the files that have changed on the read-only base (lower) +filesystem. The root filesystem is provided through a special overlay type +mount that merges the lower and upper directories. If an OverlayFS upper +directory is not present on the boot device, a tmpfs directory will be created +at `/run/overlayfs` to provide temporary storage. Persistent storage can be +provided on vfat or msdos formatted devices by supplying the OverlayFS upper +directory within an embedded filesystem that supports the creation of trusted.* +extended attributes and provides a valid d_type in readdir responses, such as +with ext4 and xfs. On non-vfat-formatted devices, a persistent OverlayFS +overlay can extend the available root filesystem storage up to the capacity of +the LiveOS disk device. ++ +If a persistent overlay is detected at the standard LiveOS path, the overlay & +overlay type detected, whether OverlayFS or Device-mapper, will be used. ++ +The **rd.live.overlay.readonly** option, which allows a persistent overlayfs to +be mounted read-only through a higher level transient overlay directory, has +been implemented through the multiple lower layers feature of OverlayFS. + + +ZIPL +~~~~ +**rd.zipl=**__<path to blockdevice>__:: + Update the dracut commandline with the values found in the + _dracut-cmdline.conf_ file on the given device. + The values are merged into the existing commandline values + and the udev events are regenerated. ++ +[listing] +.Example +-- +rd.zipl=UUID=0fb28157-99e3-4395-adef-da3f7d44835a +-- + +CIO_IGNORE +~~~~~~~~~~ +**rd.cio_accept=**__<device-ids>__:: + Remove the devices listed in <device-ids> from the default + cio_ignore kernel command-line settings. + <device-ids> is a list of comma-separated CCW device ids. + The default for this value is taken from the + _/boot/zipl/active_devices.txt_ file. ++ +[listing] +.Example +-- +rd.cio_accept=0.0.0180,0.0.0800,0.0.0801,0.0.0802 +-- + +Plymouth Boot Splash +~~~~~~~~~~~~~~~~~~~~ +**plymouth.enable=0**:: + disable the plymouth bootsplash completely. + +**rd.plymouth=0**:: + disable the plymouth bootsplash only for the initramfs. + +Kernel keys +~~~~~~~~~~~ +**masterkey=**__<kernel master key path name>__:: + Set the path name of the kernel master key. ++ +[listing] +.Example +-- +masterkey=/etc/keys/kmk-trusted.blob +-- + +**masterkeytype=**__<kernel master key type>__:: + Set the type of the kernel master key. ++ +[listing] +.Example +-- +masterkeytype=trusted +-- + +**evmkey=**__<EVM HMAC key path name>__:: + Set the path name of the EVM HMAC key. ++ +[listing] +.Example +-- +evmkey=/etc/keys/evm-trusted.blob +-- + +**evmx509=**__<EVM X.509 cert path name>__:: + Set the path name of the EVM X.509 certificate. ++ +[listing] +.Example +-- +evmx509=/etc/keys/x509_evm.der +-- + +**ecryptfskey=**__<eCryptfs key path name>__:: + Set the path name of the eCryptfs key. ++ +[listing] +.Example +-- +ecryptfskey=/etc/keys/ecryptfs-trusted.blob +-- + +Deprecated, renamed Options +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Here is a list of options, which were used in dracut prior to version 008, and +their new replacement. + +rdbreak:: rd.break + +rd.ccw:: rd.znet +rd_CCW:: rd.znet + +rd_DASD_MOD:: rd.dasd + +rd_DASD:: rd.dasd + +rdinitdebug rdnetdebug:: rd.debug + +rd_NO_DM:: rd.dm=0 + +rd_DM_UUID:: rd.dm.uuid + +rdblacklist:: rd.driver.blacklist + +rdinsmodpost:: rd.driver.post + +rdloaddriver:: rd.driver.pre + +rd_NO_FSTAB:: rd.fstab=0 + +rdinfo:: rd.info + +check:: rd.live.check + +rdlivedebug:: rd.live.debug + +live_dir:: rd.live.dir + +liveimg:: rd.live.image + +overlay:: rd.live.overlay + +readonly_overlay:: rd.live.overlay.readonly + +reset_overlay:: rd.live.overlay.reset + +live_ram:: rd.live.ram + +rd_NO_CRYPTTAB:: rd.luks.crypttab=0 + +rd_LUKS_KEYDEV_UUID:: rd.luks.keydev.uuid + +rd_LUKS_KEYPATH:: rd.luks.keypath + +rd_NO_LUKS:: rd.luks=0 + +rd_LUKS_UUID:: rd.luks.uuid + +rd_NO_LVMCONF:: rd.lvm.conf + +rd_LVM_LV:: rd.lvm.lv + +rd_NO_LVM:: rd.lvm=0 + +rd_LVM_VG:: rd.lvm.vg + +rd_NO_MDADMCONF:: rd.md.conf=0 + +rd_NO_MDIMSM:: rd.md.imsm=0 + +rd_NO_MD:: rd.md=0 + +rd_MD_UUID:: rd.md.uuid + +rd_NO_MULTIPATH: rd.multipath=0 + +rd_NFS_DOMAIN:: rd.nfs.domain + +iscsi_initiator:: rd.iscsi.initiator + +iscsi_target_name:: rd.iscsi.target.name + +iscsi_target_ip:: rd.iscsi.target.ip + +iscsi_target_port:: rd.iscsi.target.port + +iscsi_target_group:: rd.iscsi.target.group + +iscsi_username:: rd.iscsi.username + +iscsi_password:: rd.iscsi.password + +iscsi_in_username:: rd.iscsi.in.username + +iscsi_in_password:: rd.iscsi.in.password + +iscsi_firmware:: rd.iscsi.firmware=0 + +rd_NO_PLYMOUTH:: rd.plymouth=0 + +rd_retry:: rd.retry + +rdshell:: rd.shell + +rd_NO_SPLASH:: rd.splash + +rdudevdebug:: rd.udev.debug + +rdudevinfo:: rd.udev.info + +rd_NO_ZFCPCONF:: rd.zfcp.conf=0 + +rd_ZFCP:: rd.zfcp + +rd_ZNET:: rd.znet + +KEYMAP:: vconsole.keymap + +KEYTABLE:: vconsole.keymap + +SYSFONT:: vconsole.font + +CONTRANS:: vconsole.font.map + +UNIMAP:: vconsole.font.unimap + +UNICODE:: vconsole.unicode + +EXT_KEYMAP:: vconsole.keymap.ext + +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. + +AUTHOR +------ +Harald Hoyer + +SEE ALSO +-------- +*dracut*(8) *dracut.conf*(5) diff --git a/man/dracut.conf.5.asc b/man/dracut.conf.5.asc new file mode 100644 index 0000000..f1705ce --- /dev/null +++ b/man/dracut.conf.5.asc @@ -0,0 +1,341 @@ +DRACUT.CONF(5) +============== +:doctype: manpage +:man source: dracut +:man manual: dracut +:man version: {version} + +NAME +---- +dracut.conf - configuration file(s) for dracut + +SYNOPSIS +-------- +_/etc/dracut.conf_ +_/etc/dracut.conf.d/\*.conf_ +_/usr/lib/dracut/dracut.conf.d/*.conf_ + +Description +----------- +_dracut.conf_ is loaded during the initialisation phase of dracut. Command line +parameter will override any values set here. + +_*.conf_ files are read from /usr/lib/dracut/dracut.conf.d and +/etc/dracut.conf.d. Files with the same name in /etc/dracut.conf.d will replace +files in /usr/lib/dracut/dracut.conf.d. +The files are then read in alphanumerical order and will override parameters +set in _/etc/dracut.conf_. Each line specifies an attribute and a value. A '#' +indicates the beginning of a comment; following characters, up to the end of the +line are not interpreted. + +dracut command line options will override any values set here. + +Configuration files must have the extension .conf; other extensions are ignored. + +*add_dracutmodules+=*" __<dracut modules>__ ":: + Add a space-separated list of dracut modules to call when building the + initramfs. Modules are located in _/usr/lib/dracut/modules.d_. + +*force_add_dracutmodules+=*" __<dracut modules>__ ":: + Force to add a space-separated list of dracut modules to the default set of + modules, when host-only mode is specified. This parameter can be specified + multiple times. + +*omit_dracutmodules+=*" __<dracut modules>__ ":: + Omit a space-separated list of dracut modules to call when building the + initramfs. Modules are located in _/usr/lib/dracut/modules.d_. + +*dracutmodules+=*" __<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 option forces dracut to only include the specified dracut modules. + In most cases the "add_dracutmodules" option is what you want to use. + +*add_drivers+=*" __<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. + +*force_drivers+=*" __<list of kernel modules>__ ":: + See add_drivers above. But in this case it is ensured that the drivers + are tried to be loaded early via modprobe. + +*omit_drivers+=*" __<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. + +*drivers+=*" __<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. + +*filesystems+=*" __<filesystem names>__ ":: + Specify a space-separated list of kernel filesystem modules to exclusively + include in the generic initramfs. + +*drivers_dir=*"__<kernel modules directory>__":: + Specify the directory where to look for kernel modules. + +*fw_dir+=*" :__<dir>__[:__<dir>__ ...] ":: + Specify additional colon-separated list of directories where to look for + firmware files. + +*libdirs+=*" __<dir>__[ __<dir>__ ...] ":: + Specify a space-separated list of directories where to look for libraries. + +*install_items+=*" __<file>__[ __<file>__ ...] ":: + Specify additional files to include in the initramfs, separated by spaces. + +*install_optional_items+=*" __<file>__[ __<file>__ ...] ":: + Specify additional files to include in the initramfs, separated by spaces, + if they exist. + +*compress=*"__{cat|bzip2|lzma|xz|gzip|lzop|lz4|zstd|<compressor [args ...]>}__":: + 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 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. + To disable compression, use "cat". + +*squash_compress=*"__{<compressor [args ...]>}__":: + Compress the squashfs image using the passed compressor and compressor + specific options for mksquashfs. You can refer to mksquashfs manual for + supported compressors and compressor specific options. If squash module is + not called when building the initramfs, this option will not take effect. + +*do_strip=*"__{yes|no}__":: + Strip binaries in the initramfs (default=yes). + +*aggressive_strip=*"__{yes|no}__":: + Strip more than just debug symbol and sections, for a smaller initramfs + build. The "do_strip=yes" option must also be specified (default=no). + +*do_hardlink=*"__{yes|no}__":: + Hardlink files in the initramfs (default=yes). + +*prefix=*" __<directory>__ ":: + Prefix initramfs files with __<directory>__. + +*hostonly=*"__{yes|no}__":: + Host-only mode: Install only what is needed for booting the local host + instead of a generic host and generate host-specific configuration + (default=no). + +*hostonly_mode=*"__{sloppy|strict}__":: + Specify the host-only mode to use (default=sloppy). + In "sloppy" host-only mode, extra drivers and modules will be installed, so + minor hardware change won't make the image unbootable (e.g. changed + keyboard), and the image is still portable among similar hosts. + With "strict" mode enabled, anything not necessary for booting the local + host in its current state will not be included, and modules may do some + extra job to save more space. Minor change of hardware or environment could + make the image unbootable. + +*hostonly_cmdline=*"__{yes|no}__":: + If set to "yes", store the kernel command line arguments needed in the + initramfs. If **hostonly="yes"** and this option is not configured, it's + automatically set to "yes". + +*hostonly_nics+=*" [__<nic>__[ __<nic>__ ...]] ":: + Only enable listed NICs in the initramfs. The list can be empty, so other + modules can install only the necessary network drivers. + +*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"), or "mapper" to use /dev/mapper device names (default=mapper). + +*tmpdir=*"__<temporary directory>__":: + Specify temporary directory to use. + +[WARNING] +==== +If chrooted to another root other than the real root device, use --fstab and +provide a valid _/etc/fstab_. +==== + +*use_fstab=*"__{yes|no}__":: + Use _/etc/fstab_ instead of _/proc/self/mountinfo_ (default=no). + +*add_fstab+=*" __<filename>__ ":: + Add entries of __<filename>__ to the initramfs /etc/fstab. + +*add_device+=*" __<device>__ ":: + Bring up _<device>_ in initramfs, _<device>_ should be the device name. + This can be useful in host-only mode for resume support when your swap is on + LVM an encrypted partition. + +*mdadmconf=*"__{yes|no}__":: + Include local _/etc/mdadm.conf_ (default=no). + +*lvmconf=*"__{yes|no}__":: + Include local _/etc/lvm/lvm.conf_ (default=no). + +*fscks=*" __<fsck tools>__ ":: + Add a space-separated list of fsck tools. If nothing is specified, the + default is: "umount mount /sbin/fsck* xfs_db xfs_check xfs_repair e2fsck + jfs_fsck reiserfsck btrfsck". The installation is opportunistic + (non-existing tools are ignored). + +*nofscks=*"__{yes|no}__":: + If specified, inhibit installation of any fsck tools (default=no). + +*ro_mnt=*"__{yes|no}__":: + Mount _/_ and _/usr_ read-only by default (default=no). + +*kernel_cmdline=*"__parameters__":: + Specify default kernel command line parameters. + +*kernel_only=*"__{yes|no}__":: + Only install kernel drivers and firmware files (default=no). + +*no_kernel=*"__{yes|no}__":: + Do not install kernel drivers and firmware files (default=no). + +*acpi_override=*"__{yes|no}__":: + [WARNING] ONLY USE THIS IF YOU KNOW WHAT YOU ARE DOING! + + Override BIOS provided ACPI tables. For further documentation read + Documentation/acpi/initrd_table_override.txt in the kernel sources. + Search for ACPI table files (must have .aml suffix) in acpi_table_dir= + directory (see below) and add them to a separate uncompressed cpio + archive. This cpio archive gets glued (concatenated, uncompressed one + must be the first one) to the compressed cpio archive. The first, + uncompressed cpio archive is for data which the kernel must be able + to access very early (and cannot make use of uncompress algorithms yet) + like microcode or ACPI tables (default=no). + +*acpi_table_dir=*"__<dir>__":: + Directory to search for ACPI tables if acpi_override= is set to yes. + +*early_microcode=*"{yes|no}":: + Combine early microcode with ramdisk (default=yes). + +*stdloglvl*="__\{0-6\}__":: + Specify logging level for standard error (default=4). + +[NOTE] +=============================== +Logging levels: +---- + 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) +---- +=============================== + +*sysloglvl*="__\{0-6\}__":: + Specify logging level for syslog (default=0). + +*fileloglvl=*"__\{0-6\}__":: + Specify logging level for logfile (default=4). + +*logfile=*"__<file>__":: + Path to logfile. + +*sshkey=*"__<file>__":: + SSH key file used with ssh-client module. + +*show_modules=*"__{yes|no}__":: + Print the name of the included modules to standard output during build + (default=no). + +*i18n_vars=*"__<variable mapping>__":: + Distribution specific variable mapping. + See dracut/modules.d/10i18n/README for a detailed description. + +*i18n_default_font=*"__<fontname>__":: + The font <fontname> to install, if not specified otherwise. + Default is "eurlatgr". + +*i18n_install_all=*"__{yes|no}__":: + Install everything regardless of generic or host-only mode (default=no). + +*reproducible=*"__{yes|no}__":: + Create reproducible images (default=no). + +*noimageifnotneeded=*"__{yes|no}__":: + Do not create an image in host-only mode, if no kernel driver is needed + and no /etc/cmdline/*.conf will be generated into the initramfs + (default=no). + +*loginstall=*"__<directory>__":: + Log all files installed from the host to _<directory>_. + +*uefi=*"__{yes|no}__":: + Instead of creating an initramfs image, dracut will create an UEFI + executable, which can be executed by an UEFI BIOS (default=no). + The default output filename is + _<EFI>/EFI/Linux/linux-$kernel$-<MACHINE_ID>-<BUILD_ID>.efi_. + <EFI> might be _/efi_, _/boot_ or _/boot/efi_ depending on where the ESP + partition is mounted. The <BUILD_ID> is taken from BUILD_ID in + _/usr/lib/os-release_ or if it exists _/etc/os-release_ and is left out, + if BUILD_ID is non-existent or empty. + +*machine_id=*"__{yes|no}__":: + Affects the default output filename of the UEFI executable, including the + <MACHINE_ID> part (default=yes). + +*uefi_stub=*"_<file>_":: + Specifies the UEFI stub loader, which will load the attached kernel, + initramfs and kernel command line and boots the kernel. The default is + _/lib/systemd/boot/efi/linux<EFI-MACHINE-TYPE-NAME>.efi.stub_. + +*uefi_splash_image=*"_<file>_":: + Specifies the UEFI stub loader's splash image. Requires bitmap (**.bmp**) + image format. + +*uefi_secureboot_cert=*"_<file>_", *uefi_secureboot_key=*"_<file>_":: + Specifies a certificate and corresponding key, which are used to sign the + created UEFI executable. + Requires both certificate and key need to be specified and _sbsign_ to be + installed. + +*uefi_secureboot_engine=*"_parameter_":: + Specifies an engine to use when signing the created UEFI executable. E.g. "pkcs11" + +*kernel_image=*"_<file>_":: + Specifies the kernel image, which to include in the UEFI executable. The + default is _/lib/modules/<KERNEL-VERSION>/vmlinuz_ or + _/boot/vmlinuz-<KERNEL-VERSION>_. + +*sbat=*"__parameters__":: + Specifies the SBAT parameters, which to include in the UEFI executable. By default + the default SBAT string added is "sbat,1,SBAT Version,sbat,1, + https://github.com/rhboot/shim/blob/main/SBAT.md". + +*enhanced_cpio=*"__{yes|no}__":: + Attempt to use the dracut-cpio binary, which optimizes archive creation for + copy-on-write filesystems (default=no). + When specified, initramfs archives are also padded to ensure optimal data + alignment for extent sharing. To retain reflink data deduplication benefits, + this should be used alongside the **compress="cat"** and **do_strip="no"** + parameters, with initramfs source files, **tmpdir** staging area and + destination all on the same copy-on-write capable filesystem. + +*parallel=*"__{yes|no}__":: + If set to _yes_, try to execute tasks in parallel (currently only supported + for _--regenerate-all_). + +Files +----- +_/etc/dracut.conf_:: + Old configuration file. You better use your own file in + _/etc/dracut.conf.d/_. + +_/etc/dracut.conf.d/_:: + Any _/etc/dracut.conf.d/*.conf_ file can override the values in + _/etc/dracut.conf_. The configuration files are read in alphanumerical + order. + +AUTHOR +------ +Harald Hoyer + +See Also +-------- +*dracut*(8) *dracut.cmdline*(7) + diff --git a/man/dracut.modules.7.asc b/man/dracut.modules.7.asc new file mode 100644 index 0000000..c1e8624 --- /dev/null +++ b/man/dracut.modules.7.asc @@ -0,0 +1,307 @@ +DRACUT.MODULES(7) +================= +:doctype: manpage +:man source: dracut +:man manual: dracut +:man version: {version} + +NAME +---- +dracut.modules - dracut modules + +DESCRIPTION +----------- + +dracut uses a modular system to build and extend the initramfs image. All +modules are located in _/usr/lib/dracut/modules.d_ or in _<git-src>/modules.d_. +The most basic dracut module is _99base_. In _99base_ the initial shell script +init is defined, which gets run by the kernel after initramfs loading. Although +you can replace init with your own version of _99base_, this is not encouraged. +Instead you should use, if possible, the hooks of dracut. All hooks, and the +point of time in which they are executed, are described in <<stages>>. + +The main script, which creates the initramfs is dracut itself. It parses all +arguments and sets up the directory, in which everything is installed. It then +executes all check, install, installkernel scripts found in the modules, which +are to be processed. After everything is installed, the install directory is +archived and compressed to the final initramfs image. All helper functions used +by check, install and installkernel are found in in the file _dracut-functions_. +These shell functions are available to all module installer (install, +installkernel) scripts, without the need to source _dracut-functions_. + +A module can check the preconditions for install and installkernel with the +check script. Also dependencies can be expressed with check. If a module passed +check, install and installkernel will be called to install all of the necessary +files for the module. To split between kernel and non-kernel parts of the +installation, all kernel module related parts have to be in installkernel. All +other files found in a module directory are module specific and mostly are hook +scripts and udev rules. + + +[[stages]] +== Boot Process Stages + +dracut modules can insert custom script at various points, to control the boot +process. +These hooks are plain directories containing shell scripts ending with ".sh", +which are sourced by init. +Common used functions are in _dracut-lib.sh_, which can be sourced by any script. + +=== Hook: cmdline + +The _cmdline_ hook is a place to insert scripts to parse the kernel command line +and prepare the later actions, like setting up udev rules and configuration +files. + +In this hook the most important environment variable is defined: root. The +second one is rootok, which indicates, that a module claimed to be able to parse +the root defined. So for example, **root=**__iscsi:....__ will be claimed by the +iscsi dracut module, which then sets rootok. + +=== Hook: pre-udev + +This hook is executed right after the cmdline hook and a check if root and +rootok were set. Here modules can take action with the final root, and before +udev has been run. + +=== Start Udev + +Now udev is started and the logging for udev is setup. + +=== Hook: pre-trigger + +In this hook, you can set udev environment variables with **udevadm control +--property=KEY=_value_** or control the further execution of udev with +udevadm. + +=== Trigger Udev + +udev is triggered by calling udevadm trigger, which sends add events for all +devices and subsystems. + +=== Main Loop + +In the main loop of dracut loops until udev has settled and +all scripts in _initqueue/finished_ returned true. +In this loop there are three hooks, where scripts can be inserted +by calling /sbin/initqueue. + +==== Initqueue + +This hook gets executed every time a script is inserted here, regardless of the +udev state. + +==== Initqueue settled + +This hook (initqueue/settled) gets executed every time udev has settled. + +==== Initqueue timeout + +This hook (initqueue/timeout) gets executed, when the main loop counter becomes +half of the rd.retry counter. + +==== Initqueue online + +This hook (initqueue/online) gets executed whenever a network interface comes online +(that is, once it is up and configured by the configured network module). + +==== Initqueue finished + +This hook (initqueue/finished) is called after udev has settled and +if all scripts herein return 0 the main loop will be ended. +Arbitrary scripts can be added here, to loop in the +initqueue until something happens, which a dracut module wants to wait for. + +=== Hook: pre-mount + +Before the root device is mounted all scripts in the hook pre-mount are +executed. In some cases (e.g. NFS) the real root device is already mounted, +though. + +=== Hook: mount + +This hook is mainly to mount the real root device. + +=== Hook: pre-pivot + +This hook is called before cleanup hook, This is a good place for +actions other than cleanups which need to be called before pivot. + +=== Hook: cleanup + +This hook is the last hook and is called before init finally switches root to +the real root device. This is a good place to clean up and kill processes not +needed anymore. + + +=== Cleanup and switch_root + +Init (or systemd) kills all udev processes, cleans up the environment, +sets up the arguments for the real init process and finally calls switch_root. +switch_root removes the whole filesystem hierarchy of the initramfs, +chroot()s to the real root device and calls /sbin/init with the specified +arguments. + +To ensure all files in the initramfs hierarchy can be removed, all processes +still running from the initramfs should not have any open file descriptors left. + +== Network Infrastructure + +FIXME + +== Writing a Module + +A simple example module is _90kernel-modules_, which modprobes a kernel module +after udev has settled and the basic device drivers have been loaded. + +All module installation information is in the file module-setup.sh. + +First we create a check() function, which just exits with 0 indicating that this +module should be included by default. + +check(): +---- +return 0 +---- + +Then we create the install() function, which installs a cmdline hook with +priority number 20 called _parse-insmodpost.sh_. It also installs the +_insmodpost.sh_ script in _/sbin_. + +install(): +---- +inst_hook cmdline 20 "$moddir/parse-insmodpost.sh" +inst_simple "$moddir/insmodpost.sh" /sbin/insmodpost.sh +---- + +The _parse-instmodpost.sh_ parses the kernel command line for a argument +rd.driver.post, blacklists the module from being autoloaded and installs the +hook _insmodpost.sh_ in the _initqueue/settled_. + +_parse-insmodpost.sh_: +---- +for p in $(getargs rd.driver.post=); do + echo "blacklist $p" >> /etc/modprobe.d/initramfsblacklist.conf + _do_insmodpost=1 +done + +[ -n "$_do_insmodpost" ] && /sbin/initqueue --settled --unique --onetime /sbin/insmodpost.sh +unset _do_insmodpost + +---- + +_insmodpost.sh_, which is called in the _initqueue/settled_ hook will just +modprobe the kernel modules specified in all rd.driver.post kernel command line +parameters. It runs after udev has settled and is only called once (--onetime). + +_insmodpost.sh_: +---- +. /lib/dracut-lib.sh + +for p in $(getargs rd.driver.post=); do + modprobe $p +done + +---- + + +=== module-setup.sh: check() + +_check()_ is called by dracut to evaluate the inclusion of a dracut module in +the initramfs. + +$hostonly:: If the $hostonly variable is set, then the module check() function +should be in "hostonly" mode, which means, that the check() should only return +0, if the module is really needed to boot this specific host. + +check() should return with: + +0:: Include the dracut module in the initramfs. + +1:: Do not include the dracut module. The requirements are not fulfilled +(missing tools, etc.) + +255:: Only include the dracut module, if another module requires it or if +explicitly specified in the config file or on the argument list. + + +=== module-setup.sh: depends() + +The function depends() should echo all other dracut module names the module +depends on. + +=== module-setup.sh: cmdline() + +This function should print the kernel command line options needed to boot the +current machine setup. It should start with a space and should not print a +newline. + +=== module-setup.sh: install() + +The install() function is called to install everything non-kernel related. +To install binaries, scripts, and other files, you can use the functions +mentioned in <<creation>>. + +To address a file in the current module directory, use the variable "$moddir". + +=== module-setup.sh: installkernel() + +In installkernel() all kernel related files should be installed. You can use all +of the functions mentioned in <<creation>> to install files. + +=== [[creation]]Creation Functions + +==== inst_multiple [-o] <file> [ <file> ...] + +installs multiple binaries and files. If executables are specified without a +path, dracut will search the path PATH=/usr/sbin:/sbin:/usr/bin:/bin for the +binary. If the option "-o" is given as the first parameter, a missing file does +not lead to an error. + +==== inst <src> [<dst>] + +installs _one_ file <src> either to the same place in the initramfs or to an +optional <dst>. inst with more than two arguments is treated the same as +inst_multiple, all arguments are treated as files to install and none as +install destinations. + +==== inst_hook <hookdir> <prio> <src> + +installs an executable/script <src> in the dracut hook <hookdir> with priority +<prio>. + +==== inst_rules <udevrule> [ <udevrule> ...] + +installs one or more udev rules. Non-existent udev rules are reported, but do +not let dracut fail. + +==== instmods <kernelmodule> [ <kernelmodule> ... ] + +instmods should be used only in the installkernel() function. + +instmods installs one or more kernel modules in the initramfs. <kernelmodule> +can also be a whole subsystem, if prefixed with a "=", like "=drivers/net/team". + +instmods will not install the kernel module, if $hostonly is set and the kernel +module is not currently needed by any /sys/*...*/uevent MODALIAS. +To install a kernel module regardless of the hostonly mode use the form: +---- +hostonly='' instmods <kernelmodule> +---- + +=== Initramfs Functions + +FIXME + + +=== Network Modules + +FIXME + +AUTHOR +------ +Harald Hoyer + +SEE ALSO +-------- +*dracut*(8) diff --git a/man/dracut.usage.asc b/man/dracut.usage.asc new file mode 100644 index 0000000..b83abf6 --- /dev/null +++ b/man/dracut.usage.asc @@ -0,0 +1,519 @@ +To create a initramfs image, the most simple command is: +---- +# dracut +---- + +This will generate a general purpose initramfs image, with all possible +functionality resulting of the combination of the installed dracut modules and +system tools. The image, depending on bootloader specification, can be +_/efi/_++<machine-id>++_/_++<kernel-version>++_/initrd_, +_/boot/_++<machine-id>++_/_++<kernel-version>++_/initrd_, +_/boot/efi/_++<machine-id>++_/_++<kernel-version>++_/initrd_, +_/lib/modules/_++<kernel-version>++_/initrd_ or +_/boot/initramfs-_++<kernel-version>++_.img_ and contains the kernel modules of +the currently active kernel with version _++<kernel-version>++_. + +If the initramfs image already exists, dracut will display an error message, and +to overwrite the existing image, you have to use the --force option. +---- +# dracut --force +---- + +If you want to specify another filename for the resulting image you would issue +a command like: +---- +# dracut foobar.img +---- + +To generate an image for a specific kernel version, the command would be: +---- +# dracut foobar.img 2.6.40-1.rc5.f20 +---- + +A shortcut to generate the image at the default location for a specific kernel +version is: +---- +# dracut --kver 2.6.40-1.rc5.f20 +---- + +If you want to create lighter, smaller initramfs images, you may want to specify +the --hostonly or -H option. Using this option, the resulting image will +contain only those dracut modules, kernel modules and filesystems, which are +needed to boot this specific machine. This has the drawback, that you can't put +the disk on another controller or machine, and that you can't switch to another +root filesystem, without recreating the initramfs image. The usage of the +--hostonly option is only for experts and you will have to keep the broken +pieces. At least keep a copy of a general purpose image (and corresponding +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. +---- +# lsinitrd | less +---- + +To display the contents of a file in the initramfs also use the lsinitrd tool: +---- +# lsinitrd -f /etc/ld.so.conf +include ld.so.conf.d/*.conf +---- + +=== Adding dracut Modules +Some dracut modules are turned off by default and have to be activated manually. +You can do this by adding the dracut modules to the configuration file +_/etc/dracut.conf_ or _/etc/dracut.conf.d/myconf.conf_. See *dracut.conf*(5). +You can also add dracut modules on the command line +by using the -a or --add option: +---- +# dracut --add module initramfs-module.img +---- + +To see a list of available dracut modules, use the --list-modules option: +---- +# dracut --list-modules +---- + +=== Omitting dracut Modules +Sometimes you don't want a dracut module to be included for reasons of speed, +size or functionality. To do this, either specify the omit_dracutmodules +variable in the _dracut.conf_ or _/etc/dracut.conf.d/myconf.conf_ configuration +file (see *dracut.conf*(5)), or use the -o or --omit option +on the command line: +---- +# dracut -o "multipath lvm" no-multipath-lvm.img +---- + +=== 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 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 +---- + +=== Boot parameters +An initramfs generated without the "hostonly" mode, does not contain any system +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 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 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*(7). + +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 +---- + +==== Specifying the root Device +This is the only option dracut really needs to boot from your root partition. +Because your root partition can live in various environments, there are a lot of +formats for the root= option. The most basic one is root=_++<path to device +node>++_: +---- +root=/dev/sda2 +---- + +Because device node names can change, dependent on the drive ordering, you are +encouraged to use the filesystem identifier (UUID) or filesystem label (LABEL) +to specify your root partition: +---- +root=UUID=19e9dda3-5a38-484d-a9b0-fa6b067d0331 +---- + +or + +---- +root=LABEL=myrootpartitionlabel +---- + +To see all UUIDs or LABELs on your system, do: +---- +# ls -l /dev/disk/by-uuid +---- + +or + +---- +# ls -l /dev/disk/by-label +---- + +If your root partition is on the network see <<NetworkBoot>>. + +==== Keyboard Settings +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 line would contain: +---- +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 +a modern init system, like systemd. + +==== Blacklisting Kernel Modules +Sometimes it is required to prevent the automatic kernel module loading of a +specific kernel module. To do this, just add rd.driver.blacklist=_++<kernel +module name>++_, with _++<kernel module name>++_ not containing the _.ko_ +suffix, to the kernel command line. For example: +---- +rd.driver.blacklist=mptsas rd.driver.blacklist=nouveau +---- + +The option can be specified multiple times on the kernel command line. + +==== Speeding up the Boot Process +If you want to speed up the boot process, you can specify as much information +for dracut on the kernel command as possible. For example, you can tell dracut, +that you root partition is not on a LVM volume or not on a raid partition, or +that it lives inside a specific crypto LUKS encrypted volume. By default, dracut +searches everywhere. A typical dracut kernel command line for a plain primary or +logical partition would contain: +---- +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. + +Of course, you could also omit the dracut modules in the initramfs creation +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 +---- +# 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. + + +---- +# mkdir -p rd.live.overlay/etc/cmdline.d +# mkdir -p rd.live.overlay/etc/conf.d +# 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/ +rd.live.overlay/ +`-- etc + |-- cmdline.d + | `-- mycmdline.conf + `-- conf.d + `-- testvar.conf + +# dracut --include rd.live.overlay / initramfs-rd.live.overlay.img +---- + +This will put the contents of the rd.live.overlay directory into the root of the +initramfs image. + +The --install option let you specify several files, which will get installed in +the initramfs image at the same location, as they are present on initramfs +creation time. + + +---- +# dracut --install 'strace fsck.ext4 ssh' initramfs-dbg.img +---- + +This will create an initramfs with the strace, fsck.ext4 and ssh executables, +together with the libraries needed to start those. The --install option can be +specified multiple times. + + +[[NetworkBoot]] +=== Network Boot + +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. + +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>>. + +==== Reducing the Image Size + +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 +initramfs image. + +For example for a NFS image, you would do: + + +---- +# dracut -m "nfs network base" initramfs-nfs-only.img +---- + +Then you would boot from this image with your target machine and reduce the size +once more by creating it on the target machine with the --host-only option: + + +---- +# dracut -m "nfs network base" --host-only initramfs-nfs-host-only.img +---- + +This will reduce the size of the initramfs image significantly. + + +== Troubleshooting + +If the boot process does not succeed, you have several options to debug the +situation. + +[[identifying-your-problem-area]] +=== Identifying your problem area +. Remove ''rhgb'' and ''quiet'' from the kernel command line +. Add ''rd.shell'' to the kernel command line. This will present a shell should +dracut be unable to locate your root device +. 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. + +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 + +[[all-bug-reports]] +==== All bug reports +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. _/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 +the file /run/initramfs/rdsosreport.txt. +* If you use a dracut configuration file, please include _/etc/dracut.conf_ and +all files in _/etc/dracut.conf.d/*.conf_ + +[[network-root-device-related-problems]] +==== Network root device related problems +This section details information to include when experiencing problems on a +system whose root device is located on a network attached volume (e.g. iSCSI, +NFS or NBD). As well as the information from <<all-bug-reports>>, include the +following information: + + +* Please include the output of ++ +---- +# /sbin/ifup <interfacename> +# ip addr show +---- + +[[debugging-dracut]] +=== Debugging dracut + + +[[configure-a-serial-console]] +==== Configure a serial console + +Successfully debugging dracut will require some form of console +logging during the system boot. This section documents configuring a +serial console connection to record boot messages. + +. First, enable serial console output for both the kernel and the bootloader. +. Open the file _/boot/grub2/grub.cfg_ for editing. Below the line ''timeout=5'', add +the following: ++ +---- +serial --unit=0 --speed=9600 +terminal --timeout=5 serial console +---- ++ +. Also in _/boot/grub2/grub.cfg_, add the following boot arguments to the ''kernel'' +line: ++ +---- +console=tty0 console=ttyS0,9600 +---- ++ +. When finished, the _/boot/grub2/grub.cfg_ file should look similar to the example +below. ++ +---- +default=0 +timeout=5 +serial --unit=0 --speed=9600 +terminal --timeout=5 serial console +title Fedora (2.6.29.5-191.fc11.x86_64) + root (hd0,0) + kernel /vmlinuz-2.6.29.5-191.fc11.x86_64 ro root=/dev/mapper/vg_uc1-lv_root console=tty0 console=ttyS0,9600 + initrd /dracut-2.6.29.5-191.fc11.x86_64.img +---- ++ +. More detailed information on how to configure the kernel for console output +can be found at +http://www.faqs.org/docs/Linux-HOWTO/Remote-Serial-Console-HOWTO.html#CONFIGURE-KERNEL. +. Redirecting non-interactive output ++ +-- +NOTE: 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 +---- +-- + +[[using-the-dracut-shell]] +==== Using the dracut shell + +dracut offers a shell for interactive debugging in the event dracut fails to +locate your root filesystem. To enable the shell: + +. Add the boot parameter ''rd.shell'' to your bootloader configuration file +(e.g. _/boot/grub2/grub.cfg_) +. Remove the boot arguments ''rhgb'' and ''quiet'' ++ +A sample _/boot/grub2/grub.cfg_ bootloader configuration file is listed below. ++ +---- +default=0 +timeout=5 +serial --unit=0 --speed=9600 +terminal --timeout=5 serial console +title Fedora (2.6.29.5-191.fc11.x86_64) + root (hd0,0) + kernel /vmlinuz-2.6.29.5-191.fc11.x86_64 ro root=/dev/mapper/vg_uc1-lv_root console=tty0 rd.shell + 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. ++ +---- +No root device found +Dropping to debug shell. + +# +---- ++ +. 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 +From the dracut debug shell, you can manually perform the task of locating and +preparing your root volume for boot. The required steps will depend on how your +root volume is configured. Common scenarios include: + +* 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.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 +symlink _/dev/root_ which points to the file system. For example, the following +example demonstrates accessing and booting a root volume that is an encrypted +LVM Logical volume. + +. Inspect your partitions using parted ++ +---- +# parted /dev/sda -s p +Model: ATA HTS541060G9AT00 (scsi) +Disk /dev/sda: 60.0GB +Sector size (logical/physical): 512B/512B +Partition Table: msdos +Number Start End Size Type File system Flags +1 32.3kB 10.8GB 107MB primary ext4 boot +2 10.8GB 55.6GB 44.7GB logical lvm +---- ++ +. You recall that your root volume was a LVM logical volume. Scan and activate +any logical volumes. ++ +---- +# lvm vgscan +# lvm vgchange -ay +---- ++ +. You should see any logical volumes now using the command blkid: ++ +---- +# blkid +/dev/sda1: UUID="3de247f3-5de4-4a44-afc5-1fe179750cf7" TYPE="ext4" +/dev/sda2: UUID="Ek4dQw-cOtq-5MJu-OGRF-xz5k-O2l8-wdDj0I" TYPE="LVM2_member" +/dev/mapper/linux-root: UUID="def0269e-424b-4752-acf3-1077bf96ad2c" TYPE="crypto_LUKS" +/dev/mapper/linux-home: UUID="c69127c1-f153-4ea2-b58e-4cbfa9257c5e" TYPE="ext4" +/dev/mapper/linux-swap: UUID="47b4d329-975c-4c08-b218-f9c9bf3635f1" TYPE="swap" +---- ++ +. From the output above, you recall that your root volume exists on an encrypted +block device. Following the guidance disk encryption guidance from the +Installation Guide, you unlock your encrypted root volume. ++ +---- +# UUID=$(cryptsetup luksUUID /dev/mapper/linux-root) +# cryptsetup luksOpen /dev/mapper/linux-root luks-$UUID +Enter passphrase for /dev/mapper/linux-root: +Key slot 0 unlocked. +---- ++ +. Next, make a symbolic link to the unlocked root volume ++ +---- +# ln -s /dev/mapper/luks-$UUID /dev/root +---- ++ +. With the root volume available, you may continue booting the system by exiting +the dracut shell ++ +---- +# exit +---- + +[[additional-dracut-boot-parameters]] +==== Additional dracut boot parameters +For more debugging options, see *dracut.cmdline*(7). + + +[[debugging-dracut-on-shutdown]] +==== Debugging dracut on shutdown + +To debug the shutdown sequence on systemd systems, you can _rd.break_ +on _pre-shutdown_ or _shutdown_. + +To do this from an already booted system: +---- +# mkdir -p /run/initramfs/etc/cmdline.d +# 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. + diff --git a/man/lsinitrd.1.asc b/man/lsinitrd.1.asc new file mode 100644 index 0000000..05f63e3 --- /dev/null +++ b/man/lsinitrd.1.asc @@ -0,0 +1,71 @@ +LSINITRD(1) +========= +:doctype: manpage +:man source: dracut +:man manual: dracut +:man version: {version} + +NAME +---- +lsinitrd - tool to show the contents of an initramfs image + +SYNOPSIS +-------- +*lsinitrd* ['OPTION...'] [<image> [<filename> [<filename> [...] ]]] + +*lsinitrd* ['OPTION...'] -k <kernel version> + +DESCRIPTION +----------- +lsinitrd shows the contents of an initramfs image. if <image> is omitted, then +lsinitrd uses the default image _/efi/<machine-id>/<kernel-version>/initrd_, +_/boot/<machine-id>/<kernel-version>/initrd_, +_/boot/efi/<machine-id>/<kernel-version>/initrd_, +_/lib/modules/<kernel-version>/initrd_ or +_/boot/initramfs-<kernel-version>.img_. + +OPTIONS +------- +**-h, --help**:: + print a help message and exit. + +**-s, --size**:: + sort the contents of the initramfs by size. + +**-f, --file** _<filename>_:: + print the contents of <filename>. + +**-k, --kver** _<kernel version>_:: + inspect the initramfs of <kernel version>. + +**-m, --mod**:: + list dracut modules included of the initramfs image. + +**--unpack**:: + unpack the initramfs to the current directory, instead of displaying the contents. + If optional filenames are given, will only unpack specified files, else the whole image will be unpacked. + Won't unpack anything from early cpio part. + +**--unpackearly**:: + unpack the early microcode initramfs to the current directory, instead of displaying the contents. + Same as --unpack, but only unpack files from early cpio part. + +**-v, --verbose**:: + unpack verbosely + +AVAILABILITY +------------ +The lsinitrd command is part of the dracut package and is available from +link:$$https://github.com/dracutdevs/dracut$$[https://github.com/dracutdevs/dracut] + +AUTHORS +------- +Harald Hoyer + +Amerigo Wang + +Nikoli + +SEE ALSO +-------- +*dracut*(8) |