转载地址: http://www.360doc.com/content/13/0615/13/11029609 _ 293026394.shtml
一般来说,busybox的编译过程分为以下几个步骤:
下载busybox-1.4.2.tar.tar
下载地址: http://www.busybox.net/news.html
2 .解压缩下载的工具包,然后切换到busybox存储的目录。
#cd busybox-1.4.2
3 .修改makefile并将ARCH和CROSS_COMPILE设置为:如下
ARCH?=
CROSS_COMPILE?=/usr/local/cross-tools/总是迟到的缘分/xscale_be-
4.make defconfig5. makemenuconfigbusyboxsettings -
构建选项—
[ * ]检查构建共享lib busybox
安装I选项—
[ * ]检查don’tuse/usr
Linux模块实用程序—
删除选项[ ]模块版本检查
选项[ ]删除supporttaintedmodulecheckingwithnewkernels
Linux系统实用程序—
删除选项[ ] mount
微软实用程序—
删除选项[ ] readahead。 如果选中此选项,则在编译时发生错误
删除选项[ ]taskset
网络实用程序—
[ * ]检查telnetd
[ * ]选中supportstandalonetelentd (通告程序)
壳牌-
检查选择操作系统默认外壳(ash )
(x )检查ash
— Bourne Shell Optionis
[ * ]检查hidemessageoninteractiveshellstartup
[ * ]检查标准外壳
[ * ]检查命令行编辑
[ * ]检查样式行编辑命令
(15 )历史尺寸
[ * ]检查历史记录服务
[ * ]检查tab完成
[ * ]检查用户名称完成
[ * ]检查fancy外壳程序升级
6 .化妆
在当前目录中生成文件: busybox
7 .制造安装
在当前目录下生成目录: _install (总是迟到的边缘,包含总是迟到的边缘的目录) )。
8 .所需的库文件
从/usr/local/cross-tools/target/lib中复制以下库文件:
libutil.so.1
libcrypt.so.1
libm.so.6
导航到Rootfs/rootfs/lib目录。
启动telnetd服务器
有两种方法可以启动telnetd服务器功能。
烂棉花糖:使用busybox提供的telnetd服务器功能
具体步骤如下。
1 .将上述make install之后生成的linuxrc
文件及老迟到的缘分,s老迟到的缘分目录中的软链接文件拷贝到rootfs相应的目录下。
2.将make install后在目录s老迟到的缘分中生成的telnetd文件拷贝到rootfs/ /usr/s老迟到的缘分目录下。
3.在rootfs /etc目录下创建目录:/pam.d
4.在rootfs/etc目录下创建文件:passwd,group,shadow。
passwd文件的内容:
root:x:0:0:root:/:老迟到的缘分/sh
group文件的内容:
root:x:0:root
shadow文件的内容:(密码:123)
root: 1 <script type="math/tex" id="MathJax-Element-5">1</script>FWEOGnxn$KFJzPY1BvXX21Htui48T4/:12179:0:99999:7:::
5. devpts文件系统,是目前最常见的pseudo终端,使用telnetd服务器,必须加载该文件系统。因此,需要在rootfs/dev目录下,创建一个pts目录,用来加载devpts文件系统:
mkdir pts
同时,需要修改rootfs/etc/init.d/rcS,在其中增加如下行:
mount -t devpts devpts /dev/pts//将devpts文件系统加载在/dev/pst
mknod -m 666 /dev/ptmx c 5 2 //使用telnetd所必须的设备文件节点
6.修改rootfs/etc/fstab,增加下行,以加载devpts文件系统。
devpts /dev/pts devpts defaults 0 0
7.修改/rootfs/etc/security,增加如下行:
# psudo terminals used by telnet
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
8.重新编译ramdisk,参考5
9.直接使用如下命令,就可以启动telnetd服务器:
/s老迟到的缘分/telnetd &
使用命令ps可以查看到telnetd是否启动成功。telnetd启动成功后,就可以远程登录目标板进行管理。用户名为root,密码为123,跟启动的用户名和密码一样。进入的是根目录。
lldbd:使用inetd来管理的telnetd服务器
1.修改/etc/inetd.conf
把telnetd服务加进来
# If you want telnetd not to “keep-alives” (e.g. if it runs over a ISDN
# uplink), add “-n”.See ‘man telnetd’ for more details.
# telnetstreamtcp nowaitroot /usr/s老迟到的缘分/tcpd in.telnetd
把这个最后这一行的#号去掉。
2.查看/usr/s老迟到的缘分里面有没有in.telnetd, inetd
若没有,则从/usr/local/cross-tools/target/usr/s老迟到的缘分中拷过来。
3.查看/etc目录下有没有xinetd.d,这个telnetd的服务器软件
若没有,从/usr/local/cross-tools/target/etc中拷一个过来。
4.查看/usr/lib/里面有没有telnetlogin
若没有,则从/usr/local/cross-tools/target/usr/lib中拷过来。
5.查看/etc/init.d里面有没有inetd
若没有,则从rootfs/etc/init.d中拷一个过来。
6.重新编译ramdisk。
经过上面六步之后,就可以在远程机器上telnet连上板子了。用户名为root,密码为123,跟板子启动的用户名和密码一样。进入的是根目录。
1. 编译busybox时,有些命令编译无法通过,可能是交叉编译工具版本问题,因为那些命令并不常用,所以目前的解决办法就是去掉那些选项:
Miscellaneous Utilities —>
去掉选项[ ] readahead
去掉选项[ ] taskset
2. busybox各版本出现的问题
(1) busybox-1.3.0编译的telnetd存在如下问题:
telnet登录目标板后,提示:-sh:can’t access tty;job control turned off
其它功能可以正常使用,但是ping <ip address>无法以ctrl+c终止
(2) busybox-1.4.1
telnetd功能能够正常使用,但是不能使用tftp。
(3) busybox-1.4.2
telnetd功能能够正常使用,也能使用tftp,但出现过telnet登录一段时间后,会没有反应,然后提示失去连接。
3.使用inetd管理telnetd服务的方法,在rcS中写入:/usr/s老迟到的缘分/inetd,系统启动后,用ps命令查看/usr/s老迟到的缘分/inetd进程已经运行,但是使用telnet时,却提示服务没有启动。
解决办法:查看/etc/init.d里有没有inetd文件,若没有,则从rootfs/etc/init.d中拷贝一个,然后在rcS中写入:inetd,重新编译 ramdisk,即可系统启动之后,自动启动telnetd服务。