第2部分第9次课件文件系统构建_第1页
第2部分第9次课件文件系统构建_第2页
第2部分第9次课件文件系统构建_第3页
第2部分第9次课件文件系统构建_第4页
第2部分第9次课件文件系统构建_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、构建嵌入式根文件系统李超李超Phonemail:大纲 文件系统含义 FHS 构建文件系统的利器busybox 根文件系统实验 Linux系统由系统由内核和文件内核和文件系统两大部系统两大部分构成分构成 内核各个模内核各个模块之间相互块之间相互联系,密不联系,密不可分可分内核内核文件系统文件系统文件文件文件文件文件文件进程进程管理管理内存内存管理管理文件文件系统系统网络网络协议栈协议栈设备驱动管理设备驱动管理底层硬件底层硬件什么叫文件系统?q定义一:定义一: 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备,可以包含一

2、个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点;一旦文件系统被挂载,就可以对它进行存取定义二:定义二:文件系统是在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区组织文件的方法,如NTFS或FAT;定义三:定义三:文件系统是文件的数据结构或组织方法。在Unix中,文件系统涉及两个非常独特的事情,目录树或在磁盘或分区上文件的排列;定义四:定义四:文件系统是基于操作系统的,建立在磁盘媒质上的可见体系结构,例如这种结构对于一个Unix用户来说可以用ls 或其它工具可以看到;定义五:定义五:文件系统是基于被

3、划分的存储设备上的逻辑上单位上的一种定义文件的命名、存储、组织及取出的方法;定义六:定义六:In computing, a file system is a method for storing and organizing computer files and the data they contain to make it easy to find and access them. File systems may use a storage device such as a hard disk or CD-ROM and involve maintaining the physical

4、location of the files, or they may be virtual and exist only as an access method for virtual data or for data over a network (e.g. NFS).在计算机业,一个文件系统是有组织存储文件或数据的方法,目的是易于查询和存取。文件系统是基于一个存储设备,比如硬盘或光盘,并且包含文件文件物理位置的维护;也可以说文件系统也是虚拟数据或网络数据存储的方法,比如NFS; Linux内核源代码情景分析一书的解释文件系统分类v基于磁盘的文件系统:它管理在本地磁盘分区中的内容。如ext2

5、,ntfs,fat等v网络文件系统:该文件系统可以使应用程序能够访问网络上的其他计算机。典型的有NFS、SMB等v特殊的文件系统:这些文件系统并不需要管理磁盘空间,但是也有类似文件系统的接口,如/proc文件系统 FHS实际上仅是规范在根目录(/)下面各个主要目录应该放什么样的文件 FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据 第二层则是针对 /usr及 /var这两个目录的子目录来定义 具体标准内容可以在具体标准内容可以在http:/ FHS规则是非强制性规则,但是还是强烈建议大家遵循 BusyBox 最初是由 Bruce Perens 在 1996 年为 Deb

6、ian GNU/Linux 安装盘编写的。 其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统 Busybox原理/ test.c#include int main( int argc, char *argv )fork();execve(argv1);return 0; BusyBox 使用了符号链接以便使一个可执行程序看起来像很多程序一样。对于BusyBox中包含的每个工具来说,都会这样创建一个符号链接,这样就可以使用这些符号链接来调用 BusyBox 了。BusyBox 然后可以通过 argv0 来调用内部工具 裁减、编译busybox 从 BusyBox 的 Web 站点上

7、(http:/)下载最新版本的 BusyBox # tar xjvf busybox-1.1.0.tar.bz2 make menuconfigBuild Options选项配置 Installation Options Networking Utilities子菜单选项 # make # make install安装完成后,在安装完成后,在/armsys2410/myfs目录下存放着目录下存放着busybox生成的内容生成的内容 必须要添加相应的库文件,否则会出现诸如下列的错误:Kernel panic: No init found. Try passing init= option to

8、kernel.glibc库和uClibc库Glibc 是提供系统调用和基本函数的 C 库glic库通常使用于X86架构的Linux系统,它虽然非常完备,但是却非常庞大,对于嵌入式系统来说,使用它意味着内存的消耗也会非常巨大 uClibc 是一个小型的 C 库,应用于嵌入式 Linux 系统开发。它基本实现了 glibc 的功能,几乎所有 glibc 支持的应用程序都能在 uClibc 上运行 嵌入式开发板用到的库ld-2.3.2.so libjpeg.so libpthread.so.0ld-linux.so.2 libjpeg.so.62 libresolv-2.3.2.solibacl.s

9、o.1 libjpeg.so.62.0.0 libresolv.so.2libacl.so.1.0.3 libm-2.3.2.so librt-2.3.2.solibc-2.3.2.so libm.so.6 librt.so.1libcrypt-2.3.2.so libnsl-2.3.2.so libSegFault.solibcrypto.so.0.9.7a libnsl.so.1 libthread_db-1.0.solibcrypto.so.4 libnss_compat-2.3.2.so libthread_db.so.1libcrypt.so.1 libnss_compat.so.2

10、 libutil-2.3.2.solibc.so.6 libnss_files-2.3.2.so libutil.so.1libdl-2.3.2.so libnss_files.so.2 libuuid.so.1libdl.so.2 libnss_hesiod-2.3.2.so libuuid.so.1.2libgcc_s-3.3.so.1 libnss_hesiod.so.2libgcc_s.so.1 libpthread-0.10.so裁减库 不管是glibc还是uClibc库,都没有必要将其全部拷贝到嵌入式系统开发板上,仅仅把需要用到的共享库和主修订版本的符号链接拷贝到嵌入式系统开发板上

11、是最佳的选择。如何确定需要哪些库?如何确定需要哪些库?方法1:readelf工具 # arm-linux-readelf -a busybox | grep Shared library 0 x00000001 (NEEDED) Shared library: libcrypt.so.1 0 x00000001 (NEEDED) Shared library: libc.so.6从上面可以看出busybox使用到了libcrypt.so.1和libc.so.6两个库文件 方法2:arm-uclibc-ldd # arm-uclibc-ldd busyboxlibcrypt.so.1 =/roo

12、t/Myrootfs /lib/libc.crypt.so.1lic.so.6=/root/Myrootfs /lib/libc.so.6“=”左边表示所需要的共享库名称,右边为该库文件在根文件系统中的实际位置。棕上所述,可以将应用程序所使用到的库全部找出来,并将其复制到相综上所述,可以将应用程序所使用到的库全部找出来,并将其复制到相应的根文件系统的 目录下,这样就完成了库文件的裁减。 #cd /armsys2410/myfs #mkdir proc tmp dev root mnt home init=PATH_TO_YOUR_INIT vivi param set linux_cmd_li

13、ne noinitrd root=/dev/mtdblock/2 init=/linuxrc console=ttyS0 内核启动最后阶段便会执行根目录下的linuxrc程序 典型init程序执行System V init System V是Unix系统众多版本中非常重要的一个,它由AT&T开发,在1983年发布。迄今为止共发行了4个版本,其中System V Release 4是最成功的版本,它具有Unix共同的特性,比如完成系统应用程序初始化。在REDHAT9.0系统上,init程序存放在/sbin目录下,它主要的用途就是根据/etc/inittab脚本文件启动各种应用进程 bus

14、ybox init 号称瑞士军刀的busybox不仅能够提供命令工具,还提供与System V init类似的处理系统启动的工作。它能完成System V init绝大部分的功能,非常高效,特别适合于嵌入式系统使用,避免了嵌入式环境下使用System V init所附带的额外特性所拖累,但是使用busybox init并不总是优点,例如它并不能提供运行级别的支持。 busybox init执行流程busybox init进程会依次执行如下工作:为init设置信号处理进程初始化控制台剖析/etc/inittab文件执行系统初始化命令行,缺省情况下系统初始化命令会存放在/etc/init.d/rc

15、S脚本文件执行所有会导致init暂停的inittab命令(动作类型:wait)执行所有仅执行一次的inittab命令(动作类型:once)生成busybox时,在其目录下有一个inittab和rcS文件范例,可以直接使用# mv /armsys2410/tmp/busybox-1.1.0/example/bootfloopy/etc /armsys2410/myfs 制作根文件系统压缩包远程文件系统挂接PC机上启动NFS服务,这样别人机器就可以将PC机上的某个目录挂接到自己的某个目录下在vivi下修改内核启动时到远程PC机上挂载文件系统param set linux_cmd_line console=ttyS

温馨提示

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

评论

0/150

提交评论