根文件系统移植
- 格式:docx
- 大小:12.03 KB
- 文档页数:6
根文件系统移植
1根文件系统介绍
根文件系统是linu系统启动的一个重要组成部分,也是操作系统正常工作时必要组成部分,在启动时内核算需要根文件系统挂载。根文件系统类似于windows下的C、D、E等各个盘,每个分区上存放系统启动所必需的文件,内核算启动后运行的第一个程序init、给用户提供操作界面的shell程序,应用程序所依赖的库等,Linux系统启动后首先挂接这个分区,称为挂载根文件系统。但Linux没有C、D、E等盘符的概念,它以树状结构管理所有目录、文件。
根文件系统的每一个分区上存储文件时,需要遵循一定的格式,比如:fat16
fat32、ntfs、ext2、ext3、jffs2、yaffs 等。
2根文件系统目录结构
为了在安装软件时能够预知文件、目录的存放位置,为了让用户方便地找到不同类型的文件,在构造文件系统时,建议遵循FHS标准。它定义了文件系统中目录,文件分类存放原则,定义了系统运行所需的最小文件、目录的集合。根文件系统一般有几个目录。
表6.1 FHS定义的根文件系统顶层目录
3 制作根文件系统
本节构建主要Cramfs 根文件系统,通过Bosybox 和glibc 两个工具制作根文件系
统。并使用Cramfs 工具包成根文件系统的映像文件。
3.1 修改Busybox 源码
首先修改Busybox根目录下Makefile文件,指定CPU架构和使用交叉编译器。
修改前:
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
修改后:
ARCH ?= arm
CROSS_COMPILE ?=/home/cross/crosstools/gcc-3.3.6-glibc-2.3.2/ar
m-linux/bin/arm-linux-
然后执行“ make”命令编译busybox ;最后是安装,执行“ make
CONFIG_PREFIX=/home/busybox/nfs_root/ in stall ”就可以将Busybox 安装在
/home/busybox/nfs_root/ 目录下。
[root@bogonbusybox-1.7.0]#make CONFIG_PREFIX=/home/busybox/nfs_root
/ install
在/home/busybox/ nfs_root/ 目录下生成如下文件、目录。总计28
[root@bogon nfs_root]# ll
drwxr-xr-x 2 root root 4096 03-18 14:41 bin
lrwxrwxrwx 1 root root 11 03-18 14:41 linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 03-18 14:41 sbin
drwxr-xr-x 4 root root 4096 03-18 14:41 usr 3.2 配置busybox
[root@bogon busybox-1.7.0]# make menuconfig
使用glibc 时,如果静态编译busybox 会提示以下警告信息,表示会出现一些莫名其妙的信息(参考文献[2] )。
#warning Static binking against glibc produces buggy executables
Busybox Setting -- >
Build Options --->
[ ]Build BusyBox as a static binary (no shared libs) [ ] Build shared libbusybox
[*] Build with Large File Support (for accessing files > 2 GB) [ ] Compile all sources at once
设置“ TAB键补全
Build Options --->
Busybox Library Tuning --->
[*] Tab completion
选择tar 命令。
Archival Utilities --- >
[*] tar
[*] Enable archive creation
[*] Enable -j option to handle .tar.bz2 files
[*] Enable -a option to handle .tar.lzma files
[*] Enable -X (exclude from) and -T (include from) options) [*] Enable -z option
[*] Enable -Z option
[*] Enable support for old tar header format
[*] Enable untarring of tarballs with checksums produced by buggy S [*] Enable support for some GNU tar extensions r
使用可加载模块。
Linux Module Utilities --->
[*] insmod
[*] Module version checking
[*] Add module symbols to kernel symbol table
[*] In kernel memory optimization (uClinux only)