嵌入式Linux根文件系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在内核 配 置的时候 添加上sysfs及tmpfs 支持 。 下 载 udev软件包,交叉编译 ,然 后并 复 制到目 标 根文件系统中, 最 后 配 置 好 udev 规 则 即 可。
系统初始化文件
文件系统的类型
Linux支持的常见的文件系统有: ext2(一般根文件系统 / 使用此文件系统) 、 NFS ( 网络 文件系统) 、 ext3、 ISO9660、 XFS、 Minx、 MSDOS、 UMSDOS、 VFAT、 HPFS、 NTFS、 SMB、 SysV、 PROC等。 随着时间的推移, Linux支持的文件系统数还会增加。
链接库 (/lib) 设备文件 (/dev) 系统应用程序 (/bin /sbin) 系统初始化文件 (/etc--inittab fstab rcS)
链接库
设备文件
在 Linux根文件系统中 , 所有设备文件 ( 设备节 点 )都放在 /dev 目录下 . 对嵌入式系统来说 , 目标板的 /dev 目录 并 不需要 像 一 般的Linux工作站那样填入太多内容 , 只需建立使系统能正 常工作的必要条目即可 .
BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。 BusyBox 包含了一些简单的工具,例如ls、 cat 和 echo等等,还包含了 一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些 人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像 是个大工具箱,它集成压缩了 Linux 的许多工具和命令。
设备文件
建立 /dev下的条目的方法有 4种 :
1.手动建立 /dev 条目 : #mknod –m 666 null c 1 3 2. 使用 devfs 自动建立 /dev条目 3. 使用 udev 自动建立 /dev条目 4. 使用mdev自动建立/dev条目
设备文件
udev :一般用于linux2.6.13或更高版本的内核上,在用户空 间自动建立 /dev 条目。 它通过在 sysfs 的 /class/ 和 /block/ 目录树中查找一个称为 dev 的文件,以确定所创建的设备节点文件的主次设备号。 所以要使用udev ,驱动必须为设备在sysfs 中创建类接口及 其dev属性文件。 使用 udev :
嵌入式Linux根文件系统
最简单的嵌入式系统
0x0 0x00200000 0x00500000 0x4000000
Bootloader
参数
系统内核
根文件系统
Flash
从低地址到高地址方向
文件系统的概念
什么是文件系统? 文件系统是对一个存储设备上的数据和元素进行组织的机制, 这种机制有利于用户和操作系统的交互。 文件系统的主要目标是提高外存空间的利用率,它要解决的 主要问题有:完成文件存储空间的管理,实现文件名到物理 地址的转换,实现文件和目录的操作,提供文件共享能力和 安全措施,提供友好的用户接口。
linux内核启动流程分析
/etc/inittab文件格式: id :runlevel:action:process id是指入口标识符,它是一字符串 runlevel是系统的运行级别:
运行等级设定如下: 0:关机 1:单用户模式 2:无网络支持的多用户模式 3:有网络支持的多用户模式 4:保留,未使用 5:有网络支持有X-Window支持的多用户模式 6:重新引导系统,即重启
制作Yaffs2根文件系统
解压busybox: tar –xvf /mnt/hgfs/share/busybox-1.16.0.tar.bz2 –C / /mnt/hgfs/share/busybox进入源码,修改Makefile: ARCH=arm; CROSS_COMPILE=arm-linuxCROSS_COMPILE=arm-linux进入配置菜单: make menuconfig Load an Alternate Configuration File ===》config_EmbedSky config_EmbedSky • Save Configuration to an Alternate File ===》.config config 退出配置菜单 #make #make install 在当前目录下生成_install目录
文件系统和根文件系统的区别
根文件系统首先是一种文件系统,具有普通文件系统的存储 数据文件的功能。 根文件系统是内核启动时所mount的第一个文件系统,系统 引导程序会在根文件系统挂载后从中把一些初始化脚本和服 务加载到内在中去运行。
文件系统的目录结构
根文件系统中的文件
在一个基本的 Linux 根文件系统中,应包括如下 的文件:
proc 文件系统
/proc :一个 虚拟文件系统,只存在于内存中,通过它可以 查询 、设置系统的 运 行 情况及各种系统 参 数。 系统中的很 多 应用都 依赖 于 proc 文件系统,如命令 lsmod 等 同于 cat /proc/modules 。 /proc 下的 “ 数字目录 ” 指代了 相 应 pid 的进程,如目录 “1” 下的内容就是 1 # 进程的 各 种 信息
基于 Flash 的文件系统-Cramfs
由 Linus Torvalds 参与开发的小型只读压缩文件系统 Inode 、文件名称和目录信息不压缩 单个文件最大为 16MB 数据压缩存放 适合不需要写、且体积较大的文件系统,如 /lib/opt 等 与 JFFS2 相比,读取速度快 压缩率可以超过 50 % 读取文件时,每次读取 4k 内容,解压缩到 cache 中 Linux 内核已提供了对 cramfs 的支持,只要编译时选中
•
嵌入式常用的文件系统 :Yaffs,Yaffs2, JFFS2, cramfs(只读) , /proc (用于 内核和进程 信息 )
虚拟文件系统VFS
虚拟文件系统VFS
基于 Flash 的文件系统-jffs2
Jffs2: 日志闪存文件系统版本 2 (Journalling Flash FileSystem v2) 主要用于 NOR 型闪存,基于 MTD 驱动层, 特点是:可读写的、支持 数据压缩的、并提供了崩溃 / 掉电安全保护,提供 “ 写平衡 ” 支持等。 缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2 的运行速度大大放慢。 jffsx 不适合用于 NAND 闪存主要是因为 NAND 闪存的容量一般较大, 这样导致 jffs 为维护日志节点所占用的内存空间迅速增大,另外, jffsx 文件系统在挂载时需要扫描整个 FLASH 的内容, 以找出所有的日志节 点,建立文件结构,对于大容量的 NAND 闪存会耗费大量时间。
ቤተ መጻሕፍቲ ባይዱ
制作Yaffs2根文件系统
新建一个目录用来制作文件系统并把busybox生成的目录复制进去 #mkdir -p -m 777 /opt/EmbedSky/rootfs #cd /opt/EmbedSky/rootfs #cp –rf /opt/EmbedSky/u-boot-1.1.6/_install/* . /opt/EmbedSky/u-boot增加文件系统中其它必须的目录: dev home lib mnt opt proc root sys tmp var 这些目录可以在天嵌已经制作好的文件系统中复制过来。 使用制作yaffs2文件系统的软件mkyaffs2image ,把rootfs做成yaffs2文件系统的 镜像: #cd /opt/EmbedSky #mkyaffs2image rootfs rootfs.bin 烧写制作好的文件系统rootfs.bin到nand flash 0x00500000地址。
基于 Flash 的文件系统-Yaffs2
yaffs/yaffs2 是 专 为 嵌入 式系统 使 用 NAND 型 闪存 而设 计 的一种 日志型文件系统。 与 jffs2 相比 , 它 减 少了一 些 功 能 ( 例如不 支持 数据压缩 ) , 所以速度更快 , 挂载 时间很短 ,对内存的占用较小 。另外,它还是跨平台 的文 件系统, 除了Linux 和 eCos , 还支持 WinCE, pSOS和 ThreadX 等 。 yaffs 与 yaffs2 的主要区别在于, 前者仅支持小页 (512 Bytes) NAND 闪存 ,后者则可 支持大页 (2KB) NAND 闪存 。 同时, yaffs2 在内 存 空间 占 用、 垃圾回收速度 、读 / 写 速度等 方 面均 有 大幅 提 升 。
.
linux内核启动流程分析
action是描述process的运行方式的。 action可取的值包括:initdefault、sysinit、boot、bootwait 等. process为具体的执行程序。程序后面可以带参数 . process
分析/etc/init.d/rcS文件
制作Yaffs2根文件系统
系统初始化文件
文件系统的类型
Linux支持的常见的文件系统有: ext2(一般根文件系统 / 使用此文件系统) 、 NFS ( 网络 文件系统) 、 ext3、 ISO9660、 XFS、 Minx、 MSDOS、 UMSDOS、 VFAT、 HPFS、 NTFS、 SMB、 SysV、 PROC等。 随着时间的推移, Linux支持的文件系统数还会增加。
链接库 (/lib) 设备文件 (/dev) 系统应用程序 (/bin /sbin) 系统初始化文件 (/etc--inittab fstab rcS)
链接库
设备文件
在 Linux根文件系统中 , 所有设备文件 ( 设备节 点 )都放在 /dev 目录下 . 对嵌入式系统来说 , 目标板的 /dev 目录 并 不需要 像 一 般的Linux工作站那样填入太多内容 , 只需建立使系统能正 常工作的必要条目即可 .
BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。 BusyBox 包含了一些简单的工具,例如ls、 cat 和 echo等等,还包含了 一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些 人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像 是个大工具箱,它集成压缩了 Linux 的许多工具和命令。
设备文件
建立 /dev下的条目的方法有 4种 :
1.手动建立 /dev 条目 : #mknod –m 666 null c 1 3 2. 使用 devfs 自动建立 /dev条目 3. 使用 udev 自动建立 /dev条目 4. 使用mdev自动建立/dev条目
设备文件
udev :一般用于linux2.6.13或更高版本的内核上,在用户空 间自动建立 /dev 条目。 它通过在 sysfs 的 /class/ 和 /block/ 目录树中查找一个称为 dev 的文件,以确定所创建的设备节点文件的主次设备号。 所以要使用udev ,驱动必须为设备在sysfs 中创建类接口及 其dev属性文件。 使用 udev :
嵌入式Linux根文件系统
最简单的嵌入式系统
0x0 0x00200000 0x00500000 0x4000000
Bootloader
参数
系统内核
根文件系统
Flash
从低地址到高地址方向
文件系统的概念
什么是文件系统? 文件系统是对一个存储设备上的数据和元素进行组织的机制, 这种机制有利于用户和操作系统的交互。 文件系统的主要目标是提高外存空间的利用率,它要解决的 主要问题有:完成文件存储空间的管理,实现文件名到物理 地址的转换,实现文件和目录的操作,提供文件共享能力和 安全措施,提供友好的用户接口。
linux内核启动流程分析
/etc/inittab文件格式: id :runlevel:action:process id是指入口标识符,它是一字符串 runlevel是系统的运行级别:
运行等级设定如下: 0:关机 1:单用户模式 2:无网络支持的多用户模式 3:有网络支持的多用户模式 4:保留,未使用 5:有网络支持有X-Window支持的多用户模式 6:重新引导系统,即重启
制作Yaffs2根文件系统
解压busybox: tar –xvf /mnt/hgfs/share/busybox-1.16.0.tar.bz2 –C / /mnt/hgfs/share/busybox进入源码,修改Makefile: ARCH=arm; CROSS_COMPILE=arm-linuxCROSS_COMPILE=arm-linux进入配置菜单: make menuconfig Load an Alternate Configuration File ===》config_EmbedSky config_EmbedSky • Save Configuration to an Alternate File ===》.config config 退出配置菜单 #make #make install 在当前目录下生成_install目录
文件系统和根文件系统的区别
根文件系统首先是一种文件系统,具有普通文件系统的存储 数据文件的功能。 根文件系统是内核启动时所mount的第一个文件系统,系统 引导程序会在根文件系统挂载后从中把一些初始化脚本和服 务加载到内在中去运行。
文件系统的目录结构
根文件系统中的文件
在一个基本的 Linux 根文件系统中,应包括如下 的文件:
proc 文件系统
/proc :一个 虚拟文件系统,只存在于内存中,通过它可以 查询 、设置系统的 运 行 情况及各种系统 参 数。 系统中的很 多 应用都 依赖 于 proc 文件系统,如命令 lsmod 等 同于 cat /proc/modules 。 /proc 下的 “ 数字目录 ” 指代了 相 应 pid 的进程,如目录 “1” 下的内容就是 1 # 进程的 各 种 信息
基于 Flash 的文件系统-Cramfs
由 Linus Torvalds 参与开发的小型只读压缩文件系统 Inode 、文件名称和目录信息不压缩 单个文件最大为 16MB 数据压缩存放 适合不需要写、且体积较大的文件系统,如 /lib/opt 等 与 JFFS2 相比,读取速度快 压缩率可以超过 50 % 读取文件时,每次读取 4k 内容,解压缩到 cache 中 Linux 内核已提供了对 cramfs 的支持,只要编译时选中
•
嵌入式常用的文件系统 :Yaffs,Yaffs2, JFFS2, cramfs(只读) , /proc (用于 内核和进程 信息 )
虚拟文件系统VFS
虚拟文件系统VFS
基于 Flash 的文件系统-jffs2
Jffs2: 日志闪存文件系统版本 2 (Journalling Flash FileSystem v2) 主要用于 NOR 型闪存,基于 MTD 驱动层, 特点是:可读写的、支持 数据压缩的、并提供了崩溃 / 掉电安全保护,提供 “ 写平衡 ” 支持等。 缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2 的运行速度大大放慢。 jffsx 不适合用于 NAND 闪存主要是因为 NAND 闪存的容量一般较大, 这样导致 jffs 为维护日志节点所占用的内存空间迅速增大,另外, jffsx 文件系统在挂载时需要扫描整个 FLASH 的内容, 以找出所有的日志节 点,建立文件结构,对于大容量的 NAND 闪存会耗费大量时间。
ቤተ መጻሕፍቲ ባይዱ
制作Yaffs2根文件系统
新建一个目录用来制作文件系统并把busybox生成的目录复制进去 #mkdir -p -m 777 /opt/EmbedSky/rootfs #cd /opt/EmbedSky/rootfs #cp –rf /opt/EmbedSky/u-boot-1.1.6/_install/* . /opt/EmbedSky/u-boot增加文件系统中其它必须的目录: dev home lib mnt opt proc root sys tmp var 这些目录可以在天嵌已经制作好的文件系统中复制过来。 使用制作yaffs2文件系统的软件mkyaffs2image ,把rootfs做成yaffs2文件系统的 镜像: #cd /opt/EmbedSky #mkyaffs2image rootfs rootfs.bin 烧写制作好的文件系统rootfs.bin到nand flash 0x00500000地址。
基于 Flash 的文件系统-Yaffs2
yaffs/yaffs2 是 专 为 嵌入 式系统 使 用 NAND 型 闪存 而设 计 的一种 日志型文件系统。 与 jffs2 相比 , 它 减 少了一 些 功 能 ( 例如不 支持 数据压缩 ) , 所以速度更快 , 挂载 时间很短 ,对内存的占用较小 。另外,它还是跨平台 的文 件系统, 除了Linux 和 eCos , 还支持 WinCE, pSOS和 ThreadX 等 。 yaffs 与 yaffs2 的主要区别在于, 前者仅支持小页 (512 Bytes) NAND 闪存 ,后者则可 支持大页 (2KB) NAND 闪存 。 同时, yaffs2 在内 存 空间 占 用、 垃圾回收速度 、读 / 写 速度等 方 面均 有 大幅 提 升 。
.
linux内核启动流程分析
action是描述process的运行方式的。 action可取的值包括:initdefault、sysinit、boot、bootwait 等. process为具体的执行程序。程序后面可以带参数 . process
分析/etc/init.d/rcS文件
制作Yaffs2根文件系统