第三部分+文件系统.ppt_第1页
第三部分+文件系统.ppt_第2页
第三部分+文件系统.ppt_第3页
第三部分+文件系统.ppt_第4页
第三部分+文件系统.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三部分 Linux文件系统,第一章 Linux文件系统简介,基本概念,文件系统建立在块设备之上 一个物理存储设备可以划分为一个或多个分区 每个分区可以包含一个完整的文件系统 fdisk分区程序,文件系统格式化和挂载,以ext2文件系统为例: 格式化命令mke2fs 如 mke2fs /dev/sda1 挂载命令mount 如 mount -t ext2 /dev/sda1 /mnt,主要的文件系统类型(1)-ext3,对ext2的扩展,主要增加了日志功能 日志是对文件系统变化的记录 在系统意外关闭时,可以从日志记录恢复文件系统 避免耗时的文件系统连续性检查 兼容ext2,主要的文件系统类型(

2、2)-ReiserFS,与ext3类似,都是日志型的文件系统 提供API,实现高性能的原子文件系统操作 Reiser4,主要的文件系统类型(3)-JFFS2,主要用于NOR Flash Flash的特性 -Flash擦写效率低(需要整块擦除),且掉电时容易造成数据损坏 -Flash有预定的擦写寿命(10万次),多次擦写同一位置容易过早使Flash失效 JFFS2针对Flash的实现 -日志型文件系统 -采取损耗平衡技术,每次写入时都会尽量使写入的位置均匀分布 制作工具mkfs.jffs2 内核需要支持JFFS2,主要的文件系统类型(4)-cramfs,用于ROM的文件系统,只读 压缩存储 制作

3、工具mkcramfs 挂载 如 mount -o loop cramfs.image /mnt,主要的文件系统类型(5)-NFS,文件系统目录存在于NFS服务器上,客户端将该文件系统挂载到本地的目录上 挂载 mount -t nfs 192.168.10.9:/home/user /mnt 适合于嵌入式程序的开发和调试 将NFS作为根文件系统 -内核配置项 NFS file system support Root file system on NFS 通过Bootloader传递内核参数,主要的文件系统类型(6)-procfs,提供正在运行的系统信息、内核信息等 挂载 mount -t pro

4、c none /proc 每个运行的进程都有对应的以PID命名的目录项,目录中包含cmdline(命令行),maps(内存映射)等进程运行时信息 一些系统工具从proc文件系统中读取信息,如ps,top,free,uptime,monut等,主要的文件系统类型(7)-sysfs,包含系统中的设备和驱动程序的信息 挂载 mount -t sysfs none /sys systool工具(将sysfs下的设备信息以可读性较好的方式显示),主要的文件系统类型(8)-ramfs,tmpfs,内存中的文件系统,数据在掉电或重启后丢失 可以根据需要改变大小 挂载 mount -t tmpfs none

5、/tmp 可用于保存系统运行时的临时数据文件等,重启后自动清空,主要的文件系统类型(9)-YAFFS,主要用于NAND Flash YFFS2针对Flash的实现 -日志型文件系统 -采取损耗平衡技术,每次写入时都会尽量使写入的位置均匀分布 制作工具mkyaffsimage 需要内核支持,第二章 MTD子系统,什么是MTD,内存技术设备(Memory Technology Device) 将底层设备的复杂性同上层数据的组织和存储分离,启用MTD,内核配置选项 CONFIG_MTD CONFIG_MTD_CHAR CONFIG_MTD_BLOCK CONFIG_MTD_MTDRAM CONFIG

6、_MTD_TOTAL_SIZE CONFIG_MTD_ERASE_SIZE,MTD设备使用,MTD RAM驱动加载 insmod MTDblock insmod MTDram JFFS2文件系统的烧写和加载 insmod jffs2 dd if=jffs2.bin of=/dev/MTDblock0 mkdir /mnt/flash mount -t jffs2 /dev/MTDblock0 /mnt/flash ls -l /mnt/flash 保存修改 dd if=/dev/MTDblock0 of=./new_jffs2.bin,MTD的配置(1),设备板flash配置MTD步骤 -指定

7、分区 -指定flash的类型和位置 -配置flash驱动 -配置内核驱动,MTD的配置(2),指定flash分区 内核配置选项 -MTD partitioning support 传递分区信息给内核的三种方式 -Redboot分区表解析 -内核命令行参数传递 mtdparts=MainFlash:384K(Redboot),4K(config),128K(FIS),-(unused) -映射驱动程序 drivers/MTD/maps/ 显示分区信息 cat /proc/mtd,MTD的配置(3),flash驱动程序 -CFI(通用闪存接口,Common Flash Interface)或JED

8、EC接口标准,可以检测制造商、类型、容量、块大小等flash信息 -内核配置选项 RAM/ROM/Flash chip drivers -flash驱动目录drivers/MTD/chips/,MTD的配置(4),flash的初始化 主要数据结构: struct platform_device struct resource struct platform_data flash设备注册 platform_add_devices(),第三章 Busybox,Busybox简介,提供命令行程序,“嵌入式Linux的瑞士军刀” 小巧高效,适合资源受限的嵌入式平台 模块化、可配置、裁剪,配置过程和内核

9、相似 支持部分常用的命令选项 命令行程序包含在一个可执行文件中,通过软链接建立各个单独的命令,Busybox的使用,解压缩源码包 make menuconfig -Build Options选项中可以选择静态链接(static)或动态链接,以及是否使用交叉编译 -选择其他需要的命令行工具 make CROSS_COMPILE=arm-unknown-linux-gnu- -编译完成后在源码的根目录下生成busybox可执行文件,Busybox的操作,可以直接执行,如 #busybox(列出当前支持的所有命令) #busybox ls(执行ls命令) 通过软链接执行,如 #ln -s busyb

10、ox ls #ls busybox会通过判断argv0参数来决定执行哪个命令,Busybox的init程序,内核加载根文件系统后查找init程序(如/sbin/init、/bin/init等)或内核命令行参数中指定的“init=”选项 init程序解析/etc/inittab文件,其中指定了系统启动时应执行的初始化脚本和其他配置 Busybox的init程序具有同样的功能,如/etc/inittab不存在,使用默认的inittab 通常Busybox的init程序执行的初始化脚本是/etc/init.d/rcS,Busybox的安装,安装即创建符号链接,之后不需要每次输入命令时都要输入busy

11、box make CONFIG_PREFIX=“目标目录” install -将busybox可执行程序和符号链接安装到目标目录下,如嵌入式linux设备上的根文件系统的/bin目录,只安装当前busybox配置中支持的命令 也可以在运行时执行 busybox install s (需要先加载proc文件系统),课后练习:NFS根文件系统配置,服务器的配置 -软件包安装 nfs-kernel-server nfs-common portmap -目录导出 /etc/exports配置文件 -启动服务 /etc/init.d/nfs-kernel-server start 客户端(设备端)配置

12、-内核配置项 nfs client support root filesystem on nfs -启动时内核参数设置 root=/dev/nfs rw nfsroot=192.168.1.1:/home/study/rootfsnogui ip=192.168.1.8:192.168.1.1:192.168.1.1:255.255.255.0:study:eth0:off,第四章 常用开发工具介绍,调试工具,gdb 用于调试应用程序的命令行工具 具有完善的调试功能,如设置断点、查看或监视变量的值、单步运行、堆栈回溯、查看源代等 如需使用gdb调试,应用程序使用gcc编译时需加上-g选项 调试

13、开发板的程序需要交叉调试工具,如arm-linux-gdb,也就是标准gdb的ARM版本,交叉调试工具运行在主机平台,可以通过串口或网口调试远端开发板上运行的程序 图形界面(DDD),代码浏览工具,cscope 可以查看代码中函数的调用关系,如查找该函数在何处被调用,或者查找变量在何处被引用,类似Source Insight 使用前需要先生成数据库,内核代码的Makefile支持该数据库的生成,可以直接在代码的根目录下执行make cscope 图形前端(KDE环境下的kscope) ctags 可以在查看代码时跳转到函数、变量、宏等的定义处 使用前使用ctags命令生成交叉引用数据库,同样,

14、内核代码的Makefile支持该数据库的生成,可以直接在代码的根目录下执行make ctags 在vi编辑器环境下可以使用这两个插件,定制类似Source Insight的代码浏览工具,追踪和分析工具,strace 查看程序运行时使用的系统调用,包括系统调用的参数和返回值等,可以用来检查系统调用执行的正确性,如文件打开是否成功等 ltrace 查看程序运行时使用的库函数,如标准C库调用,包括参数和返回值等正确性,可以用来检查库函数执行的正确性 对于开发板运行的应用程序,需要使用这两个工具的ARM版本,且需要在开发板上运行(可使用NFS),其他二进制工具,readelf 查看ELF格式可执行程序的组成(ELF头、各种段、调试信息等) objdump 可以查看可执行程序的反汇编代码 objcopy 可以转换各种二进制格式,如将ELF格式转成BIN格式(不带文件头),如 Arm-l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论