| Linux根文件系统比较 initrd vs initramfs |
| 类别:网文精粹 |
| boot loader装入kernel, 然后kernel需要执行/sbin/init, 读取 5uG^`H@X 这个文件就必须先mount根文件系统, 早期是通过启动时的root= @{RhO|UR 参数告诉内核根文件系统在哪个设备上, 随着硬件和技术的发展, OcMB)1uh\ 现在根文件系统可能位于一个网络存储如NFS上, 可能由于RAID而 m{ani/bt 散布于多个设备上, 可能位于一个加密设备上需要提供用户名和密码, .?CaU 这时root=参数就显得不够了. 为了应付这种局面, 先后出现两种 ]r!|@AWrQ\ 机制来作为boot loader装载kernel到真正的/sbin/init执行这个启动 $X ;OK 过程的桥梁: initrd和initramfs, 两者有类似的地方, 比如都是 CR.d3!&28 由内核执行其上的某个程序(initrd是/linuxrc, initramfs是/init), 6 Q7MAP M 由这个程序决定加载什么驱动以及如何装载根文件系统. 下面一点 &k|EG![ 笔记总结initrd的缺点和initramfs的优点. 0LC]%x+" initrd: KXx;~HtO ram disk是一个基于ram的块设备,因此它占据了一块固定的内存, ?>ZrdfTwz, 而且事先要使用特定的工具比如mke2fs格式化,还需要一个文件系统 Na] Z%#~ 驱动来读写其上的文件。 3,i`Fq Qa 如果这个disk上的空间没有用完,这些未用的内存就浪费掉了,并且 jQz^)8)B 这个disk的空间固定导致容量有限,要想装入更多的文件就需要重新 i)cG 格式化。 gjK: a@{ 由于Linux的块设备缓冲特性, ram disk上的数据被拷贝到page cache 8Dxg6> (对于文件数据)和dentry cache(对于目录项), 这个也导致内存浪费. GRL42xp'*D initramfs: A ?~4Pe 最初的想法是Linus提出的: 把cache当作文件系统装载. 他在一个叫 N8r+Q%ov ramfs的cache实现上加了一层很薄的封装, 其它内核开发人员编写了 {az LtTh 一个改进版tmpfs, 这个文件系统上的数据可以写出到交换分区, 而且 c&RiUU7 可以设定一个tmpfs装载点的最大尺寸以免耗尽内存. initramfs就是 q _;#EV tmpfs的一个应用. :^QV,d<C 优点: 0j#$Swa (1)tmpfs随着其中数据的增减自动增减容量. =o" sBVj (2)在tmpfs和page cache/dentry cache之间没有重复数据. P!~&Ei (3)tmpfs重复利用了Linux caching的代码, 因此几乎没有增加内核 k |_ >I 尺寸, 而caching的代码已经经过良好测试, 所以tmpfs的代码质量 <l9qhqHv& 也有保证. 9EZh~tdV[ (4)不需要额外的文件系统驱动. '&xRb* 另外, initrd机制被设计为旧的"root="机制的前端, 而非其替代物, %} Ob~m>P 它假设真正的根设备是一个块设备, 而且也假设了自己不是真正的根设备, MdNV3:[\ 这样不便将NFS等作为根文件系统, 最后/linuxrc不是以PID=1执行的, 因为 f['pHR%l2$ 1这个进程ID是给/sbin/init保留的. initrd机制找到真正的根设备后将 [Hp"a^~r| 其设备号写入/proc/sys/kernel/real-root-dev, 然后控制转移到内核由 m`ab5<%Gn 其装载根文件系统并启动/sbin/init. EabZ7zFoN initramfs则去掉了上述假设, 而且/init以PID=1执行, 由init装载根文件 rU1{a" { 系统并用exec转到真正的/sbin/init, 这样也导致一个更为干净漂亮的设计. |
- B2B搜索“联姻”..
- 2008-9-11
- HOLTEK推出H..
- 2008-9-11
- 关于ISPRO校验..
- 2008-9-11
- 利用适配板实现免制..
- 2008-9-11
- GSMSMS模块客..
- 2008-9-11
- ISPro下载型编..
- 2008-9-11
- C语言之stati..
- 2008-9-11
- 完美结合语音芯片与..
- 2008-9-11
- 又做一工具:ATm..
- 2008-9-11
- QE128的DEM..
- 2008-9-11
- 特别推荐一款高性能..
- 2008-9-11
- SATA硬盘使用解..
- 2008-9-16
- EPoX主板几种前..
- 2008-9-16
- 反其道行之降低电压..
- 2008-9-16
- 基于ATM8051..
- 2008-9-16
- THB6016H测..
- 2008-9-16
- 显示器黑屏的解决办..
- 2008-9-16
- 你会买网络服务器吗..
- 2008-9-16
- 酷漫教你制作只带一..
- 2008-9-16
- 酷漫破解网页右健锁定
- 2008-9-16



