根文件系统(rootfs)理解

说明

  • 最近学习了使用qemu搭建ARM vexpress环境,对rootfs有了一些大致理解并且对rootfs的构建做了些测试验证,特记录下。

简介

  • 文件系统有两种意思:
  1. 文件管理系统,例如:ext2、ext3、vfat、ntfs等文件管理和组织结构。
  2. 一定规模文件的集合,分别起不同作用的文件按照一定结构组合形成系统。
  • 显而易见根文件系统不是类似于ntfs等文件管理系统,它属于第2种意思,根表示设备启动后该文件系统将被mount到根目录即路径’/'下。
  • 根文件系统不是一种文件管理系统,但是根文件系统中的文件管理需要使用到一种文件管理系统。

重要性

  • 根文件系统是内核启动时所mount的第一个文件系统,并且它是系统加载其它文件系统的“根”,如果没有这个根,其它文件系统也就无法加载。
  • 内核中的内存文件系统将会mount到根文件系统中,并且系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
  • 尽管内核是linux的核心,但文件是用户与操作系统交互的主要接口,这对linux来说尤其如此,因为在UNIX传统中,它使用文件I/O机制管理硬件设备和数据文件。
  • 重要组成部分:
  1. init进程必须运行在根文件系统上,init是其它所有进程的父进程,保证了应用层功能的扩展性。
  2. 根文件系统提供了根目录“/”,以及各种不同功能的文件,其中比较重要的有:一些系统初始化脚本,shell环境,内核伪文件系统文件等。
  • 如果缺少根文件系统,linux内核无法运行,会直接退出。

根文件系统组成和创建

  • 根文件系统只是一系列文件的集合,用户可以遵循组织结构去手动创建这些文件。
  • 常见组成:
/etc/:存储重要的配置文件。
/bin/:存储常用且开机时必须用到的执行文件。
/sbin/:存储着开机过程中所需的系统执行文件。
/lib/:存储/bin/及/sbin/的执行文件所需的链接库,以及Linux的内核模块。
/dev/:存储设备文件。
注:五大目录必须存储在根文件系统上,缺一不可。
...
  • 根文件中缺失一些文件或者少做一些设置,并不会导致系统运行不了,只会导致一些功能无法使用。
  • 根文件系统中的目录和文件还是挺多的,一些配置和init程序以及命令行程序也是挺复杂的,如果手动创建根文件系统将会非常麻烦,在嵌入式领域,人们常用busybox来自动创建根文件系统,再添加自己所需的文件。
  • 文件和目录结构准备好后,选择哪种文件管理系统(ext3,jffs2,Cramfs等),只要内核支持,都是可以正常运行的,只不过文件管理系统各有特点,需要根据硬件和环境选择合适的。

你可能感兴趣的:(#,Linux,内核知识)