2024年4月1日发(作者:)

busybox配置telnetd

busybox配置telnetd的问题 进入busybox源代码目录,选择telnet,telnetd.后确保在

ramdisk的sbin目录下存在inetd和d或telned。在ramdisk中的mnt/etc目录中,

确保存在文件fstab,service,,passwd文件确保fstab文件中存在none /dev/pts

devpts mode=0622 0 0这一行确保services文件中存在 telnet 23/tcp 这一行确保

中存在 telnet stream tcp nowait root /sbin/d d 确保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

服新建文件,内容如下: # telnetstream tcp nowait root /usr/sbin/telnetd 运行

inetd 在网上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/文件,好了。 mknod -m 666 ptmx c 5 2 再试试,

OK可以telnet开发板了!我是直接使用的busybox的telnetd,busybox支持用inetd管理

telnetd,有兴趣的朋友可以试