一、根文件系统简介
根文件系统也叫做rootfs,通俗点来说,根文件系统就像是windows下的一个磁盘,里面存放很多的目录或者文件夹。在这个目录里面存放很多文件,这些文件都是Linux运行所必须要有的。比如库、常用的软件和命令、配置文件等等。在网上根文件系统的解释为:
根文件系统首先是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
百度百科上说:内核代码映像文件保存在根文件系统中,但是在嵌入式Linux并没有将内核代码镜像保存在根文件系统中,而是保存在其他地方,比如NAND Flash指定存储地址、EMMC专用分区中。
根文件系统是 Linux 内核启动以后挂载(mount)的第一个文件系统,然后从根文件系统中读取初始化脚本,比如 rcS, inittab 等。根文件系统和 Linux 内核是分开的,单独的 Linux 内核是没法正常工作的,必须要搭配根文件系统。如果不提供根文件系统, Linux 内核在启动的时候就会提示内核崩溃(Kernel panic)的提示。
根文件系统非常重要,它是文件系统的根,在Linux下,一切皆文件,没有这个根,其他的软件、我门常用的ls、cp命令等等就无法正常工作。
在ubuntu下的根文件系统(ubuntu下的更稳健系统的目录名字为‘/’)

在根文件目录下有很多的目录和文件,这些都是ubuntu系统所必须的,但是其中有很多的目录和文件在嵌入式Linux中是用不到的,所以下面介绍一些常用的子目录:
1、/bin目录
看到“bin”大家应该能想到 bin 文件, bin 文件就是可执行文件。所以此目录下存放着系统需要的可执行文件,一般都是一些命令,比如 ls、 mv 等命令。此目录下的命令所有的客户都可以使用。
2、/dev目录
dev 是 device 的缩写,所以此目录下的文件都是和设备有关的,此目录下的文件都是设备
文件。在 Linux 下一切皆文件,即使是硬件设备,也是以文件的形式存在的,比如
/dev/ttymxc0 (I.MX6ULL 根目录会有此文件)就表示 I.MX6ULL 的串口 0,我们要想通过串口 0
发送或者接收数据就要操作文件/dev/ttymxc0,通过对文件/dev/ttymxc0 的读写操作来实现串口
0 的数据收发。
3、/etc目录
此目录下存放着各种配置文件,大家可以进入 Ubuntu 的 etc 目录看一下,里面的配置文件
非常多!但是在嵌入式 Linux 下此目录会很简洁。
4、 /lib 目录
lib 是 library 的简称,也就是库的意思,因此此目录下存放着 Linux 所必须的库文件。这些
库文件是共享库,命令和用户编写的应用程序要使用这些库文件。
5、 /mnt 目录
临时挂载目录,一般是空目录,可以在此目录下创建空的子目录,比如/mnt/sd、 /mnt/usb,
这样就可以将 SD 卡或者 U 盘挂载到/mnt/sd 或者/mnt/usb 目录中。
6、 /proc 目录
此目录一般是空的,当 Linux 系统启动以后会将此目录作为 proc 文件系统的挂载点, proc
是个虚拟文件系统,没有实际的存储设备。 proc 里面的文件都是临时存在的,一般用来存储系
统运行信息文件。
7、 /usr 目录
要注意, usr 不是 user 的缩写,而是 Unix Software Resource 的缩写,也就是 Unix 操作系统软件资源目录。这里有个小知识点,那就是 Linux 一般被称为类 Unix 操作系统,苹果的 MacOS
也是类 Unix 操作系统。关于 Linux 和 Unix 操作系统的渊源大家可以直接在网上找 Linux 的发展历史来看。既然是软件资源目录,因此/usr 目录下也存放着很多软件,一般系统安装完成以后此目录占用的空间最多。
8、 /var 目录
此目录存放一些可以改变的数据。
9、 /sbin 目录
此目录页用户存放一些可执行文件,但是此目录下的文件或者说命令只有管理员才能使用,
主要用户系统管理。
10、 /sys 目录
系统启动以后此目录作为 sysfs 文件系统的挂载点, sysfs 是一个类似于 proc 文件系统的特殊文件系统, sysfs 也是基于 ram 的文件系统,也就是说它也没有实际的存储设备。此目录是系
统设备管理的重要目录,此目录通过一定的组织结构向用户提供详细的内核数据结构信息。
11、 /opt
可选的文件、软件存放区,由用户选择将哪些文件或软件放到此目录中。关于 Linux 的根目录就介绍到这里,接下来的构建根文件系统就是研究如何创建上面这些子目录以及子目录中的文件。
二、BusyBox构建根文件系统
1、BusyBox介绍
"忙碌的盒子",上面说过,根文件系统就是一堆的文件和文件夹,很多命令的文件,软件的文件,我们使用时不希望一个一个从网上下载,所以BusyBox就是一个相当于一个软件,把这些我们常用的命令,软件等文件都收集起来,在进行打包,它集成了Linux的许多工具和命令。
BusyBox 可以在其官网下载,官网地址为: https://busybox.net/
2、编译BusyBox构建根文件系统
一般在Linux驱动开发的时候都通过nfs挂载根文件系统,一维这样比较方便调试,不需要一维修改一点小BUG而重新烧写一边系统,我们只需要将根文件系统挂载到nfs,然后修改后在通过网络总结修改刚才修改过的文件就可以。
注:前提条件是nfs网络搭建已经搭建完成
在ubuntu的nfs目录下新建一个目录,存放根文件系统

最低0.47元/天 解锁文章
根文件系统构建&spm=1001.2101.3001.5002&articleId=139373398&d=1&t=3&u=2e56f991f5414ffaab2bcc25001799c3)
1000

被折叠的 条评论
为什么被折叠?



