基于S3C2440的busybox的移植---解决FL2440的shell指令不能自动补全

文章原始来源:http://blog.csdn.net/armeasy/article/details/6186565

本人做了一点修改,如有冒犯请恕罪。

硬件平台:FL2440

操作系统:Ubuntu

内核:Linux2.6.28.7

交叉编译工具:arm-linux-gcc-3.4.1

busybox版本:1.9.2

 飞凌公司默认的文件系统,不具有文件延伸功能,比如在/dev下有mmcblk0p1这个文件,在 挂载SD卡驱动时,需要敲入命令mount /dev/mmcblk0p1,如果具有延伸功能,在敲入mm后,可以直接按TAB键,如果/dev目录下只有一个以mm形状的文件,将会自动补全后面的字符。初步推断该功能应该为busybox集成,从网上下载busybox-1.9.2.tar.bz2,计划安装该版本的busybox。

第一步:下载busybox源代码

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

解压:#tar jxf busybox-1.9.2.tar.bz2

第二步:修改makefile

进入busybox-1.9.2文件夹下,修改makefile中的174行的arch和编译工具链头:

ARCH                 ?= arm

CROSS_COMPILE       ?= /work/tool/srcrosstool/arm-3.4.1/bin/arm-linux-

第三步:修改编译配置选项

执行 #make menuconfig.    修改编译配置选项,参考如下设置:

Busybox Setting----->

       build option-->

    [ ] Build BusyBox as a static binary (no shared libs)                     

    [*] Build shared libbusybox                                               

    [*]   Produce a binary for each applet, linked against libbusybox         

    [*]   Produce additional busybox binary linked against libbusybox          

    [ ] Build with Large File Support (for accessing files > 2 GB)  

installation option-->

    [*] Don't use /usr                                                     

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

     (./_install) BusyBox installation prefix 

Busybox Library Tuning --->                         

MD5: Trade Bytes for Speed                                      

[*] Faster /proc scanning code (+100 bytes)                            

[*] Support for /etc/networks                                    

[*] Support for /etc/networks

[*]   Additional editing keys

[*]   vi-style line editing commands

[*]   History saving

[*]   Tab completion

[*]   Username completion

[*]   Fancy shell prompts

返回到根菜单-------

Linux Module Utilities --->

[*] Support version 2.6.x Linux kernels

    [*] insmod  

    [*]   Enable load map (-m) option  

    [*]     Symbols in load map 

    [*] rmmod  

    [*] lsmod 

    [*]   lsmod pretty output for 2.6.x Linux kernels  

    [*] modprobe 

    [ ]   Multiple options parsing

    [ ]   Fancy alias parsing

    ---   Options common to multiple modutils

    [ ] Support tainted module checking with new kernels

    [ ] Support version 2.2.x to 2.4.x Linux kernels

    [*] Support version 2.6.x Linux kernels

其他的用默认值

第四步:编译busybox

这里需要首先执行# make  进行编译 

然后再执行 #make install

在busybox-1.9.2/_install 目录或者busybox-1.9.2根目录下会生成busybox文件。

第五步:修改busybox的文件属性

#chmod 777 busybox

必须要修改属性,否则可能造成无法启动文件系统。

(下面这里有一种便捷的方法:直接启动开发板,进入linux系统,使用文件挂接的方式,直接使用刚才编译好的新的busybox替换掉文件系统下的/bin下的busybox,然后reboot重启开发板,这是进入系统输入指令,比如#ls /etc/       发现能够的那个补全了,但是会出现下面的情况,这时,直接按第九步进行操作完成即可。其他步可以忽略,完成了。。。。这是投机取巧的方式,这种方式重新烧录文件系统的话就会失效。)

第六步:替换文件系统下的busybox文件

将新生成的busybox替换掉原来的文件,在文件系统根目录的/bin目录下。

第七步:替换busybox所需要的库文件。

这一步很关键,使用不同版本的交叉编译工具编译出来的busybox,所使用的库是不同的。FL2440提供的busybox使用的3.3.2的交叉编译工具,这里我们使用的3.4.1的版本,因此有必要替换掉原来的lib文件。如果不替换,启动系统时将出现如下错误:

Failed to execute /linuxrc. Attempting defaults...

busybox使用的库在如下路径:

/work/tool/srcrosstool/arm-3.4.1/lib

这里因交叉编译环境安装路径不同而有所差异。将该目录下的*.so,*.so.*,*.a,全拷备到根文件系统的lib目录下,有文件重命名的直接覆盖,删除里面一些不必要的库文件,如*jpeg*等,否则会出现压缩的文件系统过大而烧不进去的现象。

#sudo cp -r /work/tool/crosstool/arm-3.4.1/lib/*.so  /work/qt_yaffs/lib/

第八步:使用mkyaffs2image工具制作文件系统:

./mkyaffs2image qte_yaffs qte.yaffs

第九步:这时已经能够正常进入控制台,但是弹出如下错误提示:

mdev: /etc/mdev.conf: No such file or directory

在文件系统的/etc下新建一个空文件mdev.conf,另外修改/etc/init.d下的rcS文件的最后一行为exec /usr/etc/rc.touch,以支持触摸屏,默认为支持鼠标。

第十步:再次制作文件系统,

同第八步,然后擦除rootfs文件系统分区,重新下载最新的文件系统,重启开发板。这时一切正常。

第十一步:擦除开发板上的rootfs文件系统分区,重新下载新生成的文件系统,重启开发板。

第十二步:尝试挂载SD卡驱动,或者使用busybox提供的相关命令,

这次已经具备敲命令按TAB键延伸的功能了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值