- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux下根文件系统的制作解读
一、课题名称: linux下根文件系统生成 三、根文件系统1.根文件系统的结构 根文件系统是Linux内核启动后第一个挂载的文件系统。在根文件系统中存放着内核镜像、各种系统配置文件以及一些其他的重要文件(例如设备文件、命令程序等)。为了保证通用性,根文件系统的目录结构需要遵守FHS(文件系统层次标准)标准(Filesystem Hierarchy Standard)。FHS标准定义了根文件系统中每个目录名称及其作用的规则规范。如下图所示的是一个符合FHS标准的根文件系统: 下表是一个根文件系统中所需的主要目录。 2.创建根文件系统: 具体的步骤如下所示。 step 1 创建目录。step 2 创建必要的设备文件。step 3 安装所需的共享库。step 4 安装init文件、Shell和各种基本命令(可由busybox提供)。step 5 创建和编辑配置文件。 2.1 创建目录 首先创建一个新的目录rootfs,作为整个根文件系统的根目录,如: 这里创建了一个rootfs目录。当根文件系统制作完成后,可以将这个目录作为nfs服务的共享目录。 接着根据FHS标准依次创建各个子目录,如下所示: 这些目录多数需要手动创建,其中有一些目录可在安装busybox时自动创建。一般来说,根文件系统内的主要目录和文件都会以root身份创建,因为将来挂载到目标机之后,文件的所有者和权限都保持不变,而这些文件在目录机上都是系统文件,应该是root所有的。 2.2 创建根文件系统中的设备文件、命令文件 在创建根文件系统中的设备文件、命令文件时,最简单的办法就是直接复制桌面Linux系统中的文件。 (1)bin。bin目录下存放的是命令程序文件。在桌面Linux系统中包含了文件管理、系统管理和设置、磁盘管理等数百个命令文件。 具体操作如下所示: 上述命令的意思是指,将Linux系统中bin目录中的ls和date命令文件复制到rootfs/bin目录下。 (2)dev。dev目录下存放的是各种设备文件。 1)控制台设备。控制台终端用于显示各种信息,显示器是一种最常见的控制台终端。在linux系统中,控制台的设备文件是console。控制台在其他设备驱动初始化前就可以使用,因此常用来显示内核的启动信息。 2)虚拟控制终端。为了满足多用户多任务的需要,可以通过虚拟控制终端来使用控制台终端。例如tty1、tty2、tty3文件等。 3)串口终端。串口终端是使用串行端口连接的终端设备。在Linux系统中常用的串口终端设备文件有ttyS0、ttyS1等。在Linux2.6内核中ttyS0文件称为ttySAC0。 串口终端可以被指定为控制台终端来使用。例如在内核启动参数中可以设置console=ttySAC0,也就是把串口终端设备ttySAC0作为控制台设备使用。 和创建bin目录下命令文件的方法相同,只需要把桌面Linux系统中dev目录下的设备文件复制到rootfs/dev目录下就可以了。如下所示: 这里-a参数用来保留文件的所有属性,否则cp命令将试图从设备文件中读取内容并写入新文件。 在嵌入式系统中,出于某种需要可能不希望动态创建设备文件,这时,所需的设备文件就要用mknod命令预先在根文件系统内创建,或者将创建设备文件的命令写入系统的初始化脚本中。 有关mknod命令的介绍: mknod :创建特殊文件 语 法 mknod[必要参数][选择参数][主设 备号][次设备号] 功 能 建立一个目录项和一个特殊文件的 对应索引节点 建立的文件有三种 b:块设备 c:字符设备 p:管道文件 执行权限:超级用户 命令属性:系统设置 参数 必要参数 设备文件名 选择参数 -m 为新建立的文件设定默认权限--help 显示帮助信息--version 显示版本信息 (3)lib。lib目录下存放的是函数库文件。在嵌入式 linux系统中可以根据实际的需要选择各种库文件。对于使用动态编译方式编译的C应用程序来说,以下两个库文件是必须的。 libc: 该库是C应用程序必须使用的基本C函数库。 ld-linux: 该库是动态链接器,提供动态链接函数库的功能。 直接从交叉编译器的lib目录下把以上库文件复制到文件系统的lib目录下,如下所示: 一般来说,一个共享库会对应着一个包含真正内容的文件,同时有若干个符号链接指向它,这样做是为了便于管理。在复制共享库的时候尽量保持这一模式,将应用程序所需的符号
文档评论(0)