嵌入式Linux根文件系统
- 格式:ppt
- 大小:493.00 KB
- 文档页数:42


根文件系统(rootfs)
展开全文
一、根文件系统的作用
是linux挂载的第一个文件系统,rootfs包含shell命令、linux系统配置文件(文件系统的挂载、网络服务、用户名、主机名、用户密码、环境变量...)、linux应用程序、应用程序处理的数据、独立的驱动模块(*.ko)。
根文件系统,相当于linux内核外围的一个应用环境。
========================================================================================================
二、控制台输出:
[ 4.183226] yaffs: dev is 32505860 name is "mtdblock4"
rw //存放rootfs的设备名字mtdblock4 ,rw可读写
[ 4.183291] yaffs: passed flags ""
[ 4.337878] VFS: Mounted root (yaffs filesystem) on device
31:4. //31:4 --》主设备:次设备号
[ 4.338028] Freeing init memory: 536K ---->rootfs挂载成功,释放内核中一些初始化函数所占用的内存
[ 4.357023] usb 1-1: New USB device found,
idVendor=1a40, idProduct=0101
[ 4.357083] usb 1-1: New USB device strings: Mfr=0,
Product=1, SerialNumber=0 [ 4.357145] usb 1-1: Product: USB 2.0 Hub
[ 4.357747] hub 1-1:1.0: USB hub found
buildroot 编译顺序
摘要:
1.介绍 Buildroot
2.Buildroot 的编译顺序
3.编译顺序的具体步骤
4.编译顺序的优点和应用场景
正文:
1.介绍 Buildroot
Buildroot 是一个用于构建嵌入式 Linux 系统的工具,它可以帮助开发人员构建一个可移植、可定制的 Linux 系统,适用于不同的嵌入式设备和硬件平台。Buildroot 提供了一个完整的构建系统,包括交叉编译工具链、内核、根文件系统等内容,使得开发人员可以方便地构建出满足特定需求的嵌入式
Linux 系统。
2.Buildroot 的编译顺序
在使用 Buildroot 进行编译时,有一个基本的编译顺序需要遵循,这个顺序包括以下几个步骤:
(1) 配置
(2) 编译内核
(3) 编译根文件系统
(4) 构建启动代码
(5) 构建根文件系统镜像 3.编译顺序的具体步骤
(1) 配置:在 Buildroot 中,首先需要进行配置,包括选择目标硬件平台、指定内核版本、设置系统参数等。配置完成后,Buildroot 会生成一个.bb
文件,它包含了构建过程中需要的所有信息。
(2) 编译内核:在配置完成后,Buildroot 会根据.bb 文件中的信息编译内核。内核编译完成后,Buildroot 会生成一个内核镜像文件,它是一个可引导的二进制文件,包含了内核和一些必要的驱动程序。
(3) 编译根文件系统:内核编译完成后,Buildroot 会开始编译根文件系统。根文件系统是嵌入式 Linux 系统的核心部分,它包含了系统所需的所有文件和目录。在编译过程中,Buildroot 会根据.bb 文件中的设置来确定根文件系统的内容。
(4) 构建启动代码:根文件系统编译完成后,Buildroot 会根据目标硬件平台的不同,生成不同的启动代码。启动代码是用来引导内核和根文件系统的一段代码,通常会被烧写到目标硬件设备的 Flash 中。
嵌入式Linux系统的构建
一、 嵌入式Linux系统中的典型分区结构
Boot parameters
Bootload
Root filesystem
Kernel
二、 各个结构的分析
1、从咱们所学的硬件知识能够明白,在系统上电后需要一段程序来进行初始化(关闭WATCHDOG、改变系统时钟、初始化存储器操纵器、将更多的代码复制到内存中)。简单的说bootload确实是这么一段小程序(相当于PC机中的BIOS),初始化硬件设备、预备好软件环境,最后挪用操作系统内核。从某个观点上来看Bootload能够分为两种操作模式:启动模式和下载模式。
启动模式:上电后bootload从板子上的某个固态存储器上将操作系统加载到RAM中运行,整个进程并无效户的介入
下载模式:在这种模式下,开发人员能够利用各类命令,通过串口连接或网络连接等通信手腕从主机下载文件,将它们直接放在内存运行或是烧入Flash类固态存储设备中。
Bootload能够分为两个时期:
第一时期实现的功能:硬件设备初始化、为加载Bootload的第二时期代码预备RAM空间、复制Bootload的第二时期代码到RAM空间中、设置好栈、跳转到第二时期代码的C入口点
第二时期:初始化本时期要利用的硬件设备、检测系统内存映射、将内核镜像和根文件映像从Flash上读到RAM空间中、为内核设置启动参数、挪用内核
2、内核的结构:
Linux内核文件数量快要2万,除去其他构架CPU的相关文件,支持S3C2410、S3C2440这两款芯片的完整内核文件有1万多个。这些文件组织结构并非复杂,他们别离位于顶层目录下的17个子目录,各个目录功能独立
目录名 描述
arch 体系结构相关的代码
block 块设备的通用函数
crypto 常用加密和散列算法,还有一些压缩和CRC校验算法
Drivers 所有的设备驱动程序,里面的每一个子目录对应一类驱动程序
科技信息 O ZT论坛o SCIENCE& CHNOLOGYINFORMATION 2010年第2l期 嵌入式Linux系统下根文件系统的构建 孙思凯 (创维集团研究院第一研究所 广东 深期I 518108) 【摘要】随着消费电子产品的系统功能日趋复杂,引入嵌入式Linux操作系统已成趋势。类似于Windows系统,嵌入式Linux要在一个分 区上存放系统启动所必需的文件.比如内核映象文件、内核加栽后运行的第一个程序(im)、给用户提供操作界面的Shell程序、应用程序所依赖 的库等等。这些必需、基本的文件合称为根文件系统,它们存放在一个分区中。根文件系统是嵌入式Linux系统必不可少的部分。本文结合工 程实践,详细介绍了如何高效制作嵌入式Linux使用的CramFS根文件系统。 【关键词】文件系统;根文件系统;BusyBox;CramFS文件系统;映象文件 0引言 2.6 随着电视机平台系统的日趋复杂,对系统的软硬件都提出了很高 的要求。普通的51单片机系统不再能满足复杂的视频编解码及网络 等需求。在这种背景下,嵌入式Linux操作系统被越来越多的应用于 电视机系统上。在软件层面上,构建Linux嵌入式操作系统要涉及到 引导加载程序(U—Boot)、Linux内核(Kerne1)、文件系统(FS)、用户应 用程序(API)几部分的设计。 文件系统是操作系统中用来管理用户文件的内核软件层。文件可 能存在于磁盘、网络或者是一些虚拟的文件。文件系统包括根文件系 统和建立于内存设备之上的文件系统,其中根文件系统是整个文件系 统的核心部分。本文概述了根文件系统的组成,并结合工程项目实践 详细说明了如何建立一个CramFS根文件系统的一般步骤。 1 开发环境 本文中目标板使用的是基于ARC内核的333M双核CPU的 AML7266H+OpenLinux。OpenLinux是Amlogic公司根据自身CPU架 构移植的Linux内核。在主机上将U—boot、Linux内核及根文件系统交 叉编译后分别下载至目标板的SPI Flash和Nand Flash中,上电启动 运行。开发过程中,U—boot下载至SPI的0~0x48000;内核和文件系统 烧录至Nand Hash的Ox40000处。 2根文件系统简介 根文件系统是嵌入式Linux文件系统的核心部 分。包含系统使用的软件和库,以及所有用来为用 户提供支持架构和用户使用的应用软件,并作为存 储数据读写结果的区域。为了安装软件时能够预知 文件、目录的存放位置,让用户方便的找到不同类 型的文件,在构造根文件系统时,建议遵循FHS (Filesystem Hierarchy Standard一文件系统层次标 准)标准。FHS定义了文件系统中目录、文件分类存 放的原则,系统运行所需的最小文件、目录的集合, 并列举了不遵循这些原则的例外情况及其原因。 遵循FHS标准的Linux根文件系统的结构如 图1所示。 简述这几个模块的作用: 2.1 ,bjn l I ,bin l ,sbin j /dev l /etc l ,I1b l mome f/r0o l ,usr l ,var I /proc f ,mt l 存放所有用户(包括系统管理员和一般用户) 图1 都可以使用的、基本的命令,需要与根文件系统在同一个分区中。 2.2/sbin . 该目录下存放系统命令,即只有管理员能够使用的命令,系统命 令还可以存放在/usr/sbin、/usr/local/sbin目录中。 2-3/dev 该目录下存放的是设备文件。设备文件是Linux中特有的文件类 型.Linux以文件的方式访问各种外设,即通过读写某个设备文件来操 作某个具体硬件。 2.4/ete 该目录下存放各种配置文件。 2.5/lib 该目录下存放共享库和可加载模块(即驱动程序)。共享库用于启 动系统、运行根文件系统中的可执行程序。 2.7 2.8 /home 用户目录,这个目录是可选的。 /root 根用户(用户名为root)的目录。 /usr /usr目录可以存在另一个分区中.在系统启动后再挂接到根文件 系统中的/usr目录下.里面放的是共享、只读的程序和数据。 2.9/var 该目录下放的是可变的数据,像spool目录,log文件、临时文件 等。 2.10,proc 空目录,常作为proc文件系统的挂接点。 2.11/rant 用于i临时挂接某个文件系统的挂接点,通常是空目录。 2.12/tmp 用于存放临时文件,通常为空目录。 3 CramFS根文件系统的构建 3.1准备根文件系统 类似于批处理文件的shell脚本可以自动完成用户想做的动作, 这里使用脚本进行了基本路径和节点等目录框架的建立。建立shell 脚本文件dir_make.sh,清单如表1所示。为其添加可执行的属性并在 命令行执行dir_make.sh,会在~/mini_fs路径下建立根文件系统的目录 框架。 表1 dir make,sh清单 , 3.2创建设备文件 mdev是通过init进程来启动的。在使用mdev构造/dev目录之 前,init至少要用到设备文件/dev/console、/dev/null,所以需要事先建立 这两个设备文件。 3.3配置文件 需要准备一些配置文件和系统启动时需要的文件.都是一些shell 脚本。 (1)mdev.conf mdev会在,etc目录下我mdev的配置文件~mdev.conf。因为本文 中不需要mdev规则,所以这里生成一个空文件即可。 (2)linuxrc linuxrc放置于/mini_fs中。是执行init进程的初始化文件。作用是 将已安装根文件系统中的/etc安装为ramfs,复制/mnt/etc/目录下所有 文件到/etc;重新构建文件分配表inittab;执行系统初始化进程/sbin/ init。清单如表2所示。