嵌入式Linux根文件系统制作
嵌入式Linux系统下根文件系统的构建

2 根 文件 系统 简 介
根 文件 系统 是 嵌 入 式 Lnx文 件 系 统 的 核 心 部 iu 分 。 含 系 统 使 用 的 软 件 和 库 , 及 所 有 用 来 为 用 包 以 户 提 供 支 持 架 构 和 用 户 使 用 的应 用 软 件 , 作 为存 并 储 数据 读 写 结 果 的区 域 。为 了 安 装 软 件 时 能 够 预知 文件 、 目录 的 存 放 位 置 , 用 户 方 便 的 找 到 不 同类 让
29 . /a vr
文 件 系 统 是 操作 系 统 中用 来 管 理 用 户 文 件 的 内核 软 件 层 。 件 可 文
能 存 在 于 磁 盘 、 络 或者 是 一 些 虚 拟 的文 件 。文 件 系统 包 括 根 文 件 系 网 等。 统 和 建 立 于 内存 设备 之 上 的 文件 系 统 , 中根 文 件 系 统 是 整 个 文 件 系 其 21 ,rc .0 po 统 的 核 心 部 分 。本 文 概 述 了根 文 件 系 统 的 组 成 , 结 合 工 程 项 目实 践 并 空 目录 , 作 为 po 文 件 系 统 的 挂 接 点 。 常 rc 详 细 说 明 了 如 何 建立 一 个 Ca F rm S根 文 件 系 统 的 一 般 步 骤 。
叉 编 译 后 分 别 下 载 至 目标 板 的 S I ls P ah和 NadFah中 ,上 电启 动 F n ls 31 准 备 根 文 件 系 统 . 运 行 。开 发 过 程 中 , — ot 载 至 S I 0 04 0 0; 核 和 文 件 系 统 U bo 下 P 的 ~ x 80 内 类 似 于 批 处 理 文 件 的 sel 本 可 以 自动 完 成 用 户 想 做 的 动 作 , hl脚 烧 录 至 N n s a dHah的 O4 0 0处 。 x 00 这 里 使 用 脚 本 进 行 了基 本 路 径 和 节 点 等 目 录框 架 的 建 立 。 建 立 se hl l l
busybox详解制作根文件系统

详解制作根文件系统单击,返回主页,查看更多内容一、FHS(Filesystem Hierarchy Standard)标准介绍当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。
该标准规定了根目录下各个子目录的名称及其存放的内容:制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。
其过程大体包括:•编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录•利用交叉编译工具链,构建/lib目录•手工构建/etc目录•手工构建最简化的/dev目录•创建其它空目录•配置系统自动生成/proc目录•利用udev构建完整的/dev目录•制作根文件系统的jffs2映像文件下面就来详细介绍这个过程。
二、编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录这些目录下存储的主要是常用命令的二进制文件。
如果要自己编写这几百个常用命令的源程序,my god,这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀——busybox,事情就简单很多。
1、从/下载busybox-1.7.0.tar.bz22、tar xjvf busybox-1.7.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux-4、make menuconfig配置busyboxbusybox配置主要分两部分。
第一部分是Busybox Settings,主要编译和安装busybox的一些选项。
这里主要需要配置:1)、Build Options -- Build BusyBox as a static binary (no shared libs),表示编译busybox时,是否静态链接C库。
bootload、kernel、rootfs

嵌入式Linux系统的构建一、嵌入式Linux系统中的典型分区结构Root filesystemKernel二、各个结构的分析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个子目录,各个目录功能独立Linu内核Makefile文件分类3、根文件系统嵌入式Linux 中都需要构建根文件系统,构建根文件系统的规那么在FHS(FilesystemHierarchy Standard)文档中,下面是根文件系统顶层目录。
三、根文件系统的制作一、进入到/opt/studyarm 目录,新建成立根文件系统目录的脚本文create_rootfs_bash,利用命令chmod +x create_rootfs_bash 改变文件的可执行限,./create_rootfs_bash 运行脚本,就完成了根文件系统目录的创建。
嵌入式Linux中根文件系统的实现

在 Ln x系统 中 , i u 所有 的文件 和 设备 都 是 以 文件 的形 式 来管理 的 , 而根文 件 系统是 所 有文 件 和设 备 节 点 的起 始 点 , 定 系统 能否 正 常启 动 的关 键 。本 文从 一般 Ln x 是决 iu
根文件 系统出发, 详细分析了其构成, 并结合嵌入式 系统
关键词 :根文件 系统 ;嵌 入式 Ln x u y x iu ;B sb ;启动脚本 o
中图 分 类 号 :T 3 6 P 1 文 献 标 识 码 :B
I plm e a in o o tfl y tm n e b dd d n x m e nt to fr o ie s se o m e e Li u
摘
要: 在嵌入式 Lnx中, 件系统 至关 重要 , i u 根文 它是所有文 件和设备 节点的起 始点 , 是决定 系统 能否正 常启动 的
关 键。本文从一般 Lnx i 根文件系统 出发 , 细分析 了根 文件 系统 的 构成 , u 详 结合 嵌 入式 系统 的特 点 , 出如何 利用 提 B sb x工具建立根文件系统原型 , uy o 并在此 基础 上添加必要的文件 以实现一个简单 的根文 件系统 , 以及如 何编写 系统 启 动脚 本和配置脚 本来引导系统正常启 动 。最后在实际的 AR 开发平台上验证 了新生成 的根文件系统 。 M
Xin e Do gJn ig o gW i n im n
( e a gUnv ri , e ig10 8 ) B i n iest B in 0 0 3 h y j
Ab ta t n t ee b d e iu y tm ,t ero i y tm O i o un h ti i h e inn on fal i s sr c :I h m e d d L n x s se h o tfl s se i S mp r i tt a t st eb gn ig p ito l fl e s e
嵌入式Linux下NAND flash上根文件系统的构建

(c o l f mp tr c n e T c n l yA h i n esyo c nea d e h o g , an n 2 2 0 ,hn ) S h o o Co ue i c & e h o g ,n u U i ri f i c n c n l y Se o v t S e T o Hu i 3 0 1C i a a
近些 年嵌 入式 系统 的发展 非常快 。 随着 硬件 技术 的进 步 ,越 N N l s e i e D i e s一 A D F a hD v c r v r 对 NN ls A D F a h的支持 < S C e c s p rt ¥> M D vi e up o / 来越 多 的嵌入式 设备 使用 L n x 为操 作系统 ,可 以实现 功能 更 iu 作 ( > mpl o k e c f r a Fl h ( O F * Si e Bl c D vi e o N nd as B N S) 强的应用 。 i u L n x的内核在 启动过程 中会 安装 文件系 统, 不可 或 是 < S C e c o ¥ C2 1  ̄ ) > M d vi e n 3 4 0 S n K 缺的重要 组成 部分 。 本文 以三星 的 A M 4 0 R 9 1 S为例 , 2 采用 了 L n x i u 262 ..4版本说 明 了如何在 N N l s 存储 器上构 建文件 系统 。 A D fah []U e M D F o M s T r m S C 嵌 入式 Ln x 文件系统 iu 及 ( )配置文 件系 统 二 < >K r e u o o n e e s o u p r ( l o s p o t ¥ e n la t m u t r v r i n 4 s p o t a s u p r s 文件 系统
构建嵌入式Linux的根文件系统的busybox方法

中, 内核在启动期间进行的最后操作之一就是安装根文件
统 所 必 需 的 其他 一 些 脚 本 文 件 的 编 写 方 法.
关 键 词 : 文 件 系统 ; u, o ; 入 式 系统 根 b sb x 嵌 y
中 图分 类 号 : P3 6 T 1
文献 标 识 码 :A
嵌入式 L u 操作系统 越来越受到重视 , ix n 应用也越 其他操作系统资源都可共享, 这对于资源 比较紧张的系统
系统 .
B s o 是构建嵌入式 L u 根文件系统的软件 , uy x b ix n 用 6M ada 等.系统采用了宿主机加 目标板的模式, 4 nnfs lh 宿
它制作根文件系统简单, , 方便 而且设置灵活. 本文将重点
介绍如何用 B s o 来制作根文件系统. u bx y
其中, p目录需要设置 scy #h o 77tp t m tk 位, cmd17 , i m
际应用过程中通过不 同的符号链接来确定到底要执行 哪 这样所有的用户都对 tp m 可读可写 , 却只有 r t/m 属 o (tp o
个操作.例如最终生成的可执行文件为 bs o, uy x当为它建 主) b 能删除或移动它.
立一个符号 链接l s 候, 的时 就可以 通过执行这个新命令实 目录 hm , t n, o均是可选的, o eo , t ot pm r 如果该根文件系 现列 目录的功能. 采用单一执行文件的方式可以最大限度 统要支持多用户, 还需要J/oe目录.由于使用 dv , J hm  ̄ es所 f
嵌入式Linux中CramFS根文件系统的移植实现

嵌入式Linux中CramFS根文件系统的移植实现刘俊霞;盛文婷【摘要】首先研究了嵌入式Linux系统以及CramFS文件系统的移植,然后分析了嵌入式Linux系统及CramFS文件系统的特性,其次,详细说明了移植最小Linux系统的制作过程,最后,对制作出来的Linux系统镜像进行测试.最终的测试结果显示,系统移植成功且能够实现Linux系统的基本命令.【期刊名称】《数字技术与应用》【年(卷),期】2016(000)005【总页数】2页(P59-60)【关键词】Linux;CramFS;isoLinux【作者】刘俊霞;盛文婷【作者单位】新疆工程学院电气与信息工程系新疆乌鲁木齐 830023;新疆农业大学科学技术学院新疆乌鲁木齐 830091【正文语种】中文【中图分类】TP316.81随着电子产业的不断发展,基于ARM技术的系统设计和开发平台越来越多地在控制类、消费类、通信类等电子产品中广泛应用。
从软件角度上看,构建基于ARM 技术的Linux系统要涉及到引导加载程序、Linux内核、文件系统、用户应用程序几部分的设计。
由于存储空间有限,如何有效地使用有限的存储空间是嵌入式开发者必须考虑的,合适的文件系统格式是解决这一问题的关键所在。
CramFS是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩。
它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时候,马上计算出该数据在CramFS中的位置,将它实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。
CramFS文件系统的基本组成:初始化程序、Shell程序以及其他Linux常用工具、配置文件、链接库、图形界面程序和用户应用程序,文件系统是紧跟Linux内核放置,由内核加载,主要存放用户应用程序和配置信息。
在嵌入式的环境之下,内存和外存资源都需要节约使用。
linux创建文件系统的步骤。

linux创建文件系统的步骤
1. 确认磁盘分区:使用fdisk或parted等工具对磁盘进行分区,确保分区正确。
2. 格式化分区:使用mkfs命令对分区进行格式化,例如:mkfs.ext4 /dev/sda1。
3. 挂载分区:使用mount命令将分区挂载到指定的挂载点上,例如:mount /dev/sda1 /mnt。
4. 配置/etc/fstab文件:将分区的挂载信息添加到/etc/fstab 文件中,以便系统在启动时自动挂载。
5. 设置权限:使用chmod和chown命令设置文件系统的权限和所有者。
6. 创建目录:使用mkdir命令创建需要的目录。
7. 配置文件系统:根据需要,可以使用tune2fs等工具对文件系统进行配置,例如:tune2fs -c 10 /dev/sda1,表示每10次挂载后进行一次文件系统检查。
8. 测试文件系统:使用df和du等命令检查文件系统的使用情况,确保文件系统正常工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实训项目四-嵌入四Linux系统根文件系统制作一. 项目实施目的了解 UP-CUP2440 型实验平台Linux 系统下根文件系统结构掌握根文件系统的搭建过程掌握busybox、mkcramfs等工具的使用方法二. 项目主要任务使用busybox生成文件系统中的命令部分,使用mkcramfs工具制作CRAMFS 格式的根文件系统。
分析根文件系统etc目录下重要配置文件的格式及语法,熟悉根文件系统的启动过程三. 基本概念1.文件系统基本概念Linux的一个最重要特点就是它支持许多不同的文件系统。
这使Linux非常灵活,能够与许多其他的操作系统共存。
Linux支持的常见的文件系统有:JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。
随着时间的推移, Linux支持的文件系统数还会增加。
Linux是通过把系统支持的各种文件系统链接到一个单独的树形层次结构中,来实现对多文件系统的支持的。
该树形层次结构把文件系统表示成一个整个的独立实体。
无论什么类型的文件系统,都被装配到某个目录上,由被装配的文件系统的文件覆盖该目录原有的内容。
该个目录被称为装配目录或装配点。
在文件系统卸载时,装配目录中原有的文件才会显露出来。
在Linux 文件系统中,文件用i节点来表示、目录只是包含有一组目录条目列表的简单文件,而设备可以通过特殊文件上的I/O 请求被访问。
2.常见的嵌入式文件系统嵌入式Linux系统一般没有大容量的磁盘,多使用flash存储器,所以多采用基于Flash(NOR和NAND)的文件系统或者RAM内存的文件系统。
(1)Flash根据结构不同分为 NOR Flash和NAND Flash。
基于flash的文件系统主要有: jffs2:RedHat基于jffs开发的文件系统。
特点:可读写、支持数据压缩、支持哈希表的日志型文件系统,提供了崩溃/掉电安全保护,提供“写平衡”支持等。
缺点:不适合在体积和容量比较大的NAND Flash中使用,当文件系统已满或者快满时,因为垃圾收集的关系使它的运行速度大大放慢。
yaffs:专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。
特点:1.减少了一些jffs2的功能,但是速度更快,占用内存更少,能够实现错误检测和坏块处理,能够提高文件系统的加载速度。
采用多策略混合的垃圾回收算法。
2.跨平台文件系统,除了Linux还支持WinCE、pSOS、ThreadX。
3.自带NAND芯片驱动,并为嵌入式系统提供直接访问文件系统的API,用户可不使用Linux中的MTD与VFS,直接对文件系统操作。
也可与MTD驱动程序配合使用。
Cramfs:Linux开发的只读的压缩文件系统,基于MTD驱动程序。
特点:速度快,效率高,保护文件系统免受破坏,提高了可靠性。
缺点:内容无法扩充。
Romfs:简单的、紧凑的、只读的文件系统,不支持动态擦写保存,安顺序存放数据。
ucLinux通常采用本文件系统。
(2)基于RAM的文件系统Ramdisk:将一部分固定大小的内存当作分区来使用。
它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。
将一些经常被访问而又不会更改的文件通过Ramdisk放在内存中,可以明显的提高系统的性能。
在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。
ramfs/tmpfs:Ramfs是Linus Torvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。
(实际上VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。
);Rmfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如/tmp和/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读写速度;amfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:不能格式化,文件系统大小可随所含文件内容大小变化;mpfs的一个缺点是当系统重新引导时会丢失所有数据。
网络文件系统NFS (Network File System)NFS:是由Sun开发并发展起来的一项在不同机器、不同操作系统之间通过网络共享文件的技术。
在嵌入式Linux系统的开发调试阶段,可以利用该技术在主机上建立基于NFS的根文件系统,挂载到嵌入式设备,可以很方便地修改根文件系统的内容。
3.嵌入式根文件系统根文件系统也是一种文件系统,简单来说,根文件系统就是一种目录结构,根文件系统与普通文件系统的区别在于根文件系统主要包括Linux操作系统启动所必须的目录和关键性的文件,例如Linux启动时都需要有init目录下的相关文件,在Linux挂载分区时Linux一定会找/etc/fstab这个挂载文件等,根文件系统中还包括了许多的应用程序,比如bin目录下的可执行文件,任何包括操作系统启动所必须的文件的文件系统都可以做根文件系统。
Linux启动所必须的文件系统目录结构如下:对于用途单一的嵌入式系统,上边的一些用于多用户的目录可以省略,例如/home、/opt、/root 目录等。
而/bin、/dev、/etc、/lib、/proc、/sbin 和/usr 目录,是几乎每个系统必备的目录,也是不可或缺的目录。
生成这些目录和相关文件的方法主要有两种,可以通过手动建立相关目录和文件,也可以通过busybox工具来生成相关目录和文件。
Busybox是小型的嵌入式 Linux 系统制作 root 根文件系统时有一个常用的利器:BusyBox。
Busybox 是Debian GNU/Linux的大名鼎鼎的 Bruce Perens 首先开发,使用在 Debian 的安装程序中。
后来又有许多 Debian developers 贡献力量,这其中尤推busybox 目前的维护者 Erik Andersen,他患有癌症,可是却是一名优秀的自由软件开发者。
Busybox 编译出一个单个的独立执行程序,就叫做 busybox。
但是它可以方便的进行配置,执行 ash shell 的功能,以及几十个各种小应用程序的功能。
这其中包括有一个迷你的 vi 编辑器,以及其他诸如sed, ifconfig,mkdir, mount, ln, ls, echo, cat ... 等等这些都是一个正常的系统上必不可少的工具,但是如果我们把这些程序的原件拿过来的话,它们的体积加在一起,让人吃不消。
可是 busybox 有全部的这么多功能,大小也不过 100K 左右。
而且,用户还可以根据自己的需要,决定到底要在busybox 中编译进哪几个应用程序的功能。
本系统就是采用busybox来制作根文件系同的。
四 .根文件系统制作步骤1.重新编译配置内核,确保内核支持所选的根文件系统。
[root@localhost ~]# cd /UP-CUP2440/SRC/kernel/linux-2.6.24.4/2、运行 make menuconfig 命令配置内核文件系统相关支持添加对CRAMFS 根文件以及YAFFS2 文件系统系统支持进入File systems --->菜单进入Miscellaneous filesystems --->菜单选择<*> Compressed ROM file system support (cramfs)支持,如图:选择<*> YAFFS2 file system support 支持,配置如下图保存退出。
在前期Linux内核制作过程中,相关选项已经选择。
在实验室,不需要真的重新去编译内核,只是需要学生理解,所选的根文件系统,在前期的内核编译时一定要选中相关的配置选项。
3.查看已经制作好的文件系统(挂载up24402.iso)[root@localhost /]# cd /UP-CUP2440/SRC/rootfs/[root@localhostrootfs]# ls如下图所示,光盘文件里有已经制作好的根文件系统和制作根文件系统的busybox源代码。
[root@localhostrootfs]# tar–jxvf rootfs.tar.bz2[root@localhost /]#ls如上图所示,绿色的文件为制作根文件系统需要的工具,rootfs为根文件系统目录结构和相关内容。
[root@localhost /]#cd rootfs_src4.根文件系统制作方法(1)手动制作建立相关目录,准备相关文件和命令,相关文件可以参考redhat的内容修改制作,相关命令需要下载源码交叉编译,这个过程非常复杂,且容易出错。
常见的方式是采用busybox来制作。
(2)busybox制作根文件系统什么是Busybox?[root@localhost /]#make clean[root@localhost /]#ls如上图,此时并没有可执行的busybox程序。
[root@localhostrootfs]#viMakefile修改此目录的Makefile 文件,更改ARCH ?和CROSS_COMPILE ?=宏定义,如下:第164 行CROSS_COMPILE ?= arm-linux-第189 行ARCH ?= arm退出保存[root@localhost busybox-1.12.2]# makemenuconfig进入Busybox Settings --->选项进入Busybox Library Tuning ---> 选项选中[*] Fancy shell prompts 支持进入Miscellaneous Utilities --->选项(返回主菜单选项)去除[ ] inotifyd 选项。
退出保存设置编译 busybox[root@localhost busybox-1.12.2]# make如上图所示,交叉编译完成后,就生成了我们需要的busybox可执行程序。
这就是我们根文件系统需要的各种命令,后续通过安装命令建立命令连接。
[root@localhost busybox-1.12.2]# make install成功后会在当前目录下生成 _install 目录,编译的工具也都集成在该安装目录下。
[root@localhost busybox-1.12.2]# cd _install/[root@localhost _install]# ls可以看到_install 目录下生成了根文件系统常用的命令及工具,接下来的工作,用户可以根据需要将_install 目录下生成的命令拷贝到根文件系统相应目录下。