一、FHS(Filesystem Hierarchy Standard)标准介绍
当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。
该标准规定了根目录下各个子目录的名称及其存放的内容:
目录名 | 存放的内容 |
/bin | 必备的用户命令,例如ls、cp等 |
/sbin | 必备的系统管理员命令,例如ifconfig、reboot等 |
/dev | 设备文件,例如mtdblock0、tty1等 |
/etc | 系统配置文件,包括启动文件,例如inittab等 |
/lib | 必要的链接库,例如C链接库、内核模块 |
/home | 普通用户主目录 |
/root | root用户主目录 |
/usr/bin | 非必备的用户程序,例如find、du等 |
/usr/sbin | 非必备的管理员程序,例如chroot、inetd等 |
/usr/lib | 库文件 |
/var | 守护程序和工具程序所存放的可变,例如日志文件 |
/proc | 用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容 |
/sys | 用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容 |
/mnt | 文件系统挂接点,用于临时安装文件系统 |
/tmp | 临时性的文件,重启后将自动清除 |
制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。其过程大体包括:
- 编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录
- 利用交叉编译工具链,构建/lib目录
- 手工构建/etc目录
- 手工构建最简化的/dev目录
- 创建其它空目录
- 配置系统自动生成/proc目录
- 利用udev构建完整的/dev目录
- 制作根文件系统的jffs2映像文件
下面就来详细介绍这个过程。
二、编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录
这些目录下存储的主要是常用命令的二进制文件。如果要自己编写这几百个常用命令的源程序,my god, 这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀——busybox,事情就简单很多。
1、从http://www.busybox.net/ 下载busybox-1.7.0.tar.bz2
2、tar xjvf busybox-1.7.0.tar.bz2解包
3、修改Makefile文件
175 ARCH ?= arm
176 CROSS_COMPILE ?= arm-linux-
4、make menuconfig配置busybox