查找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