《【北京迅为】itop-3568 开发板文件系统构建手册v1.0.pdf》学习笔记
什么是文件系统
在计算机中,文件系统(file system)是命名文件及放置文件的逻辑存储和恢复的系统。DOS、Windows、OS/2、Macintosh和UNIX-based操作系统都有文件系统,在此系统中文件被放置在分等级的(树状)结构中的某一处。文件被放置进目录(Windows中的文件夹)或子目录,在树状结构中你希望的位置中。
文件系统指定命名文件的规则。这些规则包括文件名的字符数最大量,哪种字符可以使用,以及某些系统中文件名后缀可以有多长。文件系统还包括通过目录结构找到文件的指定路径的格式。
文件系统是软件系统的一部分,它的存在使得应用可以方便的使用抽象命名的数据对象和大小可变的空间。——百度百科
简单来说,文件系统可以理解为组织和管理文件的一个系统,文件系统的类型有很多种,如 fat32,ext2,ntfs 等。
文件系统目录介绍
Linux 文件系统中存在以下几个目录
/bin 存放 Linux 命令(二进制文件)该目录存放的命令可以被普通用户和 root 使用,如:ls、cp、mv、cat 等
/sbin 该目录存放的一般为系统命令,只有系统管理员(root)才可以使用,例如 fdisk、reboot、insmod 等
/dev 存放设备文件,包括系统中所有的外部设备
/etc 存放配置文件
/lib 存放库文件,包含 /bin 和 /sbin 中文件所依赖的共享库文件
/home 存放普通用户的主目录
/root 系统管理员主目录,访问需要 root 权限
/usr 存放用户程序和文件,usr 是 unix shared resources(共享资源) 的缩写
/var 存放系统的变量文件,如系统日志、系统临时文件等
/proc 作为 proc 文件系统的挂节点,存放系统进程的一些信息
/mnt 用于临时挂载的目录,通常为空
/tmp 存放临时文件,通常为空(系统重启会清空数据)
什么是根文件系统
根文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。我们要明白文件系统和内核是完全独立的两个部分。在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误。
Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。成功之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。——百度百科
Linux 系统上用 “/” 来表示根,一般称为根目录。根目录下有很多目录,这些目录都挂载在根目录上,这些目录及根目录一起构成了 Linux 的根文件系统。
根文件系统制作工具
制作根文件系统的工具有很多,busybox 是简单的一种,此外,还有 buildroot 和 yocto 工具,甚至可以直接使用发行版本的 Linux,如 Ubuntu 和 Debian。下面是各个根文件系统的优缺点:
根文件系统名 | 优点 | 缺点 |
---|---|---|
busybox | 体积小,移植方便 | 功能不全,无包管理工具 |
buildroot | 构建简单,能构建完整镜像 | 无包管理工具 |
yocto | 支持的框架较多,能构建完整镜像 | 配置复杂,不易于新手操作 |
Ubuntu | 构建方便,支持包管理工具,自带图形界面 | 文件系统较大 |
Debian | 构建方便,支持包管理工具,自带图形界面 | 文件系统较大 |
busybox
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的shell。
——百度百科
buildroot
Buildroot 是 Linux 平台上一个开源的嵌入式 Linux 系统自动构建框架。整个 Buildroot 是由 Makefile 脚本和 Kconfig 配置文件构成的。你可以通过 Buildroot 配置编译出一个完整的可以直接烧写到机器上可运行的 Linux 系统软件。
——原文
工作后,我第一个遇到的根文件系统制作工具就是 buildroot,但到今天才知道 buildroot 到底是什么😂。
yocto
Yocto Project™是一个开源的协作软件,提供模板、工具和方法帮你创建定制的 Linux 系统和嵌入式产品,而无需关心硬件体系。适合嵌入式Linux开发人员使用。极大地简化你的开发过程,因为你不用再从头裁剪一个完整的Linux发布版本,后者通常包括许多你并不需要的软件。
Yocto项目通过Poky来构建一个系统,并提供了一个开放源码的开发环境,针对目标为ARM,MIPS,PowerPC和x86架构,而平台包括x86-64和模拟器。
你可以使用Yocto项目的组件来设计,开发,构建,调试,仿真和对使用了Linux, X windows系统, 基于移动设备的GNOME应用框架和Qt框架的完整的软件堆栈进行测试.——百度百科
Yocto Project 由一个个单独的包(meta)来维护,每个包负责不同的功能。
感觉单单从文字介绍很难真正的认知这些根文件系统制作工具,所以我就点到为止。另外 Ubuntu 和 Debian 这两个发行版本就不用介绍了,我想大家或多或少有接触到。