1.首先检查kernel是否支持devpts文件系统。devpts是目前最常见的pseudo终端(PTYs)实现方式
cat /proc/filesystems.
下面是我在开发板上的执行结果:
/etc # cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev tmpfs
nodev debugfs
nodev sockfs
nodev pipefs
nodev anon_inodefs
nodev rpc_pipefs
nodev devpts
ext3
ext2
nodev ramfs
vfat
msdos
nodev nfs
nodev nfs4
yaffs
yaffs2
nodev mtd_inodefs
/etc #
可见是有devpts的。
2.在busybox中配置telnetd和telnet还有login
3.在busybox中make和make install ,最后生成的文件会安装到_install中去。把_install中的目录和文件复制到rootfs对应的目录中去。
4.在rootfs/etc下创建文件 passwd,group,shadow.
passwd文件内容:
root:x:0:0:root:/bin/sh
group文件内容:
root:x::0:root
shadow文件内容:
root:$1$$oCL3EVgI1iAqOA8pwkzAg1:11851:0:99999:7:::
5.mkdir /dev/pts
6.在rootfs/etc/init.d/rcS中添加:
mount -t devpts devpts /dev/pts
mknod -m 666 /dev/ptmx c 5 2
7.修改rootfs/etc/fstab增加如下:
devpts /dev/pts devpts defaults 0 0
然后使用如下命令启动:
busybox telnetd -l /bin/login
需要注意是的
1.在busybox中设置了login功能;
2.在busybox中make之后有login生成了,并且已经把对应的login复制到了板子上。如果板子的/bin/login不存在,从远程telnet板子时就是提示板子断开连接,我就是因为这个问题折腾了好久才发现。
如果期望终端telnet上板子后的界面显示logo或是什么欢迎语,可以在/etc/issue.net这个文件中添加,没有这个文件就创建一个。
为什么是这个文件呢?
busybox$ grep "issue.net" * -n -r
Binary file busybox matches
Binary file busybox_unstripped matches
Binary file _install/bin/busybox matches
Binary file networking/lib.a matches
networking/telnetd.c:88: G.issuefile = "/etc/issue.net"; \
Binary file networking/telnetd.o matches