Linux内核移植过程之根文件系统

本文介绍了Linux内核移植中的根文件系统概念,根文件系统作为加载其他文件系统的基础,包含系统启动所需的关键文件和目录,如init、etc/fstab等。在移植过程中,需要配置内核支持特定文件系统,如yaffs,并用工具创建文件系统映像。根文件系统在启动时通过挂载/dev/ram0和执行/Linuxrc进行初始化,然后执行init进程。Linux支持多种文件系统,如Ext2、Ext3,根文件系统是内核启动后挂载的第一个,若挂载失败,系统无法启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要是对下面文章的摘要修改,以此解释为何移植过程中使用的工具以及操作的含义与作用,主要是黑体部分

文章:http://baike.so.com/doc/353340-374271.html

"什么是文件系统",文件系统是对一个存储设备上的数据和元数据进行组织的机制。这种机制有利于用户和操作系统的交互。

      尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具。这对 Linux 来说尤其如此,这是因为在 UNIX 传统中,它使用文件 I/O 机制管理硬件设备和数据文件————所以既然将设备看成文件,那对设备的操作就需要支持文件操作的工具,这就对应移植时候的Busybox,它集成了各种类似linux中shell命令(执行脚本).

      根文件系统之所以在前面加一个"根",说明它是加载其它文件系统的"根",既然是根的话,那么如果没有这个根,其它的文件系统也就没有办法进行加载的。它包含系统引导和使其他文件系统得以挂载(mount)所必要的文件。根文件系统包括Linux启动时所必须的目录和关键性的文件,例如Linux启动时都需要有init目录下的相关文件,在 Linux挂载分区时Linux一定会找/etc/fstab这个挂载文件等,根文件系统中还包括了许多的应用程序bin目录等,任何包括这些Linux 系统启动所必须的文件都可以成为根文件系统。————我们在内核配置中先设置内核支持yaffs文件系统,而后手动建立文件夹root.2.6.30.4以及内部各种目录及其相应内部文件(此时只是一个文件夹而已),其中就有包括init目录,etc目录及其下的fstab文件等,最后利用制作工具将文件夹(如mkyaffs2image工具等)制作成yaffs格式的文件系统映像.

     那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/linuxrc.等其执行完后。切换根目录,再挂载具体的根文件系统.根文件系统执行完之后,也就是到了Start_kernel()函数的最后,执行init的进程,也就第一个用户进程。对系统进行各种初始化的操作。如果要弄明白这里的过程的话,可要好好的看看Linux内核源码了。

     在 Linux 中将一个文件系统与一个存储设备关联起来的过程称为挂载(mount)。根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。我们要明白文件系统和内核是完全独立的两个部分。嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误。Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。成功之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。

    在内核源码目录结构中:

Fs目录:存放Linux支持的文件系统代码和各种类型的文件操作代码。每一个子目录支持一个文件系统,包括我们常用的文件系统类型:Ext2、Ext3、Ext4、 Proc、Fat和Nfs。其中Ext3文件系统对应的就是/fs/ext3目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值