打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
linux的initrd机制和initramfs机制之概述
userphoto

2017.09.26

关注
我们知道linux的一般启动过程是uboot引导内核、内核挂载文件系统,文件系统挂载完毕之后开始执行初试化的用户程序,
这里文件系统是怎么被挂载的呢?今天就来详细的剖析一下。


我们在uboot的环境变量里经常看到root=/dev/mtdblock3这样的字样,我们知道这个是用来指定我们最后要挂载的文件系统
的位置的。但是问题出现了,/dev/mtdblock3是指文件系统当中的一个文件,但是在挂载文件系统之前根本还没有目录和文件
和文件的概念,典型的先有鸡还是先有蛋的问题。挂载文件系统需要目录文件,有目录文件的前提是要挂载了文件系统。这样
肯定是不行的。所以我们就要现提供一只“鸡”,就是文件系统,让我们能找到/dev/mtdblock3这个文件,然后再去挂载其上面
的文件系统。那么又有问题了,我们是通过什么方法和步骤提供的那只“鸡”(文件系统)的?这就是下面要讲的initrd机制和
initramfs机制



这两个机制的原理和作用有很大的相似:
1. 在挂载真正的文件系统之前,它们会挂载一个基于内存的虚拟文件系统,这个文件系统只是起个过度的作用,为了挂载
真正的文件系统(root=/dev/mtdblock3指定位置的文件系统)做铺垫的。

2. 在挂载虚拟文件系统后都会执行一个可执行文件,initrd机制会执行虚拟文件系统根目录下的linuxrc或init文件文件,initramfs会
执行虚拟文件系统根目录下的init文件。

3. 使用这两种机制还有一个好处:现在文件系统可以存在多种介质上,每一种介质都有相应的驱动,如果把这些驱动全部编进
内核,势必造成内核十分庞大。引入了这两种机制后,我们可以把各种驱动编译成模块,然后在启动的时候根据检测到的硬件
来插入模块驱动。插入模块驱动这个动作就是在上面的linuxrc或init可执行文件中。插入模块之后,就有了操作硬件的驱动,
然后就可以进行真正的文件系统挂载了


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
解压vmlinuz和解压initrd(initramfs)
OS linux - uboot 引导 kernel
6.5 使用initramfs
Linux Kernel 2:用户空间的初始化
linux initrd 制作及使用
解析linux根文件系统的挂载过程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服