您的位置:首页 > 其它

【1】基于TQ2440的MP3设计——【6、构建根文件系统】

2015-09-10 21:26 459 查看
4、构建根文件系统

a、Linux 内核在系统启动期间进行的最后操作之一就是安装根文件系统,它是Linux 系统不可缺少的组件,含有 Linux 运行必需的文件。根据 Filesystem Hierarchy Standard 文档,根文件设置如下:

bin 目录:必要的用户命令(二进制程序)

dev 目录:设备文件

etc 目录:系统配置文件,包括启动文件

lib 目录:链接库,例如 C 链接库、内核模块

mnt 目录:挂载点

opt 目录:非系统软件套件

proc 目录:内核向用户提供内核与进程信息的虚拟文件系统

sbin 目录:系统管理员命令(二进制程序)

tmp 目录:临时文件

usr 目录:在第二层包含对大多数用户都有用的应用程序和文件

b、BusyBox 移植

busybox 是一个集成了一百多个最常用 linux 命令和工具的软件,甚至还集成了 http 服务器和 telnet 服务器,而所有这一切功能却只有 1M 左右大小。如果把 x86 linux 命令比作分离式电子元件,busybox 就是一个集成电路,把常用的工具和命令集成在一个可执行文件,功能基本不变,大小却小很多倍,在嵌入式 linux 应用中有非常广的应用。移植 BusyBox 的过程如下:

(1)解包源代码

tar jxvf busybox-1.10.0.tar.bz2

cd busybox-1.10.0

(2) 修改 Makefile

ARCH ?= arm

CROSS_COMPILE ?= arm-softfloat-linux-gnu-

(3) 编译配置

make defconfig # 启用默认配置,再修改

make menuconfig

确认编译选项:

Busybox Settings --->

Build Options --->

[ ] Build BusyBox as a static binary (no shared libs) # 使用共享库

Installation Options --->

[*] Don't use /usr # 必需选中,否则 make install 后 busybox

#将安装在原系统的/usr 下,这将覆盖掉系统原有的命令

Applets links (as soft-links) --->

(./_install) BusyBox installation prefix

Linux System Utilities --->

[*] mdev # mdev 可以自动的创建设备节点,以免手工 mknod

[*] Support /etc/mdev.conf

[*] Support subdirs/symlinks

[*] Support command execution at device addition/removal

[*] Support loading of firmwares

Shells --->

Choose your default shell (ash) --->

[*] Job control # Job control 功能(例如 Ctrl+C 终止进程)

(4).编译、安装

make

编译信息末尾提示:

Library crypt is needed

Library m is needed

表示 Busybox 需要 libcrypt 和 libm 库。不用理会,稍后制作的根文件会含有

所有动态链接库。

make install

编译程序将生成的文件拷贝到_install 目录

c、构建根文件系统

根文件系统存储 Linux 内核运行时需要访问的资源,包括许多链接库文件和系统初始化脚本,也用来存储用户文件。根文件系统的构建过程如下

(1) 创建根目录

mkdir rootfs

cd rootfs

(2) 把 busybox 的二进制文件拷贝 rootfs 目录

cp -r $busybox/_install/* .

把 QTopi 的库文件拷贝到 rootfs 目录

cp -rfd /opt/qtopia-core-4.3.5 ${ROOTFS}/opt

把 TSLib 库文件拷贝到 ROOTFS/usr 目录

cp –rfd /home/valkyrie/tslib-build/lib ${ROOTFS}/usr/

把 Linux 的驱动模块拷贝 rootfs/lib 目录

cp –rfd modules ${ROOTFS}/lib

(3) 修改 busybox 默认的 linuxrc

busybox 默认的 linuxrc 是个符号链接,实际上它是简单地调用/sbin/init,删

除原来的 linuxrc,创建新的 linuxrc 脚本,添加更多初始化语句。

rm -f linuxrc

vim linuxrc

下面是 linuxrc 脚本的内容,#后面为注释:

#!/bin/sh

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/lib:/usr/lib

runlevel=S

prevlevel=N

umask 022

export PATH runlevel prevlevel # 输出环境变量

#TSLIB 环境变量

export TSLIB_ROOT=/usr/tslib

export TSLIB_TSDEVICE=/dev/event0

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONSOLEDEVICE=none

export HOME=/root

未完待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: