目录

  • 一、简介
    • 常用目录简介
      • 1、/bin目录
      • 2、/sbin目录
      • 3、/dev目录
      • 4、/etc目录
      • 5、/lib目录
      • 6、/home目录
      • 7、/root目录
      • 8、/usr目录
      • 9、/var目录
      • 10、/proc目录
      • 11、/mnt目录
      • 12、/tmp目录
  • 二、常用根文件系统构建工具简介
    • 1、BusyBox工具
    • 2、Buildroot工具
    • 3、Yocto工具

一、简介

 根文件系统一般也叫做 rootfs,那么什么叫根文件系统?看到“文件系统”这四个字,很多人,包括我第一反应就是 FATFS、FAT、EXT4、YAFFS 和 NTFS 等这样的文件系统。在这里,根文件系统并不是 FATFS 这样的文件系统代码,EXT4 这样的文件系统代码属于 Linux 内核的一部分。Linux 中的根文件系统更像是一个文件夹或者叫做目录(在我看来就是一个文件夹,只不过是特殊的文件夹),在这个目录里面会有很多的子目录。根目录下和子目录中会有很多的文件,这些文件是 Linux 运行所必须的,比如库、常用的软件和命令、设备文件、配置文件等等。

 根文件系统首先是内核启动时所 mount 的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。

 展开来细说就是,根文件系统首先是一种文件系统,该文件系统具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如 rcS,inittab)和服务加载到内存中去运行。我们要明白文件系统和内核是完全独立的两个部分。总之:一套 linux 体系,只有内核本身是不能工作的,必须要 rootfs(上的 etc 目录下的配置文件、/bin、/sbin等目录下的 shell 命令,还有/lib 目录下的库文件等)相配合才能工作。

 百度百科上说内核代码镜像文件保存在根文件系统中,但是我们嵌入式 Linux 并没有将内核代码镜像保存在根文件系统中,而是保存到了其他地方。比如 NAND Flash 的指定存储地址、EMMC 专用分区中。根文件系统是 Linux 内核启动以后挂载(mount)的第一个文件系统,然后从根文件系统中读取初始化脚本,比如 rcS,inittab 等。根文件系统和 Linux 内核是分开的,单独的 Linux 内核是没法正常工作的,必须要搭配根文件系统。如果不提供根文件系统,Linux 内核在启动的时候就会提示内核崩溃(Kernel panic)的提示,这个在 37.2.4 小节已经说过了。根文件系统的这个“根”字就说明了这个文件系统的重要性,它是其他文件系统的根,没有这个“根”,其他的文件系统或者软件就别想工作。比如我们常用的 ls、mv、ifconfig 等命令其实就是一个个小软件,只是这些软件没有图形界面,而且需要输入命令来运行。这些小软件就保存在根文件系统中,这些小软件是怎么来的呢?这个就是我们本章教程的目的,教大家来构建自己的根文件系统,这个根文件系统是满足 Linux 运行的最小根文件系统,后续我们可以根据自己的实际工作需求不断的去填充这个最小根文件系统,最终使其成为一个相对完善的根文件系统。

我们使用命令“cd /”进入根目录如下所示:

liefyuan@ubuntu:/$ ls
bin    dev   initrd.img      lib32   lost+found  opt   run   srv  usr      vmlinuz.old
boot   etc   initrd.img.old  lib64   media       proc  sbin  sys  var
cdrom  home  lib             libx32  mnt         root  snap  tmp  vmlinuz

常用目录简介

1、/bin目录

该目录下存放所有用户都可以使用的、基本的命令,这些命令在挂接其它文件系统之前就可以使用,所以/bin 目录必须和根文件系统在同一个分区中。/bin 目录下常用的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,mknod,test 等,我们在利用 Busybox 制作根文件系统时,在生成的 bin目录下,可以看到一些可执行的文件,也就是可用的一些命令。

2、/sbin目录

 该目录下存放系统命令,即只有管理员能够使用的命令,系统命令还可以存放在/usr/sbin,/usr/ local/sbin目录下,/sbin 目录中存放的是基本的系统命令,它们用于启动系统,修复系统等,与/bin 目录相似,在挂接其他文件系统之前就可以使用/sbin,所以/sbin 目录必须和根文件系统在同一个分区中。/sbin 目录下常用的命令有:shutdown,reboot,fdisk,fsck 等,本地用户自己安装的系统命令放在/usr/local/sbin 目录下。

3、/dev目录

 该目录下存放的是设备文件,设备文件是 Linux 中特有的文件类型,在 Linux 系统下,以文件的方式访问各种设备,即通过读写某个设备文件操作某个具体硬件。比如通过“dev/ttymxc0”文件可以操作串口 0,通过“/dev/mtdblock1”可以访问 MTD 设备的第 2 个分区。

4、/etc目录

 该目录下存放着各种配置文件,对于 PC 上的 Linux 系统,/etc 目录下的文件和目录非常多,这些目录文件是可选的,它们依赖于系统中所拥有的应用程序,依赖于这些程序是否需要配置文件。在嵌入式系统中,这些内容可以大为精减。

5、/lib目录

 该目录下存放共享库和可加载(驱动程序),共享库用于启动系统。运行根文件系统中的可执行程序,比如:/bin /sbin 目录下的程序。

6、/home目录

 用户目录,它是可选的,对于每个普通用户,在/home 目录下都有一个以用户名命名的子目录,里面存放用户相关的配置文件。

7、/root目录

 根用户的目录,与此对应,普通用户的目录是/home 下的某个子目录。

8、/usr目录

 /usr 目录的内容可以存在另一个分区中,在系统启动后再挂接到根文件系统中的/usr 目录下。里面存放的是共享、只读的程序和数据,这表明/usr 目录下的内容可以在多个主机间共享,这些主要也符合 FHS 标准的。/usr 中的文件应该是只读的,其他主机相关的,可变的文件应该保存在其他目录下,比如/var。/usr目录在嵌入式中可以精减。

9、/var目录

 与/usr 目录相反,/var 目录中存放可变的数据,比如 spool 目录(mail,news),log 文件,临时文件。

10、/proc目录

 这是一个空目录,常作为 proc 文件系统的挂接点,proc 文件系统是个虚拟的文件系统,它没有实际的存储设备,里面的目录,文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件控制系统。

11、/mnt目录

 用于临时挂载某个文件系统的挂接点,通常是空目录,也可以在里面创建一引起空的子目录,比如/mnt/cdram /mnt/hda1 。用来临时挂载光盘、硬盘。

12、/tmp目录

 用于存放临时文件,通常是空目录,一些需要生成临时文件的程序用到的/tmp 目录下,所以/tmp 目录必须存在并可以访问。

二、常用根文件系统构建工具简介

1、BusyBox工具

 BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目的是在软盘上创建一个可引导的 GNU/Linux 系统,做安装和救急盘。BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat 和 echo 命令等等,还包含了一些更大、更复杂的工具,例 grep、find、mount 以及 telnet 命令。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux的许多工具和命令,也包含了 Android 系统自带的 shell。

 busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,busybox有非常广的应用,另外,大多数linux发行版的安装程序中都有busybox的身影,安装linux的时候案ctrl+alt+F2就能得到一个控制台,而这个控制台中的所有命令都是指向busybox的链接.

2、Buildroot工具

3、Yocto工具

嵌入式Linux--根文件系统(一)简介相关推荐

  1. 采用busybox的嵌入式Linux根文件系统的的制作方法

    在嵌入式Linux操作系统越中文件系统作为操作系统的重要组成部分,用于控制对数据文件及设备的存取,提供对文件和目录的分层组织形式,数据缓冲以及对文件存取权限的控制.根文件系统一直是Linux系统不可或 ...

  2. 嵌入式Linux根文件系统制作

    嵌入式Linux根文件系统制作 一.根文件系统简介 根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统而言它还是内核启动时所挂载(mount)的 ...

  3. 构建基本的嵌入式Linux根文件系统

    构建基本的嵌入式Linux根文件系统 其实在去年8月份我做系统移植时就构建好了一个可以用的根文件系统,但是那时是跟着别人的<Linux全线移植文档>做的.有些东西我也不清楚,只是跟着做,做 ...

  4. 制作嵌入式Linux根文件系统

    文章目录 1. 根文件系统布局 2. 使用BusyBox生成二进制工具 2-1. 获取BusyBox源码 2-2. 配置BusyBox 2-2-1. 选择编译静态库 2-2-2. 选择交叉编译工具链 ...

  5. TQ210 —— 嵌入式Linux根文件系统的设计与实现

    嵌入式Linux根文件系统的设计与实现 1.Linux文件系统基本概念 文件系统类型:FAT32.NTFS.EXT2. EXT3. JFFS2. YAFFS2. NFS Linux根文件系统目录结构: ...

  6. 嵌入式linux根文件系统ubifs,什么是嵌入式的根文件?嵌入式的根文件系统有哪些?...

    什么是嵌入式的根文件呢?嵌入式跟文件系统就是一种特殊的文件系统,那么根文件系统和普通的文件系统有什么区别呢?由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括Linux启动时所必须 ...

  7. 嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载

    嵌入式Linux系统由三部分组成: uboot.kernel.根文件系统, 还是这张老图 这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统 那么什么是根呢?哈哈 其实根表示的就是第一个 ...

  8. 嵌入式linux rootfs,【转】制作 嵌入式 linux 根文件系统 rootfs

    一.什么是文件系统 (Filesystem) 文件系统是包括在一个磁盘(包括光盘.软盘.闪盘及其它存储设备)或分区的目录结构:一个可应用的磁盘设备可以包含一个或多个文件系统:如果您想进入一个文件系统, ...

  9. 嵌入式Linux 根文件系统rootfs的构建

    前言 最近翻出来十年前的ARM9开发板:AT91SAM9261EK,芯片是原Ateml的AT91系列,之前开发的资料,因为更换电脑,基本上找不到了,还好部分经验记录在了[博客]上,所以,这次为了继续学 ...

  10. 使用BusyBox制作嵌入式Linux根文件系统

    STEP 1:构建目录结构  创建根文件系统目录,主要包括以下目录 /dev  /etc /lib  /usr  /var /proc /tmp /home /root /mnt /bin  /sbi ...

最新文章

  1. Ubuntu 下配置 SSH服务全过程及问题解决
  2. 网工协议基础(1) OSI七层模型
  3. CentOS下开启配置端口转发
  4. P3545HUR-Warehouse StoreP4053建筑抢修(反悔贪心、堆)
  5. MYSQL 定时任务
  6. eclipse信息输出区没有logcat的解决方法
  7. 【C++笔记】表达式 语句
  8. 字符串-创建//比较
  9. 每天CookBook之JavaScript-073
  10. Dataframe列赋值值后全部为NAN
  11. win11找不到开启蓝牙开关,设备管理器也没有蓝牙
  12. java armeabi_armeabi和armeabi-v7a 解释
  13. Windows API一日一练(17)DialogBox和DialogBoxParam函数
  14. 字节跳动 IconPark 免费图标库、阿里巴巴矢量图标库
  15. Cocos2d-x 3.x 如何编译成安卓程序
  16. 无人机通信信道模型实现代码
  17. VMware ESX 4.1版本,浏览器无法访问问题【已解决】
  18. abb机器人旋转六轴角度指令_ABB-120型号机器人的6个轴运动的角度范围各是多少?...
  19. Javascript对圆角div的实现
  20. (附源码)springboot福佳生活超市进销存管理系统 毕业设计261620

热门文章

  1. linux获取网卡协议地址,读取linux下的网络设备的mac地址与发送原始数据包 (2011-11-23 20:11)...
  2. Computer Vision_2_Active Shape Models:Active Shape Models-Their Training and Application——1995
  3. 英伟达面向开发者群体建立深度学习课程
  4. 如何使U盘实现在苹果电脑mac和windows上实现无障碍读写——不需要下载第三方软件
  5. 炼丹心得|追求极致的比赛冠军什么样?
  6. ping 超时原因总结
  7. Linux的系统安全及管理
  8. TCP Data Flow and Window Management(1)
  9. python不是内部文件别太任性_Python对文件的操作
  10. C/C++电话号码查询系统