搭建支持telnet和packet radio访问的BBS服务器
前言
硬件平台还是运行Manjaro ARM的R3300-M盒子,之前已经编译运行了direwolf,理论上连接各组件后即可使用。不过我的FT-8900R在车上,之前的试验中在车上给盒子供电的5V转12V升压线被烧掉了,所以一时半会儿还无法完成测试,可能加上1个12V直流稳压模块比较好。于是在这个“间隙”中,研究一下BBS系统的搭建。
BBS系统选择
之前连接到hb1bbs觉得还可以,这个BBS使用的是Mystic BBS系统。可惜经过测试,这个系统在Manjaro ARM上缺少 ld-linux.so.3 库文件所以无法运行。 AUR提供的 arm-linux-gnueabihf-glibc 可能提供了这个文件不过可惜这个包的依赖不支持arm64,好事者可以在X86-64电脑上安装然后提取。
迫于上述原因,我转而投向了 LinFBB。
LinFBB安装
编译安装ax25
到 https://github.com/ve7fet/linuxax25 下载最新release然后编译。项目分三部分:ax25apps,ax25tools,libax25,分别进入目录执行
1 |
|
开发者是基于Debian编译测试所以头文件名称与Manjaro有差异。按提示进入对应C文件将 #include <ncursesw/ncurses.h>
修改为#include <ncurses.h>
即可:
1 |
|
在man文件描述的位置并没有这个配置文件,/usr/local
下面也没有。或许有必要手动创建/etc/ax25
,然后把这些配置文件复制过去?
使libax25可被动态加载
1 |
|
这样刚才自编译安装的 libax25 就可以被动态加载了。一种比较古老的方式是使用 LD_LIBRARY_PATH 这个环境变量,不过Manjaro已经将其抛弃了,这个值默认是空的。
编译安装LinFBB
经过上面步骤后LinFBB编译安装水到渠成,照旧configure make make install三部曲,这个最后额外多了一步 make installconf
。
如果刚才没有安装配置好 libax25,这里在configure时会提示 configure: error: Could not find the libax25 libraries; aborting 导致编译无法进行。
另外需要指出,我的编译环境没有X11,所以不会编译xfbbx X11客户端。
LinFBB配置
上述编译安装步骤没有难度,从这里开始就要花一些心思了。
首次运行
1 |
|
首次运行会提示许多文件不存在,按提示选择新建即可,然后添加呼号,姓名等必要信息。这些之后都可以在配置文件中修改,所以即便填错也没关系。
之后管理fbb应当使用 /usr/local/share/doc/fbb/fbb.sh
这个脚本,用法如下:
1 |
|
等一切配置妥当后写一个systemd service用起来会更方便一点。
LinFBB提供了 xfbbd 和 xfbbC 。先不研究它们,当前的目的是配置端口以便能够通过telnet访问这个BBS。
telnet配置
LinFBB虽然在持续的开发维护中,但BBS作为旧时代的遗珍,包括笔者在内的许多人对它很陌生。教人用wordpress之类东西搭建博客的教程浩如烟海,BBS的资料则只能散见于互联网的角落。 尽管搭建于上个世纪, https://www.f6fbb.org/ 仍然保留了大量价值无边的资料,可以作为配置LinFBB的指导。
此外 /home/manjaro/fbb-7.0.11/doc/html/
目录中也提供了帮助文档,可以阅读。
参考页面: https://www.f6fbb.org/fbbdoc/fmttelne.htm
编辑PORT.SYS:
1 |
|
本例中,telnet端口号为6300,转换为16进制即为 189C。重启fbb,通过nmap可以看到本机6300端口已打开,局域网中其他设备也可以通过telnet访问BBS。虽然我们的TNC尚未配置好,**/dev/cua0** 也不存在,不过不影响Telnet端口的使用。
(编者补充:在linux中,com设备一般被命名为cua)
AX.25探究
fbb-7.0.11/doc/html/tllinux.htm
成文时间久远(1997),许多内容已经过时。不过其提及的AX25-HOWTO(成稿于2001年九月)值得阅读。如果上面链接不幸死掉了,可以访问 https://tldp.org/HOWTO/AX25-HOWTO/ 。
加载AX25内核模块
这一部分不太乐观。简单检查了一下Manjaro系统(21.3.3)的内核模块,以下是默认具备的:
- ax25
- netrom
- rose
- slip
- mkiss
- lp
- baycom_par baycom_ser_fdx baycom_ser_hdx
关键的soundmodem(sm0)不在其中。https://github.com/VK3FNG/soundmodem 显示这个模块代码已经被开发者放弃。
- 编译安装
linuxax25-ax25tools-1.0.4
其中的三个模块。上文中已完成。 - 执行
sudo modporbe ax25
编者按:ax25这个模块貌似是系统自带的,**/lib/modules/5.16.20-2-MANJARO/kernel/net/ax25/ax25.ko.xz** 的创建时间远远早于编译时间。
如果需要系统启动时自动加载这个模块,可以利用 /etc/modules-load.d
实现,具体参见 man modules-load.d
。
整合Direwolf
参考XRpi interfacing with LinFBB 一文,作者使用 socat 创建了虚拟COM口供 XRouter 和 LinFBB 使用。Linux中万物皆文件,所以使用socat创造的虚拟COM口也是一个文件,将这个文件提供给XRouter 和 LinFBB的配置文件,让它们都使用这个虚拟COM口,就实现了利用虚拟COM口连接XRouter 和 LinFBB 的目的。
Direwolf手册中描述了利用 com0com 创建虚拟COM接口以及修改Direwolf的步骤,可以作为参考。
未完待续