1. 程式人生 > linux教程 > busybox配置telnetd

busybox配置telnetd

一般而言,busybox的編譯過程分為以下幾個步驟:

 

1.下載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/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登入目標板後,提示:-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/sbin/inetd,系統啟動後,用ps命令檢視/usr/sbin/inetd程序已經執行,但是使用telnet時,卻提示服務沒有啟動。

        解決辦法:檢視/etc/init.d裡有沒有inetd檔案,若沒有,則從rootfs/etc/init.d中拷貝一個,然後在rcS中寫入:inetd,重新編譯 ramdisk,即可系統啟動之後,自動啟動telnetd服務。

轉自:http://www.360doc.com/content/13/0615/13/11029609_293026394.shtml