170 likes | 324 Views
制作 Linux 根文件系统. 本章介绍了 Linux 根文件系统的组织结构,并且分析了 init 进程调用文件系统脚本初始化的过程。只有掌握了文件系统的基本构成,才能自己动手定制 Linux 文件系统。. 学习目标. 根文件系统组织结构 INIT 系统初始化过程 定制文件系统. Linux 的根文件系统至少应包括以下几项内容。 1 .基本的文件系统结构,包含一些必需的目录比如: /dev , /proc , /bin , /etc , /lib , /usr , /tmp 等。 2 .基本程序运行所需的库函数,如 Glibc/uC-libc 。
E N D
本章介绍了Linux根文件系统的组织结构,并且分析了init进程调用文件系统脚本初始化的过程。只有掌握了文件系统的基本构成,才能自己动手定制Linux文件系统。本章介绍了Linux根文件系统的组织结构,并且分析了init进程调用文件系统脚本初始化的过程。只有掌握了文件系统的基本构成,才能自己动手定制Linux文件系统。 www.farsight.com.cn
学习目标 • 根文件系统组织结构 • INIT系统初始化过程 • 定制文件系统
Linux的根文件系统至少应包括以下几项内容。 • 1.基本的文件系统结构,包含一些必需的目录比如:/dev,/proc,/bin,/etc,/lib,/usr,/tmp等。 • 2.基本程序运行所需的库函数,如Glibc/uC-libc。 • 3.基本的系统配置文件,比如rc,inittab等脚本文件。 • 4.必要的设备文件支持:/dev/hd*,/dev/tty*,/dev/fd0。 • 5.基本的应用程序,如sh,ls,cp,mv等。
10.1 根文件系统目录结构 • 10.1.1 FHS目录结构 • Linux根文件系统结构
10.1.2 文件存放规则 • 1.把全局配置文件放入/etc目录下。 • 2.将设备文件信息放入/dev目录下,设备名可以作为符号链接定位在/dev中或/dev子目录中的其他设备存在。 • 3.操作系统核心定位在/或/boot,若操作系统核心不是作为文件系统的一个文件存在,不应用它。 • 4.库存放的目录是/lib。 • 5.存放系统编译后的可执行文件、命令的目录是/bin,/sbin,/usr。
10.2 添加系统文件 • 10.2.1 添加共享链接库 • 在在根文件系统的/lib目录下主要包含以下4种类型的文件。 • 1. 实际的共享链接库 • 2.主修订版本的符号链接 • 3.与版本无关的符号链接指向主修订版本的符号链接 • 4.静态的链接库
10.2.2 添加内核模块 • 1.在内核编译过程中自动添加内核模块 • 2.动态添加内核模块 • 动态加载内核模块有2种方法,以下分别叙述。 • (1)采用modprobe命令加载 • (2)采用insmod命令加载
10.2.3 添加设备文件 • Linux中任何对象(包括设备)都可以认为是文件。Linux将设备分为最基本的2大类:一类是字符设备(Character Device),另一类是块设备(Block Device)。 • 1.使用mknod指令来添加设备 • 2.在/dev目录下采用MAKEDEV(符号链接/sbin/MAKEDEV)来建立设备文件
10.3 init系统初始化过程 • 通常,Linux内核的启动可以分为两个阶段。 • 1. 在第1个阶段完成硬件检测、初始化和内核的引导 • 2.在第2个阶段就是init的初始化进程。
10.3.1 inittab文件 • Linux启动时,运行一个叫作init的程序,然后根据运行级启动后面的任务,包括多用户环境,网络等。所谓的运行级就是操作系统当前正在运行的功能级别。
10.3.2 System V init启动过程 • 概括地讲,Linux \Unix系统一般有两种不同的初始化启动方式。 • BSD system init • System V system init • 以下是一个大致的System V init过程。 • (1)init过程执行的第一个脚本文件是/etc/rc.d/rc.sysinit, /etc/rc.d/rc.sysinit主要做在各个运行级别中进行初始化工作 • (2)执行缺省的运行级模式。 • (3)执行/etc/rc.d/rc.local脚本文件。 • (4)执行/bin/login程序。
10.3.3 Busybox init启动过程分析 • 默认的情况下,Busybox安装之后会生成一个可执行程序Busybox,在目录…/_install/bin下,查看Busybox的属性可以知道/sbin/init是其符号链接,如果使用Busybox做Ramdisk,BusyBox会在内核刚完成加载后就立即启动,此后Busybox会跳转到它的init进程开始执行
10.4 定制文件系统 • 10.4.1 定制应用程序 • 在定制嵌入式系统的系统应用程序时,如果把常用的应用程序的源码都下载来交叉编译,这一过程的工作量显然是很大的,而且非常繁琐。为了进一步减小所创建的根文件系统的尺寸,可以考虑使用下列工具包软件来替代某些标准的工具。 • 事实上使用Busubox来定制是一个不错的选择
10.4.2 配置应用程序自动启动 • 在Linux下配置应用程序自动启动大致有以下的3种方法。 • (1)在启动/etc/init.d/下添加启动脚本,创建/etc/rc.d/.../目录下的链接。 • (2)直接在/etc/rc.d/rc.local脚本中添加命令,该脚本应该在启动过程中调用 • (3)通过/linuxrc脚本直接启动,通常是在内核命令行参数中指定init=/program。
Q&A www.farsight.com.cn
谢谢! www.farsight.com.cn