您的位置:首页 > 其它

构建最小根文件系统

2014-07-18 13:59 471 查看
一、 编写目的 2

二、 构建根文件系统 2

1. 编译busybox 2

2. 移植glibc库 4

3. 构建根文件系统目录 4

三、 总结 5

一、编写目的

本文档用于记录使用Busybox构建arm linux最小根文件系统的过程,方便日后查阅、参考。

Busybox下载地址:http://busybox.net/downloads/busybox-1.22.1.tar.bz2

http://pan.baidu.com/s/1sjHdK2x

二、构建根文件系统

1. 编译busybox

a) 解压源码

# tar -xvf /media/sf_ShareDIR/source/busybox-1.22.1.tar.bz2 -C ./

b) 修改Makefile,设置CROSS_COMPILE和ARCH

# gedit Makefile

CROSS_COMPILE ?= arm-linux-

ARCH ?= arm

c) 配置Busybox

# make menuconfig

配置项目类型

说 明

Busybox Settings --->

General Configuration

一些通用的设置,一般不需要理会

Busybox Settings --->

Build Options

连接方式、编译选项

Busybox Settings --->

Debugging Options

调试信息选项,一般不选

Busybox Settings --->

Installation Options

安装路径,可以在命令行中指定

Busybox Settings --->

Busybox Library Tuning

Busybox性能微调,比如设置控制台输入字符限制等设置

Archival Utilities

各种压缩、解压工具选择

Coreutils

核心命令选择,如ls、cp等

Console Utilities

控制台相关命令,如clear等

Debian Utilities

Debian Linux中的一些命令

Editors

编辑命令,如vi等

Finding Utilities

查找命令,一般不用

Init Utilities

Init程序的配置选项,比如是否读取inittab文件,使用默认即可

Login/Password Management Utilities

登录、用户帐号/密码等方面命令

Linux Ext2 FS Progs

Ext2文件系统的一些工具

Linux Module Utilities

加载/卸载模块的命令,一般选用

Linux System Utilities

一些系统命令,比如dmesg、fdisk等

Miscellaneous Utilities

一些不好分类的命令

Networking Utilities

网络命令,如telnetd、ping、tftp等

Print Utilities

文件打印命令,lpd、lpr等

Mail Utilities

邮件工具

Process Utilities

进程相关的命令,如ps、free、kill、top等

Runit Utilities

runit是一种类Unix操作系统的init方案,可在整个操作系统运行时初始化、监视及终止进程。runit可并行启动系统服务,这样可以加快操作系统的启动

Shells

有多种shell,比如msh、ash,一般选用ash

System Logging Utilities

系统记录方面的命令

这里全部使用默认的配置即可。

d) 编译busybox

# make



e) 安装busybox至/opt/Build_MIniFS/fs_mini目录下

# make CONFIG_PREFIX=/opt/Build_MIniFS/fs_mini install



2. 移植glibc库

glibc库可直接从交叉编译工具arm-linux-的目录中获取,使用如下命令复制即可。

# cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/ /opt/Build_MIniFS/fs_mini/ -rf

后来发现应使用/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/中的库文件才对,否则会出现无法运行部分程序,如在micro2440中无法启动LINUX,或运行程序提示“Illegal instruction”。

3. 构建根文件系统目录

a) 构建etc目录

i. # mkdir ./etc ./etc/init.d

ii. # gedit ./etc/inittab

# /etc/inittab

::sysinit:/etc/init.d/rcS

console::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

iii. # gedit ./etc/init.d/rcS

#!/bin/sh

mount -a

mkdir /dev/pts

mount -t devpts devpts /dev/pts

mdev -s

# chmod +x ./etc/init.d/rcS

iv. # gedit ./etc/fstab

# device mount-point type options dump fsck order

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

sysfs /sys sysfs defaults 0 0

tmpfs /dev tmpfs defaults 0 0

v. # gedit ./etc/profile

export PS1='Locker#'

b) 构建dev目录

如果使用mdev创建设备文件时,只需要在此目录下创建console跟null设备文件即可。

i. # mkdir ./dev

ii. # mknod ./dev/console c 5 1

iii. # mknod ./dev/null c 1 3

c) 构建其它目录

其它目录可以是空目录,比如proc、mnt、tmp、sys、root等,如下创建:

# mkdir proc mnt tmp sys root

三、总结

至此,最小文件系统的所有目录已经创建完成,整个过程还是比较顺利和简单。最终生成的最小文件系统已经打包为201407090326_fs_mini.tar.bz2,可通过以下地址下载。

# tar -jcvf 201407090326_fs_mini.tar.bz2 ./fs_mini/

http://pan.baidu.com/s/1gdorX9h
将修复lib库文件后的文件系统保存为201407281804_fs_mini.tar.bz2,上传到网盘(http://pan.baidu.com/s/1qWqHQW0)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: