initrd.img 干了什么
来源:互联网 发布:网络被限制怎么破解 编辑:程序博客网 时间:2024/04/27 20:02
我也是一边学一边把我简单理解的东西拿出来和大家分享,如有错误还希望大家指出。initrd.img 里的东西我还没有吃透。不过我觉得也没关系毕竟我写的是学习笔记而不是教程,有些解释不透的东西大家还希望大家给点思路。现在有些看不懂的东西先跳过,后面会慢慢研究的。
上篇文章(什么是 initrd.img) 提到 initrd.img有两种。一种是2.4版本内核以及之前的内核使用的,从2.5开始是另外一种initrd.img。2.6版的initrd.img的解压方式上文已经介绍了。2.4版本使用的initrd.img也需要先用zip方式解压得到 initrd文件,不过之后就不是cpio再进行解压了。这里获得到的initrd文件已经是个标准的image文件了(这个文件我们称为image-initrd),在linux下需要进行挂在,然后可以直接访问。这两种格式的initrd不只是打包方式不同,内部文件也有不同。下面介绍下2种文件的区别。
image-initrd
(1) boot loader(一般大家常用的是grub,关于它的介绍可以到网上搜索)把 initrd.img 初始化成一个设备 /dev/intrd。接着boot loader 把内核以及/dev/initrd的内容加载到内存。
(2) 在内核初始化过程中,内核把 /dev/initrd 设备的内容解压缩并拷贝到 /dev/ram0 设备上。
(3) 内核以可读写的方式把 /dev/ram0 设备挂载为原始的根文件系统。
(4) 如果 /dev/ram0 被指定为真正的根文件系统,那么内核不会执行(5)、(6)、(7)的操作,因为这下操作是为了帮内核加载最终的根文件系统做的工作。
(5) 执行 initrd 上的 /linuxrc 文件,linuxrc 通常是一个脚本文件,负责加载内核访问根文件系统必须的驱动, 以及加载根文件系统。
(6) /linuxrc 执行完毕,真正的根文件系统被挂载。
(7) 如果真正的根文件系统存在 /initrd 目录,那么 /dev/ram0 将从 / 移动到 /initrd。否则如果 /initrd 目录不存在, /dev/ram0 将被卸载。
(8) 在真正的根文件系统上进行正常启动过程 ,执行 /sbin/init。
linux2.4内核的 initrd 的执行是作为内核启动的一个中间阶段,也就是说 initrd 的 /linuxrc执行以后,内核会继续执行初始化代码。2.6 内核同时支持 image-initrd 和 cpip-initrd。而且 image-initrd处理流程也是这样的。
cpio-initrd
(1) boot loader 把内核以及 initrd 文件加载到内存的特定位置
(2) 内核判断initrd的文件格式,如果是cpio格式。
(3) 将initrd的内容释放到/rootfs中。(rootfs本身也是一个基于内存的文件系统。这样就省掉了ramdisk的挂载、卸载等)
(4) 执行initrd中的/init文件,执行到这一点,内核的工作全部结束,完全交给/init文件处理。也就是其实到了最后一步,内核就已经完成了自己所有的工作,直接移交给initrd 的/init。
cpio-initrd和image-initrd处理流程示意图
图片来自ibm的一个培训网站。
这里是粗略的讨论到了initrd.img的启动过程,正要开始啃 cpio-initrd 中 /init 到底干了些什么。
- initrd.img 干了什么
- AfxBeginThread()干了什么?
- 最近干了什么
- SWIG干了什么
- initrd.img
- DispatchMessage到底干了什么
- _mm_set1_epi8的干了什么?
- 昨天我干了什么
- 2014年干了什么
- SparkContext干了些什么
- 我都干了什么
- 这几天干了什么
- 制作initrd.img文件
- 什么是 initrd.img
- initrd.img处理
- initrd.img文件
- 什么是 initrd.img
- 什么是 initrd.img
- 找到一个简单构建Web服务器的绿色软件
- test11
- JavaScript中Array(数组)的属性和方法
- test
- extern用法详解(from http://blog.chinaunix.net/u1/40028/showart_461654.html)
- initrd.img 干了什么
- 2009-02-18读书记录:视频教程phplectures——基础
- 12 very simple,basic but useful function source in Flex
- softICE 下断点
- test on local
- 2009年的第一场雪
- 23、24、25、26股票涨跌功能,JSON格式、红绿色实时显示股票价格的、ToolTip提示框
- C#调用C++ DLL令人头痛的两件事
- 图解:春晚魔术的秘密