根文件系统移植

  • 格式:docx
  • 大小:12.03 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

根文件系统移植

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)