第5章-嵌入式Linux根文件系统构造要点课件.ppt

上传人(卖家):三亚风情 文档编号:2985186 上传时间:2022-06-19 格式:PPT 页数:78 大小:988KB
下载 相关 举报
第5章-嵌入式Linux根文件系统构造要点课件.ppt_第1页
第1页 / 共78页
第5章-嵌入式Linux根文件系统构造要点课件.ppt_第2页
第2页 / 共78页
第5章-嵌入式Linux根文件系统构造要点课件.ppt_第3页
第3页 / 共78页
第5章-嵌入式Linux根文件系统构造要点课件.ppt_第4页
第4页 / 共78页
第5章-嵌入式Linux根文件系统构造要点课件.ppt_第5页
第5页 / 共78页
点击查看更多>>
资源描述

1、第第5章嵌入式章嵌入式Linux根文件系统构造根文件系统构造岳希岳希2主要内容v根文件系统根文件系统vWindowsWindows文件系统类型文件系统类型vLinuxLinux文件系统类型文件系统类型vBusyBoxv根文件系统目录结构根文件系统目录结构v查看文件查看文件v根文件系统制作要点根文件系统制作要点v根文件系统制作实例根文件系统制作实例v制作根文件系统镜像制作根文件系统镜像3根文件系统根文件系统v理论上说一个嵌入式设备如果内核能够运行起来,理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的。且不需要运行用户进程的话,是不需要文件系统的。v文件系统

2、简单的说就是一种目录结构,由于文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统,文件系统就形成一定的目录结构也就是文件系统,文件系统是为用户反映系统的一种形式,为用户提供一个检是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。测控制系统的接口。4根文件系统根文件系统vLinux内核在系统启动期间进行的最后操作内核在系统启动期间进行的最后操作之一就是安装根文件系统。之一就

3、是安装根文件系统。v根文件系统一直都是所有类根文件系统一直都是所有类UNIX系统不可或系统不可或缺的组件缺的组件v根文件系统的顶层目录各有其特殊的用法和根文件系统的顶层目录各有其特殊的用法和目的。目的。5根文件系统根文件系统v根文件系统和普通的文件系统有什么区别呢?根文件系统和普通的文件系统有什么区别呢?v由于根文件系统是内核启动时挂载的第一个由于根文件系统是内核启动时挂载的第一个文件系统,那么根文件系统就要包括文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件启动时所必须的目录和关键性的文件例如例如Linux启动时都需要有启动时都需要有init目录下的相关文件目录下的

4、相关文件例如在例如在Linux挂载分区时挂载分区时Linux一定会找一定会找/etc/fstab这个挂载文件这个挂载文件6根文件系统根文件系统v若若Linux系统不能从指定设备上挂载根文件系统,系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。在不同的文件系统。Windows支持少量文件系统:支持少量文件系统: FAT16、 FAT32、NTFSLinux支持多种文件系统,包括支持多种文件系统,包括ext2、ext3

5、、vfat、ntfs、jffs、cramfs、ramfs、romfs、yaffs、 ramdisk等等 v为了对各类文件系统进行统一管理,为了对各类文件系统进行统一管理,Linux引入了引入了虚拟文件系统虚拟文件系统VFS(Virtual File System),为各类,为各类文件系统提供一个统一的操作界面和应用编程接口文件系统提供一个统一的操作界面和应用编程接口 7根文件系统根文件系统8根文件系统根文件系统v不同的文件系统类型有不同的特点,因而根据存储不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。设备的硬件特性、系统需求等有不同的应用场合。v基于基

6、于FLASH的文件系统的文件系统 jffs2、yaffs、cramfs、romfs v基于基于RAM的文件系统的文件系统Ramdisk、ramfs/tmpfsv网络文件系统网络文件系统NFS9根文件系统根文件系统vFlash作为嵌入式系统的主要存储媒介,有其自身作为嵌入式系统的主要存储媒介,有其自身的特性。的特性。Flash的写入操作只能把对应位置的的写入操作只能把对应位置的1修改修改为为0,而不能把,而不能把0修改为修改为1(擦擦 除除Flash就是把对应存就是把对应存储块的内容恢复为储块的内容恢复为1),因此,一般情况下,向,因此,一般情况下,向Flash写入内容时,需要先擦除对应的存储区

7、间,写入内容时,需要先擦除对应的存储区间,这种擦除是以块这种擦除是以块(block)为为 单位进行的。单位进行的。10WindowsWindows文件系统类型文件系统类型vFATFAT文件系统主要的优点就是它可以允许多种操文件系统主要的优点就是它可以允许多种操作系统访问,如作系统访问,如MS-DOS、Windows9x、Windows NT和和OS/2等。这一文件系统在使用时等。这一文件系统在使用时遵循遵循8.3命名规则命名规则(即文件名最多为即文件名最多为8个字符,扩展个字符,扩展名为名为3个字符个字符)。FAT32与与FAT16区别区别FAT32与与FAT16相比,它的一个簇的大小要相比,

8、它的一个簇的大小要比比FAT16小很多,所以可以节省磁盘空间。小很多,所以可以节省磁盘空间。11WindowsWindows文件系统类型文件系统类型vNTFSNTFS是是Windows 2000之后的高级文件系统,之后的高级文件系统,它支持文件系统故障恢复,尤其是大存储媒体、它支持文件系统故障恢复,尤其是大存储媒体、长文件名。长文件名。NTFS只能被只能被Windows 所识别,虽然它可以读取所识别,虽然它可以读取FAT文件系统,但其文件却不能被文件系统,但其文件却不能被FAT文件系统文件系统所存取。所存取。采用了更小的簇采用了更小的簇文件读取速度更高效文件读取速度更高效磁盘自我修复功能。磁盘

9、自我修复功能。12WindowsWindows文件系统类型文件系统类型vNTFSNTFS是专用于是专用于Windows NT/2000操作系统的高操作系统的高级文件系统,它支持文件系统故障恢复,尤其是级文件系统,它支持文件系统故障恢复,尤其是大存储媒体、长文件名。大存储媒体、长文件名。NTFS的主要弱点是它只能被的主要弱点是它只能被Windows NT/2000所识别,虽然它可以读取所识别,虽然它可以读取FAT文件系统和文件系统和HPFS文件系统的文件,但其文件却不能被文件系统的文件,但其文件却不能被FAT文件系文件系统和统和HPFS文件系统所存取,因此兼容性方面比文件系统所存取,因此兼容性方

10、面比较成问题。较成问题。13LinuxLinux文件系统类型文件系统类型vJFFS2文件系统文件系统JFFS2,日志闪存文件系统版本,日志闪存文件系统版本2 (Journalling Flash FileSystem v2)最早是由瑞典最早是由瑞典Axis Communications公司基于公司基于Linux2.0的内核为嵌入式系统开发的文件系统。的内核为嵌入式系统开发的文件系统。JFFS2是是RedHat公司基于公司基于JFFS开发的闪存文件开发的闪存文件系统,最初是针对系统,最初是针对RedHat公司的嵌入式产品公司的嵌入式产品eCos开发的嵌入式文件系统,所以开发的嵌入式文件系统,所以

11、JFFS2也可也可以用在以用在Linux, uCLinux中。中。14LinuxLinux文件系统类型文件系统类型vJFFS2文件系统文件系统主要用于主要用于NOR型闪存,基于型闪存,基于MTD驱动层,特点是:可读驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃并提供了崩溃/掉电安全保护,提供掉电安全保护,提供“写平衡写平衡”支持等。支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使的关系而使jffs2的运行速度大大放慢。的运行速度大大放慢。jff

12、s不适合用于不适合用于NAND闪存主要是因为闪存主要是因为NAND闪存的容量闪存的容量一般较大,这样导致一般较大,这样导致jffs为维护日志节点所占用的内存空为维护日志节点所占用的内存空间迅速增大,另外,间迅速增大,另外,jffs文件系统在挂载时需要扫描整个文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件结构,的内容,以找出所有的日志节点,建立文件结构,对于大容量的对于大容量的NAND闪存会耗费大量时间。闪存会耗费大量时间。15LinuxLinux文件系统类型文件系统类型vJFFS2文件系统文件系统JFFS2 较之较之JFFS 原型的改进包括原型的改进包括: - 提

13、高了系统的磨损性能以及废物收集功能提高了系统的磨损性能以及废物收集功能. - 提高了压缩性能提高了压缩性能 - 提高了提高了RAM 对系统内存要求的响应能力对系统内存要求的响应能力 - 改进了对并发过程的支持并支持将改进了对并发过程的支持并支持将Flash故障挂故障挂起起 - 支持硬连接支持硬连接 16LinuxLinux文件系统类型文件系统类型v制作制作jffs2镜像文件:镜像文件: mkfs.jffs2 r rootfs o rootfs-jffs2.imgv 使用工具使用工具yaffs2image实现文件制作实现文件制作如将文件夹如将文件夹rootfs中的文件制作成中的文件制作成yaff

14、s2文件系文件系统镜像统镜像mkyaffs2image rootfs rootfs.yaffs217LinuxLinux文件系统类型文件系统类型vYaffsyaffs是专为嵌入式系统使用是专为嵌入式系统使用NAND型闪存而设计的一种型闪存而设计的一种日志型文件系统。与日志型文件系统。与jffs2相比,它减少了一些功能相比,它减少了一些功能(例如例如不支持数据压缩不支持数据压缩),所以速度更快,挂载时间很短,对内,所以速度更快,挂载时间很短,对内存的占用较小。另外,它还是跨平台的文件系统,除了存的占用较小。另外,它还是跨平台的文件系统,除了Linux和和eCos,还支持,还支持WinCE, pS

15、OS和和ThreadX等。等。yaffs自带自带NAND芯片的驱动,并且为嵌入式系统提供了芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的直接访问文件系统的API,用户可以不使用,用户可以不使用Linux中的中的MTD与与VFS,直接对文件系统操作。当然,直接对文件系统操作。当然,yaffs也可与也可与MTD驱动程序配合使用。驱动程序配合使用。yaffs与与yaffs2的主要区别在于,前者仅支持小页的主要区别在于,前者仅支持小页(512 Bytes) NAND闪存,后者则可支持大页闪存,后者则可支持大页(2KB) NAND闪闪存。同时,存。同时,yaffs2在内存空间占用、垃圾回收速度、读

16、在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。写速度等方面均有大幅提升。18LinuxLinux文件系统类型文件系统类型vCramfscramfs是一个压缩式的只读文件系统,它并不是一个压缩式的只读文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的到内存之中,而只是在系统需要访问某个位置的数据的时侯,马上计算出该数据在数据的时侯,马上计算出该数据在cramfs中的位中的位置,将其实时地解压缩到内存之中,然后通过对置,将其实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的

17、数据内存的访问来获取文件系统中需要读取的数据。cramfs中的解压缩以及解压缩之后的内存中数中的解压缩以及解压缩之后的内存中数据存放位置都是由据存放位置都是由cramfs文件系统本身进行维护文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这的,用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间。又节省了存储空间。19LinuxLinux文件系统类型文件系统类型vCramfs拥有以下一些特性:拥有以下一些特性:采用实时解压缩方式,但解压缩的时侯有延迟。采用实时解压缩方式,但解压缩的时侯有延迟。

18、cramfs的数据都是经过处理、打包的,对其进先的数据都是经过处理、打包的,对其进先写操作有一定困难。所以写操作有一定困难。所以cramfs不支持写操作,不支持写操作,这个特性刚好适合嵌入式应用中使用这个特性刚好适合嵌入式应用中使用Flash存储存储文件系统的场合。文件系统的场合。在在cramfs中,文件最大不能超过中,文件最大不能超过16MB。20LinuxLinux文件系统类型文件系统类型 使用使用CRAMFS工具建立根文件系统的工具建立根文件系统的CRAMFS镜像:镜像: CRAMFS工具主要包括两个:工具主要包括两个:mkcramfs和和cramfsck,其中,其中cramfsck工具

19、是用来创建工具是用来创建cramfs文件系统的,而文件系统的,而mkcramfs工具则用来进行工具则用来进行cramfs文件系统的释放以及检查。文件系统的释放以及检查。 下面是下面是mkcramfs的命令格式:的命令格式:mkcramfs -h -e edition -i file -n name dirname outfile21LinuxLinux文件系统类型文件系统类型 -h:显示帮助信息:显示帮助信息-e edition:设置生成的文件系统中的版本号:设置生成的文件系统中的版本号-i file:将一个文件映像插入这个文件系统之:将一个文件映像插入这个文件系统之中中(只能在只能在Linu

20、x2.4.0以后的内核版本中使用以后的内核版本中使用)-n name:设定:设定cramfs文件系统的名字文件系统的名字dirname:指明需要被压缩的整个目录树:指明需要被压缩的整个目录树outfile:最终输出的文件:最终输出的文件例:例:mkcramfs rootfs rootfs.cramfs22LinuxLinux文件系统类型文件系统类型 cramfsck的命令格式:的命令格式:cramfsck -hv -x dir file-h:显示帮助信息:显示帮助信息-x dir:释放文件到:释放文件到dir所指出的目录中所指出的目录中-v:输出信息更加详细:输出信息更加详细file:希望测试

21、的目标文件:希望测试的目标文件例:例: cramfsck rootfs.cramfs 23LinuxLinux文件系统类型文件系统类型vRamfsRamfs是是Linus Torvalds开发的一种基于内存的文件系开发的一种基于内存的文件系统,工作于虚拟文件系统统,工作于虚拟文件系统(VFS)层,不能格式化,可以创层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。建多个,在创建时可以指定其最大能使用的内存大小。(实际上,实际上,VFS本质上可看成一种内存文件系统,它统一本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓了文件在内核中的表示方

22、式,并对磁盘文件系统进行缓冲。冲。)Ramfs/tmpfs文件系统把所有的文件都放在文件系统把所有的文件都放在RAM中,所中,所以读以读/写操作发生在写操作发生在RAM中,可以用中,可以用ramfs/tmpfs来存储来存储一些临时性或经常要修改的数据,例如一些临时性或经常要修改的数据,例如/tmp和和/var目录,目录,这样既避免了对这样既避免了对Flash存储器的读写损耗,也提高了数据存储器的读写损耗,也提高了数据读写速度。读写速度。24BusyBoxvBusyBox简介简介Busybox是一个集成了一百多个最常用是一个集成了一百多个最常用linux命命令和工具的软件。令和工具的软件。Bus

23、ybox在设计上充分考虑了硬件资源受限的特在设计上充分考虑了硬件资源受限的特殊工作环境。殊工作环境。平时用的那些平时用的那些linux命令就好比是分立式的电子命令就好比是分立式的电子元件元件,而而busybox就好比是一个集成电路就好比是一个集成电路,把常用把常用的工具和命令集成压缩在一个可执行文件里的工具和命令集成压缩在一个可执行文件里,功能功能基本不变基本不变,而大小却小很多倍。而大小却小很多倍。BusyBox 可以将可以将大约大约 3.5MB 的工具包装成大约的工具包装成大约 200KB 大小。大小。 在嵌入式在嵌入式linux应用中应用中,Busybox有非常广的应用有非常广的应用。

24、25BusyBoxvBusyBox原理原理它采用一种很巧妙的办法减少自己的体积:所有它采用一种很巧妙的办法减少自己的体积:所有的命令都通过的命令都通过“插件插件”的方式集中到一个可执行的方式集中到一个可执行文件中文件中,在实际应用过程中通过不同的符号链接来在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。确定到底要执行哪个操作。例如,很多基于文件的工具(比如例如,很多基于文件的工具(比如grep和和find)都需要在目录中搜索文件的代码。当这些工具被都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这合并到一个可执行程序中时,它们就可以共享这些相同的元

25、素,这样可以产生更小的可执行程序。些相同的元素,这样可以产生更小的可执行程序。26BusyBoxvBusyBox原理原理在构造文件系统时,工具包中的各个命令可以在在构造文件系统时,工具包中的各个命令可以在编译时选择或不选择编入编译时选择或不选择编入BusyBox,这样构建,这样构建一个小巧的、自定义的、完整的嵌入式环境。一个小巧的、自定义的、完整的嵌入式环境。BusyBox支持多种体系结构,可以支持静态或支持多种体系结构,可以支持静态或动态链接,以满足不同需求。动态链接,以满足不同需求。27BusyBoxvBusyBox的参考网站:的参考网站:http:/ 29根文件系统目录结构根文件系统目录

26、结构vLinux系统的根文件中每个目录中都包含特定内容:系统的根文件中每个目录中都包含特定内容: 1. /bin目录目录/ bin目录包含了引导启动所需的命令或普通用户可目录包含了引导启动所需的命令或普通用户可能用的命令能用的命令(可能在引导启动后可能在引导启动后)。这些命令都是二。这些命令都是二进制文件的可执行程序进制文件的可执行程序( b i n是是b i n a r y - -二进制二进制的简称的简称),多是系统中重要的系统文件。,多是系统中重要的系统文件。30根文件系统目录结构根文件系统目录结构 2. /sbin目录目录 /sbin目录类似目录类似/bin ,也用于存储二进制文件。因,

27、也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。以使用,但一般不给普通用户使用。3. /etc目录目录/etc目录存放着各种系统配置文件,其中包括了用目录存放着各种系统配置文件,其中包括了用户信息文件户信息文件/etc/passwd,系统初始化文件,系统初始化文件/etc/rc等。等。Linux正是靠这些文件才得以正常地运行。正是靠这些文件才得以正常地运行。4. /root目录目录/root 目录是超级用户的目录。目录是

28、超级用户的目录。31根文件系统目录结构根文件系统目录结构5. /lib目录目录/lib目录是根文件系统上的程序所需的共享库,存目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。行文件变得更小,节省空间。 /lib/modules 目录包含系统核心可加载各种模块,目录包含系统核心可加载各种模块,尤其是那些在恢复损坏的系统

29、时重新引导系统所需尤其是那些在恢复损坏的系统时重新引导系统所需的模块的模块(例如网络和文件系统驱动例如网络和文件系统驱动)。32根文件系统目录结构根文件系统目录结构6. /dev目录目录/dev目录存放了设备文件,即设备驱动程序,用户目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过通过这些文件访问外部设备。比如,用户可以通过访问访问/dev/mouse来访问鼠标的输入,就像访问其来访问鼠标的输入,就像访问其他文件一样。他文件一样。7. /tmp目录目录/tmp 目录存放程序在运行时产生的信息和数据。目录存放程序在运行时产生的信息和数据。8. /boot目录目

30、录/boot目录存放引导加载器目录存放引导加载器(bootloader)使用的文件,使用的文件,如如LILO、grub,核心映像也经常放在这里,而不,核心映像也经常放在这里,而不是放在根目录中。是放在根目录中。33根文件系统目录结构根文件系统目录结构 9. /mnt目录目录/mnt目录是系统管理员临时安装目录是系统管理员临时安装(mount )文文件系统的安装点。程序并不自动支持安装到件系统的安装点。程序并不自动支持安装到/mnt 。/mnt 下面可以分为许多子目录,例下面可以分为许多子目录,例如如/mnt/dosa 可能是使用可能是使用MSDOS文件系统的文件系统的软驱,而软驱,而/mnt/

31、exta 可能是使用可能是使用ext2文件系文件系统的软驱,统的软驱,/mnt/cdrom 光驱等等。光驱等等。10. /proc, /usr,/var,/home目录目录其他文件系统的安装点。其他文件系统的安装点。 34设备文件设备文件v设备类型主要包括字符设备(设备类型主要包括字符设备(Character Device)和块设备()和块设备(Block Device)。)。v字符设备主要指字符的输入输出设备如键盘、字符设备主要指字符的输入输出设备如键盘、鼠标等。鼠标等。v块设备主要指整块数据的输入输出设备,如块设备主要指整块数据的输入输出设备,如FLASH、硬盘等存储设备,一般包含缓冲区、

32、硬盘等存储设备,一般包含缓冲区机制。机制。35设备文件设备文件v查看设备文件命令查看设备文件命令ls lv例:例:-rw-r-r- 1 root root 2915 08-03 06:16 a36设备文件设备文件v第第1字段字段: 文件属性。总共有文件属性。总共有10个字母组成个字母组成第一个字符表示文件类型。第一个字符表示文件类型。 v-表示该文件是一个普通文件表示该文件是一个普通文件 vd表示该文件是一个目录表示该文件是一个目录vl表示该文件是一个链接文件表示该文件是一个链接文件vc表示该文件是一个字符设备文件表示该文件是一个字符设备文件vb的表示块设备文件的表示块设备文件vp表示该文件为

33、命令管道文件,与表示该文件为命令管道文件,与shell编程有关编程有关vs表示该文件为表示该文件为sock文件。与文件。与shell编程有关的文件编程有关的文件37设备文件设备文件v第第1字段字段: 文件属性。总共有文件属性。总共有10个字母组成个字母组成第第1字段后字段后9个字母表示该文件或目录的权限位。个字母表示该文件或目录的权限位。 r表示读表示读 (Read) 、w表示写表示写 (Write) 、x表示执行表示执行 (eXecute) 前三个表示文件拥有者的权限,中间三个表示文前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥件所属组拥有的权限,最后三

34、个表示其他用户拥有的权限。有的权限。38查看文件查看文件v第第2字段:字段: 链接占用的节点链接占用的节点如果是目录,则第如果是目录,则第2字段表示该目录所含子目录的个数字段表示该目录所含子目录的个数v第第3字段:文件(目录)拥有者字段:文件(目录)拥有者v第第4字段:文件(目录)拥有者所在的组字段:文件(目录)拥有者所在的组v第第5字段字段: 文件所占用的空间文件所占用的空间(以字节为单位以字节为单位)v第第6字段:文件(目录)最近访问(修改)时间字段:文件(目录)最近访问(修改)时间v第第7字段:文件名字段:文件名39根文件系统制作要点根文件系统制作要点v根文件系统的制作步骤根文件系统的制

35、作步骤构建根文件系统,并创建相关文件构建根文件系统,并创建相关文件按需配置按需配置BusyBox编译编译BusyBox,并安装到指定根文件系统,并安装到指定根文件系统创建根文件系统映像文件创建根文件系统映像文件40根文件系统制作要点根文件系统制作要点v构建根文件系统,并创建相关文件构建根文件系统,并创建相关文件确定根文件系统顶层目录结构确定根文件系统顶层目录结构v 在嵌入式在嵌入式Linux系统中,必须有的目录包括:系统中,必须有的目录包括:/bin,/dev,/etc,/lib,/proc,/sbin,和和/usr,其他目,其他目录都是可选的。(增加录都是可选的。(增加/mnt)41根文件系

36、统制作要点根文件系统制作要点v构建根文件系统,并创建相关文件构建根文件系统,并创建相关文件创建设备节点创建设备节点v设备以文件的方式存取。一个具体设备采用主设备以文件的方式存取。一个具体设备采用主设备号和次设备号来标识。设备号和次设备号来标识。v主设备号标示设备类型,每种设备类型对应一主设备号标示设备类型,每种设备类型对应一个设备驱动程序,一个主设备号可以有多个具个设备驱动程序,一个主设备号可以有多个具体设备对应。体设备对应。v次设备号用于区分具体设备次设备号用于区分具体设备42根文件系统制作要点根文件系统制作要点 只需要一些必备的条目及符号链接就可以满足系统只需要一些必备的条目及符号链接就可

37、以满足系统的运行。的运行。基本的基本的/dev条目包括:条目包括:文件名文件名 说明说明 类型类型 主编号主编号 次编号次编号 权限位权限位mem 物理内存存取物理内存存取 字符字符 1 1 600 null 黑洞设备黑洞设备 字符字符 1 3 666zero 以以null byte 字符字符 1 5 666 为数据来源为数据来源random 随机数产生器随机数产生器 字符字符 1 8 64443根文件系统制作要点根文件系统制作要点tty0 现行的虚现行的虚 字符字符 4 0 600 拟控制台拟控制台tty1 第一个虚第一个虚 字符字符 4 1 600 拟控制台拟控制台ttyS0 第一个第一个

38、UART 字符字符 4 64 600 串行端口串行端口tty 现行的控制台现行的控制台 字符字符 5 0 666console 系统控制台系统控制台 字符字符 5 1 60044根文件系统制作要点根文件系统制作要点v创建创建/dev中的条目:(使用中的条目:(使用mknod命令)命令)vmknod 设备名设备名 设备类型设备类型 主设备号主设备号 次设备号次设备号控制台设备,所有的输入输出都通过此设备完成控制台设备,所有的输入输出都通过此设备完成 sudo mknod console c 5 1 空设备空设备 # sudo mknod null c 1 3v对于常用设备,对于常用设备,Linu

39、x有约定俗成的编号,如硬盘有约定俗成的编号,如硬盘的主设备号是的主设备号是3v这些设备文件是这些设备文件是Linux很多驱动程序正常的工作的很多驱动程序正常的工作的基础基础45根文件系统制作要点根文件系统制作要点v制作根文件系统的镜像制作根文件系统的镜像 根文件系统的目录结构和内容都准备好根文件系统的目录结构和内容都准备好了之后,需要把它制成一个镜像文件,以便了之后,需要把它制成一个镜像文件,以便于将其下载到开发板上。于将其下载到开发板上。464748根根文件系统制作实例文件系统制作实例v一、创建文件系统所需的目录一、创建文件系统所需的目录v二、通过二、通过Busybox实现文件夹实现文件夹/

40、bin、/sbin和文件和文件linuxrc内容制作内容制作v三、其他文件制作三、其他文件制作1、/dev下建立设备节点文件下建立设备节点文件2、/etc下建立配置文件下建立配置文件3、主机、主机/etc/下面的文件下面的文件passwd, group, shadow到到/etc4、usr/init 49根根文件系统制作实例文件系统制作实例v一、创建文件系统所需的目录一、创建文件系统所需的目录v1、在、在/home目录下,建立目录下,建立rootfs的文件系的文件系统所需的目录统所需的目录 # sudo mkdir rootfsv2、在、在root文件夹中建立基本的目录文件夹中建立基本的目录

41、#sudo mkdir dev home proc tmp var boot etc lib mnt root sys usr 50根根文件系统制作实例文件系统制作实例v二、通过二、通过Busybox实现文件夹实现文件夹/bin、/sbin和文件和文件linuxrc内容制作,内容制作,51根根文件系统制作实例文件系统制作实例v1、下载、下载 busybox,并解压。,并解压。下载下载busybox源代码:源代码:http:/ CES-6410教学平台教学平台Linux实实验验第第5.2节节实验三实验三解压源码:解压源码:sudo tar jxvf busybox-1.15.2.tar.bz2

42、52根根文件系统制作实例文件系统制作实例v2、进入、进入busybox,修改,修改Makefile中的中的arch和编译工具路径。和编译工具路径。使用动态链接方式编译时需要把交叉编译动态使用动态链接方式编译时需要把交叉编译动态链接库文件复制到对应目录中。链接库文件复制到对应目录中。CROSS COMPILE ?=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ARCH ?=arm在在164行行在在190行行53根根文件系统制作实例文件系统制作实例v3、修改配置选项、修改配置选项make menuconfig Busybox Setting- build

43、option- (用共享库(动态库)用共享库(动态库) 选中选中Build shared libbusybox,将交叉编译的,将交叉编译的动态链接库或符号链接复制到对应的目录中。动态链接库或符号链接复制到对应的目录中。 54根根文件系统制作实例文件系统制作实例v3、修改配置选项、修改配置选项vBusybox Setting- installation option- 选中选中Dont use /usr。否则。否则make install 后后busybox被安装到宿主系统的被安装到宿主系统的/usr目录下,这目录下,这将覆盖掉系统原有的命令。选择该项后,将覆盖掉系统原有的命令。选择该项后,ma

44、ke install 后会在后会在busybox目录下生成一个叫目录下生成一个叫_install的目录,里面有的目录,里面有busybox和指向它的链和指向它的链接接55根根文件系统制作实例文件系统制作实例v3、修改配置选项、修改配置选项vBusybox Setting- Busybox Library Tuning -(增加(增加 shell的一些有关的一些有关操作)操作) 其他用默认值其他用默认值56根根文件系统制作实例文件系统制作实例v4、编译、编译busybox。 # sudo make install 安装工程文件到系统中安装工程文件到系统中 在在busybox/_install目录

45、下生成文件夹目录下生成文件夹bin、sbin和文件和文件linuxrc 57根根文件系统制作实例文件系统制作实例v5、修改、修改_install/bin/busybox的属性为的属性为4755。 # sudo chmod 4755 ./_install/bin/busybox chmod设置文件权限,一般三位数(后三位),第一个设置文件权限,一般三位数(后三位),第一个数字表示文件所有者的权限数字表示文件所有者的权限,第二个数字表示与文件所有第二个数字表示与文件所有者同属一个用户组的其他用户的权限者同属一个用户组的其他用户的权限,第三个数字表示其第三个数字表示其它用户组的权限。它用户组的权限。

46、权限分为三种:读权限分为三种:读(r=4),写写( w=2 ) ,执行执行( x=1 ),综合起来综合起来还有可读可执行还有可读可执行( rx=5=4+1 ) 、可读可写、可读可写( rw=6=4+2 ) 、可读可写可执行可读可写可执行(rwx=7=4+2+1)。 所以所以chmod 755 设置设置用户的权限为:用户的权限为: 1.文件所有者可读可写可执行文件所有者可读可写可执行 2.与文件与文件所有者同属一个用户组的其他用户可读可执行所有者同属一个用户组的其他用户可读可执行 3.其它用其它用户组可读可执行户组可读可执行.58根根文件系统制作实例文件系统制作实例v5、chmod 4755与与

47、chmod 755 的区别的区别 开头多了一位,这个开头多了一位,这个4表示其他用户执行文件时,具有表示其他用户执行文件时,具有与所有者相当的权限。与所有者相当的权限。 例如:例如:root用户创建了一个上网认证程序用户创建了一个上网认证程序netlogin,如,如果其他用户要上网也要用到这个程序,那就需要果其他用户要上网也要用到这个程序,那就需要root用用户运行户运行chmod 755 netlogin命令使其他用户也能运行命令使其他用户也能运行netlogin,但是但是netlogin执行时可能需要访问一些只有执行时可能需要访问一些只有root用户才有权访问的文件,那么其他用户执行用户才

48、有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网时可能因为权限不够还是不能上网,这种情况下,这种情况下,就可以用就可以用 chmod 4755 netlogin 设置其他用户在执行设置其他用户在执行netlogin也有也有root用户的权限,从而顺利上网用户的权限,从而顺利上网.59根根文件系统制作实例文件系统制作实例v6、把、把busyox/_install目录下生成的文件拷目录下生成的文件拷到到rootfs下下 # sudo cp -a ./busybox-1.15.2/_install/* .-a最主要的用法是在保留原文件属性的前提下复制文件 60根根文件系

49、统制作实例文件系统制作实例v三、其他文件制作三、其他文件制作v1、/dev下建立设备节点文件下建立设备节点文件dev/console,dev/null,dev/ttyS0,dev/ttySAC0。其他设备节点根据具体需要再建立。其他设备节点根据具体需要再建立。 # sudo mknod dev/console c 5 1 # sudo mknod dev/null c 1 3 # sudo mknod dev/ttySAC0 c 204 64 # sudo mknod dev/ttyS0 c 4 64. 61根根文件系统制作实例文件系统制作实例v2、/etc下建立配置文件下建立配置文件 1)建

50、立文件)建立文件# cd etc # sudo touch fstab group inittab mdev.conf passwd profile shadow # cd . # sudo mkdir etc/init.d # sudo touch etc/init.d/rcS 创建文件62根根文件系统制作实例文件系统制作实例v2、/etc下建立配置文件下建立配置文件 2)编辑)编辑profile文件,加入下面内容:文件,加入下面内容: #!/bin/sh #/etc/profile:system-wide .profile file for the Bourne shells echo -

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第5章-嵌入式Linux根文件系统构造要点课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|