迅为3568开发板文件系统构建之简介

迅为3568开发板文件系统构建之简介

 

1.1 根文件系统简介

在移植Linux系统的时候,我们需要先移植一个bootloader代码,

bootLoader用于启动Linux 内核,然后移植 Linux Kernel,移植完 Linux Kernel 之后,还需要再移植根文件系统,根文件 系统里面包含了最常用的命令和文件。所以 uboot,内核,文件系统三者一起构成了一个完整 的,功能完善的,可以正常使用的 Linux 系统。

 

 

 

 

 

 

在系统正常启动过程中,Bootloader 首先运行,然后将内核复制到内存中(或者在固态存储设备上直接运行,但是效率较低),并在内存某个固定的地址(包括地址与参数的结构) 设置好要传递给内核的参数,最后运行内核。内核启动后,挂载(mount)根文件系统(Root filesystem),启动文件系统中的应用程序。如下图所示:

 

 

 

 

 

通过以上的学习,我们认识到文件系统是 linux “三巨头”之一,构建文件系统是 Linux 移植的最后一步。

 

那么什么是根文件系统呢?那么文件系统又是什么呢?

首先我们要明白什么是文件系统,文件系统是对一个存储设备上的数据或元数据进行组织的机制。这种机制有利于用户和操作系统的交互。Oracle 的一篇技术文章有这样一句话“尽管内核是 Linux 的核心,但是文件确是用户和操作系统交互采用的主要工具。这对 Linux 来说尤其如此,这是因为在 UNIX 传统中,它使用文件 I/O 机制管理硬件设备和数据文件” 这句话我是这样理解的,在 Linux 没有文件系统的话,用户和操作系统的交互也就断开了,例如我们使用最多的交互 shell,包括其它的一些用户程序,都没有办法运行。在这里可以看到文件系统相对于 Linux 操作系统的重要性。

 

当我们在 windows 下,提到文件系统,是不是马上想到 windows 下的 fat32,NTFS 等的文件系统的类型。但是在 Linux 中,你可能会想到 ext2 ext3,但是你还必须要有一个根文件系统的概念。根文件系统首先是一种文件系统,根文件系统不仅具有普通文件系统的存储数据文件的功能,但是对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如 rcS,inittab)和服务加载到内存中去运行。

 

我们要明白文件系统和内核是完全独立的两个部分。在开发板中移植的内核下载到开发板上,是没有办法真正的启动 Linux 操作系统的,会出现无法加载文件系统的错误。那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0 挂载,而后执行/linuxrc 等其执行完后。切换根目录,再挂载具体的根文件系统。根文件系统执行完之后,也就是到了Start_kernel()函数的最后,执行 init 的进程,也就第一个用户进程。对系统进行各种初始化的操作。如果要弄明白这里的过程的话,可要好好的看看 Linux 内核源码了。

 

根文件系统之所以在前面加一个”根“,说明它是加载其它文件系统的”根“,既然是根的话, 那么如果没有这个根,其它的文件系统也就没有办法进行加载的。它包含系统引导和使其他 文件系统得以挂载(mount)所必要的文件。根文件系统包括 Linux 启动时所必须的目录和关 键性的文件,例如 Linux 启动时都需要有 init 目录下的相关文件,在 Linux 挂载分区时 Linux 一定会找/etc/fstab 这个挂载文件等,根文件系统中还包括了许多的应用程序 bin 目录等,任何

包括这些 Linux 系统启动所必须的文件都可以成为根文件系统。

 

Linux 启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系 统,则系统会出错而退出启动。成功之后可以自动或手动挂载其他的文件系统。因此,一个 系统中可以同时存在不同的文件系统。

 

Linux 中将一个文件系统与一个存储设备关联起来的过程称为挂载(mount)。使用 mount 命令将一个文件系统附着到当前文件系统层次结构中(根)。在执行挂载时,要提供 文件系统类型、文件系统和一个挂装点。根文件系统被挂载到根目录下“/”上后,在根目录下 就有根文件系统的各个目录,文件:

/bin /sbin /mnt 等,再将其他分区挂载到/mnt 目录上,/mnt

目录下就有这个分区的各个目录,文件。

 

 

1.2 根文件系统目录简介

Linux 根文件系统中一般有如下的几个目录。

 

 

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.3 常见的根文件系统

根文件系统本质都是一些文件和配置信息组成,之间的界限没有很明确的界定。最简单的 根文件系统是使用 busybox 工具制作的文件系统。除此之外,还有使用 buildroot 工具和 yocto 工具构建的文件系统。还有发行版 Linux 系统——Ubuntu 系统,Debian 系统。以下大致列出 一些根文件系统的特点,如下图所示:

 

 

 

 

 

 

 

迅为提供的 Linux 源码支持 buildroot,Debian,ubuntu,

yocto 等系统,他们共用 BootLoader kernel,只是文件系统不同。以下依次介绍不同的文件系统。

 

Buildroot

 

Linux 源码中的 buildroot 版本是 Buildroot-2018.02 的版本的软件开发包,其包含了基于 Linux 系统开发用到的各种系统源码,驱动,工具,应用软件包。Buildroot 是 Linux 平台上一个 开源的嵌入式 Linux 系统自动构建框架。整个 Buildroot 是由 Makefile 脚本和 Kconfig 配 置文件构成的。你可以通过 Buildroot 配置,编译出一个完整的可以直接烧写到机器上运行的 Linux 系统软件。这里我们只是使用 buildroot 编译文件系统。

 

 

 

 

 

 

 

 

 

 

 

Yocto

Yocto Buildroot 一样, 是一套构建嵌入式系统的工具,但是两者的风格完全不同。

Yocto project 是通过一个个单独的包(meta)来维护,比如有的包负责核心,有的包负责外围。有的包用于跑 Rockchip 的芯片,有的包用于安装上 Qt。

 

 

 

 

Ubuntu

Ubuntu 是一个流行的 Linux 发行版,是基于 Debian unstable 版本加强而来,以“最好的 Linux 桌面系统”而闻名,近些年 Ubuntu 也推出了 Ubuntu Enterprise Linux, 在企业 Linux 应用市场 占有率也有较大提高。

优点:技术支持较好,用户界面友好,硬件的兼容性好,采用基于 Deb ATP 包管理系统。

Debian:

Debian GNU / Linux 是一款是由 GPL 和其他自由软件许可协议授权的自由软件组成的 Linux 操作系统,由 Debian Project 组织维护。以其坚守 Unix 和自由软件的精神,以及其给予用户的众多选择而闻名。

 

 

 

1.4 构建 Linux 文件系统

所谓制作构建根文件系统,就是创建各种目录,并且在里面创建文件。我们可以用 buildroot yocto busybox等工具来构建文件系统,也可以用Linux系统发行版比如ubuntu Debian openwrt

接下来的章节我们将会讲解各种根文件系统的构建方法。

 

 

posted on   topeet  阅读(270)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2017-09-19 迅为4412嵌入式安卓开发板兼容3G网络|4G网络
2016-09-19 迅为-iMX6开发板 飞思卡尔iMX6Q开发板 工业级开发板

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示