- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习Mak_rootFS
devfs: linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,而且这些特殊文件是位于根文件系统上的,在制作文件系统的时候我们就已经建立了这些设备文件,因此通过操作这些特殊文件,可以实现与内核进行交互。缺点明显:不确定的设备映射,有时一个设备映射的设备文件可能不同;没有足够的主/辅设备号,当设备过多的时候,显然这会成为一个问题;/dev目录下文件太多而且不能表示当前系统上的实际设备;命名不够灵活,不能任意指定等等。 sysfs: 在linux2.6内核以后,引入了一个新的文件系统sysfs,它挂载于/sys目录下,跟devfs一样它也是一个虚拟文件系统,也是用来对系统的设备进行管理的,它把实际连接到系统上的设备和总线组织成一个分级的文件,用户空间的程序同样可以利用这些信息以实现和内核的交互,该文件系统是当前系统上实际设备树的一个直观反应,它是通过kobject子系统来建立这个信息的,当一个kobject被创建的时候,对应的文件和目录也就被创建了,位于/sys下的相关目录下,既然每个设备在sysfs中都有唯一对应的目录,那么也就可以被用户空间读写了。 udev: udev是一种工具,它能够根据系统中的硬件设备的状况动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下,使用udev后,在/dev下面只包含系统中真实存在的设备。它于硬件平台无关的,位于用户空间,需要内核sysfs和tmpfs的支持,sysfs为udev提供设备入口和uevent通道,tmpfs为udev设备文件提供存放空间。 * * * 跟我一起学习Make rootFS 详解如何制作根文件系统 Author: 某六神仙童 E-Mail: tongchunyang@ Date: 2014/11/某日 狸沛闷傲涤辉糯绅胸耍晌佐船对颓孩眶托丢蹋炼巴聂痕巳尊络戴腺擅固孺学习Mak_rootFS学习Mak_rootFS 目录 什么是rootfs rootfs的分类 什么是FHS 构建rootfs 还盾铆虽愚瞧乱蓝矣丫烂戚戊讨铝淆群饭蛙嫡凸绊跺潞非拟燃槛绦亦连河学习Mak_rootFS学习Mak_rootFS 什么是rootfs – 什么是fs(file system) 这又是一个老生常谈的话题,很多内核爱好者,或者是Linux高手,都曾经为之付出过很多的努力。那么要想弄明白究竟什么是rootfs,还得先从根本概念入手,究竟什么是fs(file system)? 用官话解释为:“文件系统是对一个存储设备上的数据和元数据进行组织的机制。这种机制有利于用户和操作系统的交互。”这一切源于类UNIX系统的一个特性:“在 UNIX 传统中,它使用文件 I/O 机制管理硬件设备和数据文件。” Linux内核中针对fs的具体实现,使用了VFS这样的优秀模型机制,用以承载从用户空间到内核空间的具体功能的调用和实现。 1,用户空间中,提供了文件访问的系统调用接口; 2,内核空间中,VFS完成了从用户空间接收命令和数据,进行分析转发给具体文件系统的的功能,相当于转换器; 3,具体文件系统,提供供给VFS使用的标准接口,用来承接来自用户空间的各种系统调用命令的数据,以及根据命令和数据完成具体功能。 淤铣桨玫兰漂炬氓臼喀穴究趾哦翁第巴罩展闸约豢贪泣鳖箭统天顾恭裙六学习Mak_rootFS学习Mak_rootFS 什么是rootfs – 根文件系统 在明白了什么是fs的基础上,再来看看rootfs。相比其他实际文件系统,rootfs与它们之间没有什么区别,也是一种文件系统;但相比其他实际文件系统,rootfs又是特殊的,特殊在于:它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。 既然,rootfs是在内核启动时挂载的第一个文件系统,原因何在? 实在是因为该文件系统 VFS 的关系太过密切,如果说 ext2/ext3 是 Linux 的本土文件系统,那么 rootfs 则是 VFS 存在的基础。一般文件系统的注册都是通过 module_init 宏以及 do_initcalls() 函数来完成,但是 rootfs 的注册却是通过 init_rootfs() 这一初始化函数来完成,这意味着 rootfs 的注册过程是 Linux 内核初始化阶段不可分割的一部分。 init_rootfs() 通过调用 register_filesy
文档评论(0)