Chinaunix首页 | 论坛 | 博客
  • 博客访问: 320050
  • 博文数量: 71
  • 博客积分: 1450
  • 博客等级: 上尉
  • 技术积分: 762
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-14 13:31
文章分类

全部博文(71)

文章存档

2014年(3)

2013年(8)

2011年(9)

2010年(38)

2009年(13)

我的朋友

分类: 嵌入式

2014-03-28 11:54:54

http://blog.csdn.net/zuosifengli/article/details/7815717

 

1.下载busybox-1.4.2.tar.tar

  下载地址:

 

2.解压下载到的工具包,然后切换到busybox存放的目录下:

   #cd busybox-1.4.2

 

3.修改Makefile,设置ARCHCROSS_COMPILE如下:

   ARCH ? =

   CROSS_COMPILE?= /usr/local/cross-tools/bin/xscale_be-

 

     4.make defconfig
 
    5.make menuconfig

       Busybox settings --->

         Build options --->

            选中[*] build shared libbusybox

         Installationi Options --->

            选中[*]Don’t use/usr

       Linux Module Utilities --->

            去掉选项[ ] Module version checking

            去掉选项[ ] Support tainted module checking with new kernels

       Linux System Utilities --->

            去掉选项[ ] mount

       Miscellaneous Utilities --->

            去掉选项[ ] readahead (如果选上,则会编译时出错)

            去掉选项[ ]taskset

       Networking Utilities --->

            选中[*] telnetd

            选中[*] Support standalone telentd (not inetd only)

       Shells --->

            选中Choose your default shell (ash) --->

            选中(X) ash

            --- Bourne Shell Optionis

            选中[*] Hide message on interactive shell startup

          选中[*] Standalone shell

          选中[*] Command line editing

          选中[*] vi-style line editing commands

             (15)History size

          选中[*] History saving

          选中[*] Tab completion

          选中[*] Username completion

          选中[*] Fancy shell prompts

 

  6.make

      在当前目录下生成文件:busybox

 

  7.make install

      在当前目录下生成目录:_install (含bin,sbin目录)

       

  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文件及bin,sbin目录中的软链接文件拷贝到rootfs相应的目录下。

 

        2.将make install后在目录sbin中生成的telnetd文件拷贝到rootfs/ /usr/sbin目录下。

 

        3.在rootfs /etc目录下创建目录:/pam.d

 

        4.在rootfs/etc目录下创建文件:passwd,group,shadow。

              passwd文件的内容:

                     root:x:0:0:root:/:bin/sh

              group文件的内容:

                    root:x:0:root

              shadow文件的内容:(密码:123)

                    root:$1$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服务器:

                     /sbin/telnetd &

         使用命令ps可以查看到telnetd是否启动成功。telnetd启动成功后,就可以远程登录目标板进行管理。用户名为root,密码为123,跟启动的用户名和密码一样。进入的是根目录。

      

       方法二:使用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/sbin/tcpd    in.telnetd

      把这个最后这一行的#号去掉。

 

        2.查看/usr/sbin里面有没有in.telnetd, inetd

      若没有,则从/usr/local/cross-tools/target/usr/sbin中拷过来。

 

        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登录目标板后,提示:-shcan’t access tty;job control turned off

其它功能可以正常使用,但是ping 无法以ctrl+c终止

 

          (2) busybox-1.4.1

                  telnetd功能能够正常使用,但是不能使用tftp

 

           (3) busybox-1.4.2

                  telnetd功能能够正常使用,也能使用tftp,但出现过telnet登录一段时间后,会没有反应,然后提示失去连接。

      

  3.使用inetd管理telnetd服务的方法,rcS中写入:/usr/sbin/inetd,系统启动后,ps命令查看/usr/sbin/inetd进程已经运行,但是使用telnet时,却提示服务没有启动。

        解决办法:查看/etc/init.d里有没有inetd文件,若没有,则从rootfs/etc/init.d中拷贝一个,然后在rcS中写入:inetd,重新编译 ramdisk,即可系统启动之后,自动启动telnetd服务。

阅读(2596) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~