简单的busybox创建_用Busybox创建文件系统
编译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创建文件系统相关推荐
- 简单的busybox创建_用busybox构建一个最小根文件系统
P { margin-bottom: 0.21cm; } 用busybox构建一个最小根文件系统 15年4月4月23月23日23日日15:11:30 (一)一个最小根文件系统包括: (1)/dev/c ...
- 面具busybox模块_利用busybox制作initramfs
<精通initramfs构建step by step>一文对initramfs进行了精彩的讨论,边读边做,将过程做如下记录: 以下假设内核源码路径为:/usr/src/linux 一.in ...
- 判断frame是否已创建_类的创建
''' 1. 士兵 许三多 有一把 AK47 2. 士兵 可以开火 3. 枪 能够 发射 子弹 4. 枪 装填 子弹---增加子弹数量 '''class Gun:def __init__(self,t ...
- busybox linux内核,使用busybox创建精简linux内核实例
busybox一个二进制程序,模拟实现众多程序./bin/busybox查看本机硬件设备信息:#cat/proc/cpuinfo#cat/proc/meminfo#lsusb显示usb接口信息.#ls ...
- 面具busybox模块_【Linux技术】BusyBox详解
BusyBox 是很多标准 Linux® 工具的一个单个可执行实现.BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大.更复杂的工具,例如 grep.find.moun ...
- python交互式和文件式_使用Python创建和自动化交互式仪表盘
python交互式和文件式 In this tutorial, I will be creating an automated, interactive dashboard of Texas COVI ...
- 第14章_视图(创建视图、查看视图、更新视图的数据、修改、删除视图)
第14章_视图 第14章_视图 1. 常见的数据库对象 2. 视图概述 2.1 为什么使用视图? 2.2 视图的理解 3. 创建视图 3.1 创建单表视图 3.2 创建多表联合视图 3.3 基于视图创 ...
- xmind怎么在左边创建_个人怎么做微信小程序商城
个人可以开微信"小程序商城"了!!!微信小商店,内测两个月后,终于全量开放了,不用再苦苦寻找内测链接,直接就可以申请,秒开! 8月20日,是个不平凡值得尖叫的好日子,微信小商店对企 ...
- python文件之间的相互调用_用Python创建功能模块——截取字符串模块
用Python创建模块 本篇文章小编给大家分享在Python如何创建属于自己的模块,实现更多的功能! 一.模块 模块是什么?简单来说,当程序的功能很多.代码量很大时,我们可以编写一个实现一定功能的py ...
最新文章
- char与varchar的区别
- Openresty最佳案例 | 第1篇:Nginx介绍
- python 图像降噪
- android设置程序开机自启动
- cookie与session原理详解
- LeetCode-978:最长湍流子数组
- 【Flink】Flink开发中遇到的问题及解法
- Git branch -r 无法获取远程分支,ui可以看见分支但是git 命令无法查看解决方案
- 与IP地址有关的那些点
- php 创建自定义文件夹,Laravel 自定命令以及生成文件的例子
- 11gR2 Grid Infrastructure Installation prerequisites On Windows
- 诺基亚E72_RM-530刷机包023.002版
- React骚操作——jsx遇到template-directive
- linux c语言头文件 在另外的地方,linux下的c语言的头文件在windows下头文件是哪几个?...
- 只允许,同一域名下IFRAME,禁止直接访问页面
- Java反射机制的简单应用
- Structs2文件上传以及预览
- php出现photo.scr,u盘中了scr病毒怎么办
- [C语言] 混合or连续使用getchar,scanf所出现的错误
- matlab仿真add,simulink中add和sum