查找initramfs资料的时候看到了这篇文章 ramfs-rootfs-initramfs.txt,

ramfs, ramdisk, tmpfs, rootfs 文件系统:

  1.   ramfs内存文件系统,没有硬件存储,仅存放在内存;

  2.   ramdisk 生成一种块设备, 并且是固定大小, 文件系统需被挂在到系统;

  3.   tmpfs有大小限制,可以写回到swap space,是ramfs升级版本;

  4.    rootfs 是特殊ramfs, tmpfs, 2.6版本后支持, 不可卸载就像不能kill init进程一样。 可以通过修改CONFIG_TMPFS 使用tmpfs, 如需设置为ramfs, 强制"rootfstype=ramfs"

initramfs与initrd的区别:

 1. initrd 单个文件, initramfs 则可以链接到内核镜像

 2. initrd文件格式 a gzipped filesystem image , 是需要驱动的, initramfs则是 a gzipped cpio archive 内核支持:

 3. initrd使用的启动进程为initrd, 提供后调用内核;initramfs没有使用overmount 后调用内核init完成加载;

 4. 切换到 其他的root设备, initrd使用 pivot_root之后卸载ramdisk, initramfs, 删除现有rootfs空间数据

find -xdev / -exec rm '{}' ';'

overmount rootfs

cd /newmount; mount --move . /; chroot .

构建initramfs工具包:

1. The “klibc” package

2. uClibc (http://www.uclibc.org)

3. busybox (http://www.busybox.net)

因为glibc 编译出来的包太大了

使用cpio而不是tar的原因:

CPIO得到更好内核支持。

后记

本篇作者:  Rob Landley rob@landley.net  网站

关于 initramfs 还有三篇文章。 包括介绍,使用,编程实践部分。