如何移植一个telnetd服务器到单板
1:telnetd服务器框架
- 由上图可以看到
telnetd
相当于在单板上起了一个服务器的进程,PC通过网线再通过pts设备
与服务器进行交互从而达到远程访问系统的操作。
2:利用busybox工具编译生成telnetd
- 下载
busybox
工具配置工具链如下:
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
- 执行
make menuconfig
配置静态链接库以及网络中选中支持telnetd
make menuconfig
make -j8
make install
- 在busybox可以看到_install中的工具了
telnetd
位于usr/sbin/
中- 将
telnetd
以及其链接到的busybox
移植到板中
3:启动telnetd服务器
- 修改链接属性后执行
./telnetd
即可看到telnetd服务进程
- 修改启脚本挂载devpts文件系统
由于telnetd依赖于远程虚拟终端文件设备,所以内核必须在dev目录下存在dev/pts目录用于存放远程虚拟终端文件设备。
PS:补充一下文件系统相关知识:
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
#proc:/proc,伪文件系统,只存在于内存当中不占用磁盘空间,它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息、进程是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。简单来说,proc用户是查看内核和进程等系统信息的一个接口。
#sysfs:/sys,也是一种虚拟的基于内存的文件系统,与proc类似,但除了和proc一样具有查看和设定内核参数的功能外,还有为linux统一设备模型作为管理之用,sysfs导出内核数据的方式更统一,并且组织的更好,设计优于proc。
#debugfs:/sys/kernel/debug,没有任何规则要求,用户可以放入任何信息,主要用于调试目的。
#devpts:和proc一样,是linux提供给管理员通过文件系统和内核进行沟通(读写)的一种渠道,pts是远程虚拟终端,devpts即远程虚拟终端文件设备。通过/dev/pts可以了解目前远程虚拟终端的基本情况。
启动脚本中可以执行挂载操作如下:
#!/bin/bash
mount -a #自动挂载/etc/fstab中指定的分区
mkdir /dev/pts #创建/dev/pts设备目录
mount -t devpts devpts /dev/pts #将devpts文件系统挂载于上一步创建的目录
echo /sbin/mdev > /proc/sys/kernel/hotplug #配置热插拔事件产生时候要执行的动作
mdev -s #生成设备文件
- 修改telnet登录密码
在Linux中用户密码存在于/etc/passwd
中,此文件中的释意如下:
root:x:0:0:/root:bin/bash
#用户名:密码:用户ID:组ID:用户的描述信息:使用的shell类型
#补充我们在此处并看不到密码,真正的密码存在于/etc/shadow中
此处密码不能随便设置,否则分分钟进不去系统,一般把x空着,不设置密码,要设置应该是用pssswd
命令设置(别问为什么!问就是血与泪。。。)
4:客户端登录
- 客户端利用
telnet IP地址
登录远程服务器即可访问。