编译busybox的组合:busybox-1.0.0   arm-linux-gcc-2.95.3 (sbc2410等开发板)

busybox-1.1.3   arm-linux-gcc-3.3.2

buxybox-1.7.3   arm-linux-gcc-3.4.1

移植基本过程:

1. 到http://busybox.net/downloads/busybox-1.7.3.tar.bz2下载busybox;

2. 解压busybox1.7.3

tar jxvf busybox-1.7.3.tar.bz2

3. make defconfig

4. make menuconfig

在[build options]中选择[Build busybox as a static binary]

主要是C库的连接方式,安装目录等。

5. make

6. 创建rootfs目录

7. make install

文件系统的制作   luofuchong

可能会出现的错误:

1. 出现如下错误

CC miscutils/taskset.o

miscutils/taskset.c:17: error: parse error before '*' token

miscutils/taskset.c:18: warning: function declaration isn't a prototype

miscutils/taskset.c: In function `__from_cpuset':

miscutils/taskset.c:22: error: `CPU_SETSIZE' undeclared (first use in this function)

miscutils/taskset.c:22: error: (Each undeclared identifier is reported only once

miscutils/taskset.c:22: error: for each function it appears in.)

miscutils/taskset.c:26: warning: implicit declaration of function `CPU_ISSET'

miscutils/taskset.c:26: error: `mask' undeclared (first use in this function)

miscutils/taskset.c: In function `taskset_main':

miscutils/taskset.c:47: error: `cpu_set_t' undeclared (first use in this function)

miscutils/taskset.c:47: error: parse error before "mask"

miscutils/taskset.c:68: warning: implicit declaration of function `CPU_ZERO'

miscutils/taskset.c:68: error: `new_mask' undeclared (first use in this function)

miscutils/taskset.c:69: error: `CPU_SETSIZE' undeclared (first use in this function)

miscutils/taskset.c:71: warning: implicit declaration of function `CPU_SET'

miscutils/taskset.c:78: error: `mask' undeclared (first use in this function)

make[1]: *** [miscutils/taskset.o] Error 1

make: *** [miscutils] Error 2

make menuconfig

找到[Miscellaneous Utilities],去掉[task set]

2. time.c

libbb/time.c:20: error: "CLOCK_MONOTONIC" undeclared (first use in this function)

make menuconfig

去掉Busybox Settings->Busybox Library Tuning->[]Use clock_gettie(CLOCK_MONOTONIC) syscall

建立rootfs目录,可以使用如下脚本文件:

#!/bin/bash

mkdir rootfs

cd  rootfs

mkdir bin dev etc lib proc sbin sys usr mnt tmp var

chmod 1777 tmp

mkdir usr/bin  usr/lib  usr/sbin  lib/modules

mkdir var/lock var/lib var/log var/run var/tmp

chmod 1777 var/tmp

cd dev/

mknod -m 666 console c 5 1

mknod -m 666 null c 1 3

cd ../

注意:执行脚本时,要切换到root用户。

在内核目录执行:

$cd home/arm/linux-2.6.14.1/

$make modules

$make modules_install INSTALL_MOD_PATH=/nfs/rootfs/

例如linuxrc内容如下:

$vim rootfs/linuxrc

#!/bin/sh

echo "Hello linux ,gggggg"

exec /sbin/init

然后修改权限:chmod 775 linuxrc

用密码登录可参考:用busybox制作嵌入式Linux的文件系统http://www.embed.com.cn/downcenter/Article/Catalog34/354.htm

busybox login :启动busybox文件系统后怎么主动提示 用户登陆认证?

在配置BusyBox时都加了getty,passwd,login等命令,也加入了文件group shadow passwd 但还是没有弹出界面,自己输入login后倒是提示你输入用户名和密码

内核启动后加载文件系统,busybox为1.1.3

挂载成功后就直接到

BusyBox   v1.1.3   (2007.12.13-06:5

Please   press   Enter   to   activate   this   console.

怎么使启动文件系统立即需要用户验证?

编译工具的选择有两种方式:

ARM开发板:要使用交叉编译,所以我们要指定交叉编译工具的位置,可通过现面的方法实现:

方法一: 修改宿主机的PATH变量,使其包含交叉编译工具的目录;然后在调用make命令时,指定TARGET_ARCH和CROSS变量:make TARGET_ARCH=arm CROSS=arm-linux-。

方法二:新版的busybox可以在配置中设定交叉编译工具的,直接运行make就跟为本机编译busybox没有任何区别了。http://hi.baidu.com/xuym04/blog/item/49d83f6e645415df81cb4ac7.html

动态编译方式,准备链接库:

《ARM微处理器与应用开发》 赖于树  P248

复制链接库的步骤:

$cp /usr/local/arm/3.4.1/arm-linux/lib/

$cp *-*.so  ${PRJROOT}/rootfs/lib

$cp -d *.so.[*0-9]  ${PRJROOT}/rootfs/lib/

$cp libSegFault.so  libmemusage.so  ${PRJROOT}/rootfs/lib/

这些库文件中包含大量的调试信息,交叉编译工具链提供了一个除去这些调试信息的工具:strip

$arm-linux-strip  ${PRJROOT}/rootfs/lib/*.so

参考:基于s3c2440 yaffs2 文件系统的移植http://q.163.com/kjava/blog/www_yin/362652432008269461663/#362652432008269461663

3. 建立动态运行库

# cp -rfd /usr/local/arm/4.0.3/arm-linux/lib/*  rootfs/lib/

拷贝经过交叉编译的库文件,参数-d,保持库文件的链接关系。

# rm -rf rootfs/lib/*.a

删除所有的静态库文件。

注:/usr/local/arm/4.0.3/ 为交叉编译工具链的存放目录。

# arm-linux-strip rootfs/lib/*

移除所有的符号信息, 压缩库空间。

如果不知道需要哪些共享库,可以在你写好自己的程序后使用#ld hello 命令来看看需要哪些共享库然后在复制到/lib目录下面!

4 查看共享了哪些库文件

用命令 arm-linux-readelf -a ${program} | grep "shared library"

---------------------------------------------------------------

[root@localhost bin]# pwd

/root/maoyong/busybox-1.4.2/_install/bin

[root@localhost bin]# arm-linux-readelf -a busybox | grep "shared library"

0x00000001 (needed)                     shared library: [libcrypt.so.1]

0x00000001 (needed)                     shared library: [libm.so.6]

0x00000001 (needed)                     shared library: [libc.so.6]

------------------------------------------------------------------

如上所示 要把 /usr/local/arm/3.3.2/arm-linux/lib目录下的

libcrypt.so.1

libm.so.6

libc.so.6

文件是busybox所需的共享库文件,要把它以及和他相关的链接文件拷贝到

你新建的文件系统的 lib 目录。

(注意: libcrypt.so.1    libm.so.6 libc.so.6相关的链接文件也要拷贝到lib目录)

简单的busybox创建_用Busybox创建文件系统相关推荐

  1. 简单的busybox创建_用busybox构建一个最小根文件系统

    P { margin-bottom: 0.21cm; } 用busybox构建一个最小根文件系统 15年4月4月23月23日23日日15:11:30 (一)一个最小根文件系统包括: (1)/dev/c ...

  2. 面具busybox模块_利用busybox制作initramfs

    <精通initramfs构建step by step>一文对initramfs进行了精彩的讨论,边读边做,将过程做如下记录: 以下假设内核源码路径为:/usr/src/linux 一.in ...

  3. 判断frame是否已创建_类的创建

    ''' 1. 士兵 许三多 有一把 AK47 2. 士兵 可以开火 3. 枪 能够 发射 子弹 4. 枪 装填 子弹---增加子弹数量 '''class Gun:def __init__(self,t ...

  4. busybox linux内核,使用busybox创建精简linux内核实例

    busybox一个二进制程序,模拟实现众多程序./bin/busybox查看本机硬件设备信息:#cat/proc/cpuinfo#cat/proc/meminfo#lsusb显示usb接口信息.#ls ...

  5. 面具busybox模块_【Linux技术】BusyBox详解

    BusyBox 是很多标准 Linux® 工具的一个单个可执行实现.BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大.更复杂的工具,例如 grep.find.moun ...

  6. python交互式和文件式_使用Python创建和自动化交互式仪表盘

    python交互式和文件式 In this tutorial, I will be creating an automated, interactive dashboard of Texas COVI ...

  7. 第14章_视图(创建视图、查看视图、更新视图的数据、修改、删除视图)

    第14章_视图 第14章_视图 1. 常见的数据库对象 2. 视图概述 2.1 为什么使用视图? 2.2 视图的理解 3. 创建视图 3.1 创建单表视图 3.2 创建多表联合视图 3.3 基于视图创 ...

  8. xmind怎么在左边创建_个人怎么做微信小程序商城

    个人可以开微信"小程序商城"了!!!微信小商店,内测两个月后,终于全量开放了,不用再苦苦寻找内测链接,直接就可以申请,秒开! 8月20日,是个不平凡值得尖叫的好日子,微信小商店对企 ...

  9. python文件之间的相互调用_用Python创建功能模块——截取字符串模块

    用Python创建模块 本篇文章小编给大家分享在Python如何创建属于自己的模块,实现更多的功能! 一.模块 模块是什么?简单来说,当程序的功能很多.代码量很大时,我们可以编写一个实现一定功能的py ...

最新文章

  1. char与varchar的区别
  2. Openresty最佳案例 | 第1篇:Nginx介绍
  3. python 图像降噪
  4. android设置程序开机自启动
  5. cookie与session原理详解
  6. LeetCode-978:最长湍流子数组
  7. 【Flink】Flink开发中遇到的问题及解法
  8. Git branch -r 无法获取远程分支,ui可以看见分支但是git 命令无法查看解决方案
  9. 与IP地址有关的那些点
  10. php 创建自定义文件夹,Laravel 自定命令以及生成文件的例子
  11. 11gR2 Grid Infrastructure Installation prerequisites On Windows
  12. 诺基亚E72_RM-530刷机包023.002版
  13. React骚操作——jsx遇到template-directive
  14. linux c语言头文件 在另外的地方,linux下的c语言的头文件在windows下头文件是哪几个?...
  15. 只允许,同一域名下IFRAME,禁止直接访问页面
  16. Java反射机制的简单应用
  17. Structs2文件上传以及预览
  18. php出现photo.scr,u盘中了scr病毒怎么办
  19. [C语言] 混合or连续使用getchar,scanf所出现的错误
  20. matlab仿真add,simulink中add和sum

热门文章

  1. 当DRM出错时的解决办法
  2. WinForm 限制同一个进程只能打开一次
  3. Spring发送带附件邮件
  4. MyEclipse使用总结——MyEclipse文件查找技巧
  5. 门户网站运营的几个方法
  6. 临时表与表变量深入探究
  7. sql with as 用法
  8. python报错:TypeError: 'str' object is not callable
  9. Mysql SQL查询今天、昨天、n天内、第n天(执行效率不高)
  10. Go的sync.Cond(四)