dracut 维基     https://dracut.wiki.kernel.org/index.php/Main_Page

http://www.360doc.com/content/13/0428/09/12139495_281449877.shtml

dracut  官方手册  https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html#dracutkernel7

https://www.kernel.org/pub/linux/utils/boot/dracut/

基本介绍

dracut是一个事件驱动的 initramfs 基础设施。dracut(工具)被用来通过拷贝工具和文件,从一个已经安装的系统创建一个 initramfs 镜像,并将镜像与dracut框架结合在一起。通常发现在 /usr/lib/dracut/modules.d/.

不像已经存在的initramfs框架,dracut的框架尝试有尽可能更少的硬编码进入initramfs。initramfs在生命中有一个基本的目标:获取已经挂载的rootfs,以致我们能够过渡到真正的rootfs。这是所有驱动装置的可用性。因此,取代脚本硬编码去做各种事情,dracut的 initramfs 依赖 udev 去创建符号链接到设备节点,接着,当rootfs的设备节点出现的时候,它被挂载和根切换到rootfs设备。 这个有助于保持在initramfs里要求的时间尽可能的少,以致一些事情,如5s钟启动,作为一个initramfs的存在结果不是不可能的。

在dracut中,大部分的initramfs生成器功能由一群生成模块提供,这些模块是被主要的dracut工具采购,来安装特定的功能进入initramfs。他们存在于这些模块的子目录。和使用由dracut-functions提供的功能去做他们的工作。

dracut作为新一代的 initramfs 系统,和前一代的initramfs系统的 mkinitrd 的不同点在于, dracut设计上就考虑到了映像尺寸的问题,尽量避免硬编码,以提高生成的 cpio 映像载入内存的速度。实际上,由于initramfs的唯一作用就是挂载rootfs(因此不需要把一堆无用的比如 plymouth 等都装进去),它主要依赖 udev 去获取 rootfs 的设备节点,一旦 rootfs 节点出现则立刻切换过去。按照官方维基的说法:5秒启动不是梦。另外它采用了模块化的方式,使用者可自由在%{_libdir}/dracut/modules.d 下创建他需要的特殊模块,可扩展性很强。最后它的使用方式和 mkinitrd 非常接近,迁移成本较低。

dracut 用于制作initrd启动镜像文件, dracut-network会为镜像内添加nfs等网络支持.

centos 7.2

版本: dracut-033-359.el7.x86_64

dracut-config-rescue-033-360.el7_2.x86_64

dracut-033-360.el7_2.x86_64

dracut-network-033-360.el7_2.x86_64

centos 6

dracut-004-32.el6.noarch

dracut-kernel-004-32.el6.noarch

命令行工具:

dracutcreate initial ramdisk images for preloading modules。  dracut创建虚拟磁盘映像,提供给内核,预加载块设备模块(例如 IDE,SCSI或者RAID),通过加载这些设备模块访问根文件系统。

dracut [OPTION...] [ []]

创建一个带有kernel版本号,为kernel使用的 initramfs 镜像。如果 被省略,那么使用实际运行的内核版本号。如果 被省略或为空,那么缺省的位置/boot/initramfs-.img被使用

在启动时,内核解包这个存档进入内存,挂载和使用它作为初始化根文件系统。所有发现的根设备发生在这个早期的用户空间。

完整的内核命令行选项,详看 dracut.cmdline(7).

如果被降到一个紧急shell,当启动你的 initramfs时,文件 /run/initramfs/rdsosreport.txt被创建,这个文件能被安全(手动挂载)的成为一个分区(通用 /启动)或一个USB盘.  通过在内核命令添加 rd.debug产生附件的调试信息。 /run/initramfs/rdsosreport.txt包含所有的日志和一些工具的输出。这个文件应该被联系到关于dracut问题的任何报告。

lsinitrdtool to show the contents of an initramfs image。if is omitted, then lsinitrd uses the default image/boot///initrdor/boot/initramfs-.img.

lsinitrd [OPTION...] [ [ [ [...] ]]]

lsinitrd [OPTION...] -k

lsinitrd显示一个 initramfs 镜像的内容。 如果 被省略,那么 lsinitrd用 这个缺省的镜像   /boot///initrd或者 /boot/initramfs-.img

OPTIONS

-h, --help           print a help message and exit.

-s, --size            sort the contents of the initramfs by size.

-f, --file        print the contents of .

-k, --kver   inspect the initramfs of .

mkinitrdis a compat wrapper, which calls dracut to generate an initramfs   调用 dracut 来产生 initramfs。

mkinitrd [OPTION...] []

mkinitrd 通过调用 dracut 去创建一个 initramfs 带有版本的镜像 镜像。

注意: 如果需要生成一个更细粒度控制的镜像,“dracut”应该被直接调用。

OPTIONS

--versionprint info about the version

-v, --verbose         increase verbosity level

-f, --force          overwrite existing initramfs file.

*--image-version       append the kernel version to the target image -.

--with=      add the kernel module to the initramfs.

--preload=     preload the kernel module in the initramfs before any other kernel modules are loaded. This can be used to ensure a certain device naming, which should in theory be avoided and the use of symbolic links in /dev is encouraged.

--nocompress       do not compress the resulting image.

--help            print a help message and exit.

配置

/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.

服务

dracut-cmdline.service

dracut-initqueue.service

dracut-mount.service

dracut-pre-mount.service

dracut-pre-pivot.service

dracut-pre-trigger.service

dracut-pre-udev.service

dracut-shutdown.service

日志

/var/log/dracut.log      initramfs 镜像创建的日志文件

/tmp/dracut.log            initramfs 镜像创建的日志文件, 如果 /var/log/dracut.log 没有被写。

参考:

PXE启动服务器及客户端镜像制作  http://blog.csdn.net/beck_chen/article/details/52672324

Logo

更多推荐