Linux Dracut

tmpfs

tmpfs是虚拟内存文件系统,它不同于传统的用块设备形式来实现的ramdisk,也不同于针对物理内存的ramfs,tmpfs可以使用物理内存,也可以使用交换分区。在Linux内核中,虚拟内存资源由物理内存(RAM)和交换分区组成,这些资源是由内核中的虚拟内存子系统来负责分配和管理。tmpfs就是和虚拟内存子系统来”打交道”的,它向虚拟内存子系统请求页来存储文件,它同Linux的其它请求页的部分一样,不知道分配给自己的页是在内存中还是在交换分区中。tmpfs同ramfs一样,其大小也不是固定的,而是随着所需要的空间而动态的增减。使用tmpfs,首先你编译内核时得选择”虚拟内存文件系统支持(Virtual memory filesystem support)” ,然后就可以加载tmpfs文件系统了。

initramfs

All 2.6 Linux kernels contain a gzipped “cpio” format archive, which is extracted into rootfs when the kernel boots up. After extracting, the kernel checks to see if rootfs contains a file “init”, and if so it executes it as PID 1.

If found, this init process is responsible for bringing the system the rest of the way up, including locating and mounting the real root device (if any). If rootfs does not contain an init program after the embedded cpio archive is extracted into it, the kernel will fall through to the older code to locate and mount a root partition, then exec some variant of /sbin/init out of that.

initramfs是在一个叫ramfs的cache实现上加了一层很薄的封装,其他内核开发人员编写了一个改进版tmpfs,这个文件系统上的数据可以写出到交换分区,而且可以设定一个tmpfs装载点的最大尺寸以免耗尽内存。initramfs就是tmpfs的一个应用。initramfs与initrd类似,也是将image初始化完毕且存在于ram中的。可以选择压缩。

dracut

Create initial ramdisk images for preloading modules

Synopsis

dracut [OPTION]…

Description

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.

Options

-f, –force overwrite existing initramfs file.

Useage

在CentOS 5.X / RHEL 5.X中,可以用mkinitrd命令来创建初始化内存盘文件

mkinitrd -f -v /boot/initrd-$(uname -r).img $(uname -r)

在CentOS 6.X / RHEL 6.X中,则用dracut命令来创建初始化内存盘文件

  • 给当前的系统版本创建初始化内存盘

dracut -f

  • 给特定的内核版本重建初始化内存盘文件

dracut -f initramfs-2.x.xx-xx.el6.x86_64.img 2.x.xx-xx.el6.x86_64

Referance

http://linux.die.net/man/8/dracut

https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt

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

Loading Disqus comments...
Table of Contents