种豆资源网

当前位置:首页 > 百科 > 百科综合 / 正文

initramfs

(2021-06-25 22:00:01) 百科综合

initramfs

initramfs是在ramfs的cache实现上加了一层很薄的封装,其他核心开发人员编写了一个改进版tmpfs,这个档案系统上的数据可以写出到交换分区,而且可以设定一个tmpfs装载点的最大尺寸以免耗尽记忆体。initramfs就是tmpfs的一个套用。

套用简介

最初的想法是Linus提出的: 把cache当作档案系统装载。
他在一个叫ramfs的cache实现上加了一层很薄的封装,其他核心开发人员编写了一个改进版tmpfs,这个档案系统上的数据可以写出到交换分区,而且可以设定一个tmpfs装载点的最大尺寸以免耗尽记忆体。initramfs就是tmpfs的一个套用。

套用优点

(1)tmpfs随着其中数据的增减自动增减容量.
(2)在tmpfs和page cache/dentry cache之间没有重複数据.
(3)tmpfs重複利用了Linux caching的代码, 因此几乎没有增加核心尺寸, 而caching的代码已经经过良好测试, 所以tmpfs的代码质量也有保证.
(4)不需要额外的档案系统驱动.
另外, initrd机制被设计为旧的"root="机制的前端,而非其替代物,它假设真正的根设备是一个块设备, 而且也假设了自己不是真正的根设备,这样不便将NFS等作为根档案系统。最后/linuxrc不是以PID=1执行的, 因为1这个进程ID是给/sbin/init保留的。 initrd机制找到真正的根设备后将其设备号写入/proc/sys/kernel/real-root-dev, 然后控制转移到核心由其装载根档案系统并启动/sbin/init。
initramfs则去掉了上述假设, 而且/init以PID=1执行, 由init装载根档案系统并用exec转到真正的/sbin/init, 这样也导致一个更为乾净漂亮的设计。

执行方式

生成initramfs镜像命令
若镜像根目录为/initrd,执行下面命令在当前用户主资料夹中生成myinitramfs.gz镜像。
cd /initrd
find .|cpio -o -H newc|gzip>~/myinitramfs.gz
生成的镜像档案是gzip压缩过的。

标 签

搜索
随机推荐

Powered By 种豆资源网||