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


发布评论