Chinaunix首页 | 论坛 | 博客
  • 博客访问: 822357
  • 博文数量: 124
  • 博客积分: 1927
  • 博客等级: 上尉
  • 技术积分: 932
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-31 14:06
文章分类

全部博文(124)

文章存档

2018年(5)

2017年(2)

2016年(6)

2015年(4)

2014年(24)

2013年(7)

2012年(11)

2011年(13)

2010年(52)

我的朋友

分类: LINUX

2017-02-07 11:19:32

原文地址:解决telnetd的问题 作者:todaygood



编译了busybox的telnetd,能手工启动进程,但客户机连接后无响应。
没有使用inetd,内核已支持devpts。
请指点一下,谢谢!




问题解决了!

在网上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,有兴趣的朋友可以试试。

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