busybox配置telnetd的问题

 

进入busybox源代码目录,选择telnet,telnetd.后
确保在ramdisk的sbin目录下存在inetd和in.telnetd或telned。
在ramdisk中的mnt/etc目录中,确保存在文件fstab,service,inetd.conf,passwd文件
确保fstab文件中存在none            /dev/pts        devpts  mode=0622       0 0这一行
确保services文件中存在
telnet          23/tcp  这一行
确保inetd.conf中存在
telnet  stream  tcp     nowait  root    /sbin/in.telnetd        in.telnetd
确保passwd文件中存在root::0:0:root:/:/bin/sh,表示没有密码的root帐号
在kernal的代码中,通过makemenuconfig,
在Character devices中选中Unix98 PTY support
在File systems中选中/dev/pts file system for Unix98 PTYs
退出后make zImage即可
在ramdisk的启动文件mnt/etc/init.d/rcS中,在mount –a的后面下一行加入inetd,使系统启动的时候就加载telnetd服

新建inetd.conf文件,内容如下:
#
telnetstream  tcp nowait  root    /usr/sbin/telnetd
运行inetd inetd.conf
 
在网上google了一天,最终可以确定要使用telnetd,内核必须配置以下项:
dev/pts file system for Unix98 PTYs
Unix98 PTY support
(256) Maximum number of Unix98 PTYs in use (0-2048)
可我使用的2.6.14.1的内核,make menuconfig根本找不到这些配置项!那么内核是否支持这些选项呢?cat /proc/filesystems发现已支持devpts文件系统,那么uinx98 pty呢?
查看内核的Kconfig和Makefile文件,发现只要CONFIG_UNIX98_PTYS=y就会编译支持devpts文件系统和unix98的功能。而选择了嵌入式CPU内核会默认CONFIG_UNIX98_PTYS=y。所以我的内核已经支持telnet。
fstab文件中也加载了devpts文件系统:
devpts          /dev/pts        devpts  defaults    00
inittab文件中也指明了telnet的动作:
tty0::askfirst:-/bin/sh
为什么还不行呢?
困惑!后来仔细想想,应该是设备文件节点的问题。我在开发板上移植2.6内核和驱动时一直没有使用devfs。因为devfs虽然方便,但同时也阻止了对设备文件节点的了解,且2.6内核已放弃了devfs。
那么使用telnet应该创建那些文件节点呢?devpts会在/dev/pts下自动创建节点,还有什么呢?google了一会没有答案。后来忽然想起Kconfig文件中好象些说明,再去看一看,原来是这样:
         A pseudo terminal (PTY) is a software device consisting of two
 halves: a master and a slave. The slave device behaves identical to
 a physical terminal; the master device is used by a process to
 read data from and write data to the slave, thereby emulating a
 terminal. Typical programs for the master side are telnet servers
 and xterms.
 Linux has traditionally used the BSD-like names /dev/ptyxx for
 masters and /dev/ttyxx for slaves of pseudo terminals. This scheme
 has a number of problems. The GNU C library glibc 2.1 and later,
 however, supports the Unix98 naming standard: in order to acquire a
 pseudo terminal, a process opens /dev/ptmx; the number of the pseudo
 terminal is then made available to the process and the pseudo
 terminal slave can be accessed as /dev/pts/. What was
 traditionally /dev/ttyp2 will then be /dev/pts/2, for example.
是因为缺少ptmx设备文件!查看Documentation/devices.txt文件,好了。
mknod -m 666 ptmx c 5 2
再试试,OK可以telnet开发板了!
我是直接使用的busybox的telnetd,busybox支持用inetd管理telnetd,有兴趣的朋友可以试
 
 
------------------------------------------------------------------------------------------------------------------------------------
一直没有在at91sam9261ek上使用过telnet登陆,由于调试qtopia,需要多个终端入口,于是就决定启动telnetd,其实以前也曾经尝试过telnet到at91sam9261ek板子但是都没有成功过,今天偶然发现atmel
的rcS有问题没有mount  devpts ,于是立即加入devpts mount 指令,改后的rcS如下:

mount -t proc proc /proc
mount -t ramfs ramfs /var
mount -t sysfs sysfs /sys
mount -t devpts devpts /dev/pts
 
sync
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
/bin/sh

配置内核:
         Device Drivers  --->
             Character devices-->
                    [*] Legacy (BSD) PTY support                                                                                  
                   (256) Maximum number of legacy PTY in use
创建设备:
         mknod  ptmx c 5 2
        chmod 777 ptmx
配置busybox
   Networking Utilities  --->
                                      [*] telnetd                                                                                                  
                                       [*]   Support standalone telnetd (not inetd only)td only)
我使用的是busybox1.1.6 其实在 Networking Utilities 列表里我选择了全部的项目。

ok,现在可以测试了,使用新内核重新启动系统进入shell
运行ln -s  busybox telnetd
运行telnetd
这时在pc命令行输入:
  t elnet 192.168.2.40   (192.168.2.40就是at91sam9261ek的ip)
shell提示:
Familiar Linux v0.8.3 192.168.2.40
 BusyBox v1.6.0 (2007-08-16 16:03:29 CST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
 呵呵,telnet成功了。

取消busybox telnet 登录时的密码问题:
  Login/Password Management Utilities  --->
            [ ] login    //取消这选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值