ramfs, rootfs and initramfs

查找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 还有三篇文章。 包括介绍,使用,编程实践部分。

Be First to Comment

发表回复