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伺服器功能,有兩種方法。
方法一:使用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
