3-构建嵌入式linux系统-根文件系统

上传人:工**** 文档编号:569308688 上传时间:2024-07-28 格式:PPT 页数:31 大小:85KB
返回 下载 相关 举报
3-构建嵌入式linux系统-根文件系统_第1页
第1页 / 共31页
3-构建嵌入式linux系统-根文件系统_第2页
第2页 / 共31页
3-构建嵌入式linux系统-根文件系统_第3页
第3页 / 共31页
3-构建嵌入式linux系统-根文件系统_第4页
第4页 / 共31页
3-构建嵌入式linux系统-根文件系统_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《3-构建嵌入式linux系统-根文件系统》由会员分享,可在线阅读,更多相关《3-构建嵌入式linux系统-根文件系统(31页珍藏版)》请在金锄头文库上搜索。

1、嵌入式Linux移植广东省嵌入式软件公共技术中心2007年7月14日根文件系统w文件系统在磁盘上组织文件的方法;w不同的操作系统都有一种把数据保存为文件和目录的方法(不同文件系统);l如:windows操作系统中,不同的磁盘分区有独立的根目录,并且用唯一的驱动器标识符表示,比如C:,D:等;lLinux的文件系统组织和windows不同,它的文件系统是一个整体,把所以的文件系统结合成一个完整的统一体,这就是linux的根文件系统。课程内容w根文件系统介绍w制作根文件系统wInit程序启动流程什么是Linux根文件系统w使用Linux的时候,通过命令“ls /” 就会发现:l在/下包涵很多的目录

2、,比如etc、usr、var、bin . . 等目录;l而在这些目录中还有很多的目录或文件;l文件系统在Linux下看上去就象树形结构,l所以可以把文件系统的结构形象的称为树形结构。 wlinux文件系统的最顶端是“/”;w我们称“/”为Linux的根,也就是 Linux操作系统的根文件系统。wLinux的文件系统的入口就是“/”,所有的目录、文件、设备都在“/”之下。根文件系统目录结构wLinux遵守文件系统科学分类标准(FHS),一个定义许多文件和目录的名字和位置的标准。w一个linux的根文件系统目录结构如下:n/ lLinux文件系统的入口,也是处于最高一级的目录;n/bin l系统所

3、需要的那些命令位于此目录,比如 ls、cp、mkdir等命令;这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里n/boot lLinux的内核及引导系统程序所需要的文件目录;如内核的映像文件,启动加载器(GRUB);根文件系统目录结构n/dev l设备文件存储目录,比如声卡、磁盘. .n/etc l系统配置文件的所在地,一些服务器的配置文件也在这里;比如/etc/inittab是init进程的配置文件,etc/fstab是用来指定启动时需要自动安装的文件系统列表。 n/home l普通用户家目录默认存放目录; n/libl 库文件存放目录 n

4、/mnt l这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。根文件系统目录结构nproc l操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录 ;n/root lLinux超级权限用户root的目录;n/sbin l大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令 ,如ifconfign/tmp l临时文件目录 n/usr l这个是系统存放程序的目录,比如命令、帮助文件等。 n/var l目录包含在正常操作中被改变的文件:假脱机文件

5、、记录文件、加锁文件、临时文件和页格式化文件 。文件存放规则w为了实现各种linux版本系统的标准化,各种版本的linux系统都会遵循FHS标准;主要规则如下:l配置文件放在/etc目录下;l设备文件放在/dev目录下;l库文件放在目录/lib目录下;l存放系统编译后的可执行文件、命令的目录是/bin、/sbin、/usr/bin、/usr/sbin目录最少的目录w在嵌入式系统中,根目录下的很多目录都可以删除,如下:l为多用户提供可扩展环境的所以目录都应该删除;如(/home,/mnt,/root)l根据引导加载情况,/boot目录可以删除。w其余的目录l/bin,/dev,/etc,/pro

6、c,/sbin,/usr,/lib都是不可缺少的。构建根文件系统wLinux的根文件系统包括支持linux系统正常运行的基本内容,至少应包括以下几项内容:l基本的文件系统结构,如bin、dev、etc、sbin,lib、usr、proc。l基本程序运行所需的动态库。l基本的系统配置文件。l必要的设备文件支持。l基本的应用程序,如sh、ls、cp等w构建根文件系统就是往相应的目录添加相应的文件。如:l在/dev添加设备文件,l在/etc添加配置文件,l在/bin添加命令或者程序,l在/lib添加动态库等。添加设备文件wLinux对所有外部设备的访问都是以文件的形式来进行;w在Linux系统中,可

7、以找到设备对应的文件,称为设备文件;w设备文件(也叫做设备节点)都存放在/dev的目录下;添加设备文件w在/dev目录下,建立设备文件的命令是mknod;如:mknod /dev/led c 231 0上面例子中 “/dev/led”是设备文件路径;“c”是指定为字符设备;“231”是主设备号;“0”是次设备号。wLinux系统是靠主、次设备号来联系驱动程序和设备文件的;w在内核源码树中,Documentation/devices.txt 文件描述了常用的linux驱动程序的主、次设备号;添加设备文件wLinux内核完全可以自己管理设备文件,这就是设备文件系统(devfs);w设备文件系统可以

8、在配置内核时定制;其层次是make menuconfig-File systems- Pseudo file-system-/dev file system support;w内核启动的时候就会把设备文件系统挂载到/dev目录下;w有了设备文件系统,linux设备文件的创建、删除都由各自设备驱动程序管理,不再需要用mknod命令来添加设备文件了;添加动态库w应用程序的运行需要动态链接库,交叉编译的应用程序需要交叉编译的动态库;w假如我们用的工具链的路径是,链接库的目录是/usr/local/arm/3.3.2/arm-linux/lib; w此目录下有四种类型的文件 :l实际的共享链接库 ,如

9、:libc-2.3.2.so l主修订版本的符合链接 ,如:libc.so.6 l与版本无关的符合链接 ,如:libc.so l静态链接库包文件 ,如:libc.aw应用程序的运行只依赖于:实际的共享链接库和主修订版本的符合链接 ;因此,在构建嵌入式根文件系统中,只需添加以上两种库文件。添加动态库w在向目标板的根文件系统复制动态库之前,必须找出应用程序需要那些动态库;w下面介绍几个主要的动态链接库:ld动态链接器libc 主C链接库libcrypt秘密学链接库libdl用来动态加载共享文件的动态库libm数学库libpthread多线程库添加动态库w除了记下应用程序连接了哪些链接库之外,还可以

10、通过arm-linux-readelf命令来找出应用程序依赖于哪些动态链接库;如:arm-linux-readelf -d hello; /hello只是打印一句“hello”的程序;添加内核模块w内核源码中的顶层Makefile文件包含了modules_install目标;w在缺省情况下,内核模块会安装到/lib/modules目录下;w然而,我们使用的是交叉开发,所以我们必须指示Makefile将模块安装到另外一个目录,如下;l在交叉编译完内核之后,即执行完make之后,使用以下命令安装模块;make INSTALL_MOD_PATH=目标安装目录 modules_install添加系统应

11、用程序wLinux系统具有极其丰富的命令集;w开发者没有能力逐一交叉编译这么多的命令程序,而且嵌入式系统也不需要这么多命令程序;wBusyBox软件能够以一个极小型的应用程序来提供整个命令集;是构建嵌入式linux系统的主要基石;添加系统应用程序wBusyBox介绍nBusybox是一个开源的软件项目,其官方网站是:http:/nBusybox集成了一百多个最常用的Linux命令程序和工具;nBusybox 程序的体积非常之小,很适合嵌入式系统;添加系统应用程序wBusyBox介绍nBusybox 提供的程序包括:l具有shell功能,如cshl提供一个迷你的vi编辑器l提供系统不可或缺的/s

12、bin/init程序l其他的系统基本命令,如:ls,mkdir,ifconfig等。添加系统应用程序w交叉编译busybox软件:lbusybox的源码可以从下载l 获取源码后,解压源码tar jxvf busybox-1.5.0.tar.ba2 l配置Busybox的时候最好是基于默认配置之上来配置的cd busybox-1.5.0/进入busybox源码目录make defconfig /配置成默认配置添加系统应用程序w交叉编译busybox软件:l配置make menuconfig 配置界面显示了很多busybox的配置选项;可以看到,在make defconfig之后,所以的配置选项都

13、已经选择上了; l选上几个必要的选项:添加系统应用程序w交叉编译busybox软件:Busybox setting-builds options -* build busybox as a static binary /选择静态链接busybox,使其运行是独立于其他函数库 -installitation options -* dont use /usr /安装目录不是/usr; Miscellaneous Utilities taskset / “taskset”选项去掉,不然编译时会出错 添加系统应用程序w交叉编译busybox软件:l指定交叉编译器export PATH=/usr/loc

14、al/arm/3.3.2/bin:$PATHl#编译安装make ARCH=arm CROSS_COMPILE=arm-linux- CONFIG_PREFIX=安装路径 all installnBusybox在编译安装之后,生成一个可执行程序busybox;其他的命名都是链接到这个busybox程序;配置系统初始化文件wlinux内核启动的最后一个初始化动作就是启动init程序;w所谓init进程,是一个由内核启动的用户级进程;w此程序会衍生出各种应用程序,并且启动若干关键的软件组件。wInit进程的功能:l它是所有其他进程的父进程;linit进程根据文件的内容运行一系列程序和脚本文件,完成

15、系统的各项配置。Busybox的的init分析分析 wBusybox提供常用系统命令之外,还提供一个init程序,它可以处理系统的启动工作 ;wBusybox的init进程会依次执行以下动作: l初始化控制台 l根据/etc/inittab文件,执行系统初始化命令行(动作类型:sysinit) l根据/etcinittab文件,执行所有会导致init暂停的inittab命令(动作类型:wait); l根据/etc/inittab文件,执行所有仅执行一次的inittab命令(动作类型:once)。 n一旦完成以上工作,init进程会循环执行一下工作 l执行所以终止时必须重新启动的inittab命

16、令(动作类型:respawn); l执行所有终止时必须重新启动但启动前先询问用户的inittab命令(动作类型:askfirst);Busybox的的init分析分析w上面提到,init进程是根据/etc/inittab文件来执行相应的动作的;w下面分析inittab文件的格式:Inittab文件中每一行的格式如下:id:runlevel:action:processn其中:lId:用来指定所启动进程的控制台,在嵌入式系统中一般不添;lRunlevel:busybox完全忽略runlevel字段;lAction:指出init程序在执行相应process时,对process所采取的动作lProc

17、ess:具体的执行程序;Busybox的的init分析分析winittab文件的action字段中,有以下八个应用到process的动作:lSysinit:为init提供初始化命令行的路径;lRespawn:当该进程死亡时,init将重新启动该进程,不等待该进程的结束;lAskfirst:当相应的进程终止便重新启动,会t在控制台显示“Please press Enter to activate this console.”的信息。lWait:启动进程并等待其结束;lOnce:启动相应的进程,但不等待该进程结束;lCtrlaltdel:当按下Ctrl-Alt-Delete组合键时,执行相应的进程

18、;lShutdown:当系统关机时,执行相应的进程;lRestart:但init从新启动时,执行相应的进程。Busybox的的init分析分析w注意:在inittab文件中,每一行的执行不是按照先后顺序来排列的,是安照每一行的“action”动作类型来执行的,w例如,下面的inittab文件::sysinit:/etc/init.d/rcS/ 第一个执行:askfirst:/bin/bash/ 第三个执行:restart:/sbin/init:once:/usr/etc/rc.local/ 第二个执行:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -

19、a -rBusybox的的init分析分析w如果/etc/inittab 文件不存在,busybox会使用缺省的inittab配置。这个缺省的inittab配置如下: :sysinit:/etc/init.d/rcS /*执行的第一个命令行脚本*/:askfirst:/bin/sh/*在控制台启动一个“shell”*/:ctrlaltdel:/sbin/reboot:shutdown:/sbin/swapoff -a:shutdown:/bin/umount -a r /*系统关机的时候执行umount命令,卸载所以的文件系统*/:restart:/sbin/init /*重新启动init进程*/实验w制作根文件系统,w挂载网络根文件系统;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号