构建最小根文件系统

12 篇文章 0 订阅
10 篇文章 0 订阅

一、编写目的

        本文档用于记录使用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)。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值