LPC编程
FluffOS
FluffOS
is the next generation of MudOS
. It starts as an collection of patches on top of last release of MudOS, comes with many new features and bug fixes.
In 2019, there will be 2 release track maintained:
- v2017: no build system upgrade, no new features, critical bugfix only.
- v2019: cmake build system, JS interop support and rolling updates.
特色Features
:
- Mostly backward-compatible to MudOS. (Upgrade should be easy!)
- Lots of bug fixes. (including full CHECK_MEMORY enabled testsuite pass).
- Compile on modern linux distros, 32bit & 64bit, CYGWIN support.
- 64 bit LPC runtime, LPC int is always 64bit int, LPC float is C double.
- MXP, GMCP, ZLIB.
- IPv6 support (optional)
- ICONV support, code in UTF-8, dynamic translation on output (optional)
- POSIX timer for better time precision. (optional)
- More strict type checking (optional)
- libevent integration, epoll backend.
Docker镜像
为了方便大家编译FluffOS
,我参考lostsnow
的镜像,做了这个docker镜像。熟悉docker的同学欢迎fork或clone使用。
0. Intro
Docker 镜像 : FluffOS v2019 的 Ubuntu 编译环境。 此项目参考了 https://github.com/lostsnow/docker-fluffos ,更新为可以编译 FluffOs v2019 。
1. Build compile image
建立为编译 FluffOS 源码的 docker 镜像,确定已经安装了docker 1.12+
和git
。
以下的命令可能需要su root
或者sudo
,假设我们在/XXXX/
目录下操作。真正操作时,记得将下面代码中/XXXX/
替换为相应的目录,即上面代码中你建立docker
目录位置的绝对目录。
cd /XXXX/ mkdir docker cd docker git clone https://github.com/zero9k/docker_fluffos.git cd docker_fluffos docker build -t zero9k/fluffos_build ./build
成功后,输入docker images
指令可以看到REPOSITORY
下增加了ubuntu
和zero9k/fluffos_build
两个 image,类似下面这样:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE zero9k/fluffos_build latest 3b3444136461 3 hours ago 521MB ubuntu latest 47b19964fb50 4 weeks ago 88.1MB $
2. Compile driver
下载 fluffos 源码。
cd /XXXX/docker/ git clone https://github.com/fluffos/fluffos.git
利用镜像fluffos_build
编译 fluffos 源码,生成驱动, 最终产生包括 driver 的 2 个二进制文件。
docker run --rm -v /XXXX/docker:/opt/docker zero9k/fluffos_build
成功后,输入ls -la docker_fluffos/bin/
指令可以看到driver
和portbind
两个二进制文件,注意日期,看是否新生成的。
(因为此项目已经包括编译好的二进制文件,当然你也可以直接使用,忽略以上步骤。)
3. Build driver image
生成 fluffos 驱动镜像,实际就是把 2 个二进制文件 copy 进 docker image ,同时安装其运行需要的依赖库。
cd /XXXX/docker/docker_fluffos docker build -t zero9k/fluffos .
成功后,输入docker images
指令可以看到REPOSITORY
下增加了zero9k/fluffos
,类似下面这样:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE zero9k/fluffos latest cf1eda359956 2 hours ago 143MB zero9k/fluffos_build latest 3b3444136461 3 hours ago 521MB ubuntu latest 47b19964fb50 4 weeks ago 88.1MB $
4. run mudlib
运行 MUD ,即用 fluffos 驱动 mudlib ,比如 fy/xkx/xyj 等(我的GitHub 有一些mudlib)。以下的代码以 fy4 为参考,可能需要修改源码 (那涉及到如何让 fluffos 可以跑 mudos v22 的老lib,不在本文讨论范围内,请自行学习)。
准备好修改好的 config 文件 (fluffos 源码中有样例,根据需求修改),假设位置为/home/cfg/config.fy
,假设修改后端口为 6666。
cd docker mkdir mudlib cd mudlib git clone https://github.com/huangleon/fy4.git cp /home/cfg/config.fy fy4/config.fy docker run -d --name fy4 \ -p 6666:6666 \ -v XXXX/docker/mudlib/fy4:/opt/docker \ zero9k/fluffos /opt/docker/config.fy
成功后,输入docker ps
指令可以看到0.0.0.0:6666→6666/tcp
,失败可以输入docker logs -f fy4
指令查看 log,也可以进一步查看 mudlib 的 debug.log (比如tail -f /XXXX/docker/mudlib/fy4/log/debug.log
)。