linux下根文件系统的制作_第1页
linux下根文件系统的制作_第2页
linux下根文件系统的制作_第3页
linux下根文件系统的制作_第4页
linux下根文件系统的制作_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

linux实践考察

——linux下根文件系统的制作一、课题名称:

linux下根文件系统生成三、根文件系统

1.根文件系统的结构

根文件系统是Linux内核启动后第一个挂载的文件系统。在根文件系统中存放着内核镜像、各种系统配置文件以及一些其他的重要文件(例如设备文件、命令程序等)。为了保证通用性,根文件系统的目录结构需要遵守FHS(文件系统层次标准)标准(FilesystemHierarchyStandard)。FHS标准定义了根文件系统中每个目录名称及其作用的规则规范。如下图所示的是一个符合FHS标准的根文件系统:下表是一个根文件系统中所需的主要目录。2.创建根文件系统:具体的步骤如下所示。step1创建目录。

step2创建必要的设备文件。

step3安装所需的共享库。

step4安装init文件、Shell和各种基本命令(可由busybox提供)。

step5创建和编辑配置文件。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目录下,如下所示:一般来说,一个共享库会对应着一个包含真正内容的文件,同时有若干个符号链接指向它,这样做是为了便于管理。在复制共享库的时候尽量保持这一模式,将应用程序所需的符号链接与包含真正内容的共享库文件一起复制过去。(4)etc。etc目录下存放的是Linux系统的配置文件,etc目录中的配置文件主要任务是负责文件系统的初始化工作。1).在etc/init.d下创建rcS文件具体操作如下所示:2)下面是一个初始化脚本的例子。2.3使用busybox1.BusyBox介绍

busybox是嵌入式系统中常用的一个软件包,它把许多常用的Linux命令都集成到一个单一的可执行程序中,几乎只需要这一个可执行程序加上Linux内核就可以构建一个基本的Linux系统。busybox忽略了许多不常用的功能,因此非常小巧,并且是完全模块化的,可以很容易地在编译时增加或删除其中包含的命令。2.BusyBox工作原理

BusyBox最初是为DebianGNU/Linux安装盘编写的。其目标是在一张软盘上创建一个可以引导的Linux系统,用来制作安装盘。一张软盘的容量大约为1.4MB,所以并没有多少空间留给Linux内核以及文件系统。为此BusyBox提出了合并命令程序文件的思想。通过这个方法可以把3.5MB大小的命令程序包(也就是bin目录)压缩到只有200KB大小。为此,BusyBox获得了“瑞士军刀”的美誉。下面通过一个实例来看看BusyBox合并程序文件的基本方法。

例如:test.c其中main函数的参数argc用于接收从控制台传递过来的参数个数,参数argv数组用于接收从控制台传递过来的具体参数。

编译test.c产生test文件,并为test文件分别创建两个链接文件t1和t2。如下所示:可以看到,通过main函数的argc和argv参数可以接收从控制台传递过来的命令信息。

根据这个原理,BusyBox把bin目录下常用命令程序的代码集成到一个busybox文件中。使得busybox文件中不会重复相同功能的代码。然后BusyBox为busybox文件创建了多个链接文件,每个链接文件表示一个命令程序(链接文件的名称就是各个命令程序的名称)。BusyBox通过链接文件把具体命令传递给busybox,由busybox完成各个命令的运行任务。

如下图所示:此外,BusyBox还直接提供了etc目录下的主要配置文件,大大减轻了制作根文件系统的工作3.编译和安装BusyBox

首先对BusyBox压缩包解压缩后进入BusyBox的根目录,然后进行功能配置。运行命令“makemenuconfig”启动BusyBox的配置工具,如下图所示。可以看到,配置界面中把配置选项分成了BusyBoxSettings和Applets两大部分。1)BusyBoxSettings(BusyBox设置)

GeneralConfiguration。该选项是BusyBox的常规配置选项,一般不需要改动里面的默认设置。

BuildOptions。该选项用于设置BusyBox的编译方式。

BuildBusyBoxasastaticbinary。该选项用于选择是否使用静态编译方式。如果选择采用静态编译,则生成的busybox命令文件在运行时就不需要额外的函数库支持。为了简单起见,这里建议选择使用静态编译方式。Buildsharedlibbusybox。该选项用于选择是否编译BusyBox动态库。

BuildwithLargeFileSupport(foraccessingfiles>2GB)。该选项用于选择BusyBox是否支持容量大于2GB的文件系统。

CrossCompilerprefix。该选项用于设置交叉编译器的前缀。DebuggingOptions。该选项用于设置BusyBox的调试方式。

InstallationOptions。该选项用于设置BusyBox制作的根文件系统的安装路径。

BusyBoxLibraryTuning。该选项用于设置BusyBox库的一些调整配置。编译BusyBox

输入命令“make”对BusyBox的源代码进行编译。编译完成后会在BusyBox的根目录下生成一个可执行文件busybox,如下所示:测试BusyBox能否正常运行:

把ls作为busybox的参数,让busybox执行ls的功能。从结果看出,busybox执行了ls的功能列出了当前目录下的文件。接着运行命令“makeinstall”进行安装。安装完毕后会在BusyBox的根目录下生成一个_install目录。在_install目录下有bin、sbin和usr目录以及一个linuxrc链接文件。bin和sbin目录中全是指向BusyBox命令文件的链接文件。如下所示。其中,symboliclink是符号链接的意思。linuxrc也是一个指向busybox命令文件的链接文件,如下所示:linuxrc是BusyBox提供的init程序,和/sbin/init程序的作用是相同的。如果要使用linuxrc程序,只需要在内核的启动命令参数中通过“init=linuxrc”进行设定。

一般情况下,BusyBox提供的配置文件能够满足大多数应用环境的需要。所以可以直接把_install目录以及/examples/bootfloppy/etc目录下所有的文件(包括各个子目录)

温馨提示

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

评论

0/150

提交评论