在FreeBSD-6.2下架设hlds linux v3651的几点体会
一.服务器端的下载[*]HLupdatetool方法建立一个目录用来存放客户端,如/usr/hlds,代码:mkdir /usr/hlds
切换到这个目录,如:cd /usr/hlds
代码:wget http://www.steampowered.com/download/hldsupdatetool.bin
这是官方的HLupdatetool。
如果该文件没有运行权限,代码:chmod +x hldsupdatetool.bin
解包hldsupdatetool.bin文件,代码:./hldsupdatetool.bin
然后选“yes”
执行./steam,再执行./steam -command update -game cstrike -dir .
这样,最新的服务器就下载到当前目录了。
2.直接下载打包的服务端,然后解压
建立目录的过程同上。
下载打包文件,如hlds_l_3651_cs_mod_full.tar.gz
在预期的安装目录解压文件,代码:
tar zxpf /打包文件所在的目录/hlds_l_3651_cs_mod_full.tar.gz
二.服务器的运行
通过方法1得到的服务端,起动脚本就在hldsupdatetool.bin所在目录下。
通过方法2得到的服务端就不一定了,取决于制作压缩包的人。大家可以在解压出来的目录里找一下,脚本的名字叫做hlds_run
切换到hlds_run所在目录后,可以用这行命令来测试一下:
./hlds_run -game cstrike -port 27015 +map de_dust2
如果不出现意外,应该是这样的输出:
Auto detecting CPU
Using AMD Optimised binary.
Auto-restarting the server on crash
Console initialized.
scandir failed:/usr/hlds/./platform/SAVE
Protocol version 47
Exe version 1.1.2.5/Stdio (cstrike)
Exe build: 20:02:44 Oct 24 2006 (3651)
STEAM Auth Server
couldn't exec language.cfg
Server IP address 210.46.78.38:27015
scandir failed:/usr/hlds/./platform/SAVE
couldn't exec listip.cfg
couldn't exec banned.cfg
Adding master server 69.28.151.162:27010
Adding master server 72.165.61.189:27010
0 fps -- host(1162) sv(908) cl(0) gfx(0) snd(0) ents(109)
Connection to Steam servers successful.
VAC secure mode is activated.
这段文字会因机器而异。如cpu,server ip等等。
如果出现了 Unable to Detect CPU Frequency ,Segmentation Fault
等信息,是因为系统中没有对linux的/proc实现支持。
测试代码:/compat/linux/bin/ls -l /proc/cpuinfo
如果出现:No such file or diretctory,就确信无疑了。因为hlds是linux程序,要从这里读取cpu信息,读取不到,自然就Unable to .....了。
解决的办法比较麻烦,我是重新编译了内核(这方面比较复杂,估计以我的表达能力是是说不清楚的,大家可以查看Freebsd Handbook,或者www.freebsdchina.org的论坛,或者找人问一下。。):
在内核配置文件中加入:
options COMPAT_LINUX
options LINPROCFS
重新编译内核后,在/etc/fstab中加入一行:
linproc /compat/linux/proc linprocfs rw 0 0
然后reboot一下机器,重试一下:
./hlds_run -game cstrike -port 27015 +map de_dust2
服务器应该可以正常启动了,但是这时有可能出现:
net.cpp (860) : Assertion Failed: 0 == iRet
net.cpp (863) : Assertion Failed: 0 == iRet
括号里的数字因机器而异。
这是因为程序向系统申请了256k的socket读写缓冲,貌似有些大了,可以用下面的命令来修改系统默认的最大值:
sysctl kern.ipc.maxsockbuf=524288
为了让系统每次启动时都载入这个值,可以在/etc/sysctl.conf中加入:
kern.ipc.maxsockbuf=524288
现在,唯一剩下的负面信息就是scandir failed:/usr/hlds/./platform/SAVE,couldn't exec listip.cfg这一类了。
切换到hlds_run所在目录,也就是hlds的安装目录,执行:
mkdir valve/SAVE
mkdir platform
mkdir platform/SAVE
这三条命令不一定全用,缺哪个目录,就建哪个。
然后,切换到cstrike目录下,建立那几个cfg文件。
大功告成!现在可以用hlds_run -参数s来启动服务器了,参数想必大家都熟悉,不再赘述了。
三、心得体会
FreeBSD的兼容性虽然是有的,但是在我的机器上好像并不是那么容易得到,我遇到了以上所有的问题(+.+),解决的方法也没有一个是我自己想出来的(+.+)。我把这个过程总结在这里,希望能对大家有所帮助。
以下是我参考过的主要网站,在此表示感谢:
www.google.com
list.freebsd.org
bbs.gamearena.cn
www.opensubscriber.com
www.mail-archive.com
www.freebsdchina.org
回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会
不错,帮顶楼主。。。。。。。。回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会
能提供 Liunx HLDS NS V.3651 的下载地址吗?谢谢了回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会
你可以按照楼上的办法去下载S版的3651 ,然后打上我发的NS补丁就行NS版的3651了回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会
l楼主的文章看后很受启发,不过在我的feerbsd仿真linux环境下运行程序出错,错误提示如下:cminterface.cpp (538) : Assertion Failed: NULL != m_hConnection
回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会
好帖子,楼主真敬业啊~~回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会
默认情况下, 并不开启 Linux 二进制兼容支持。 启用这一功能最简单的方法是载入 linux KLD 模块 (“Kernel LoaDable object”)。 以 root 的身份, 键入下列命令即可:# kldload linux 如果希望 Linux 兼容支持在系统初始化过程中自动启用, 则应在 /etc/rc.conf 中增加:linux_enable="YES" kldstat(8)可以用来检查KLD模块是否加载:
% kldstatId Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko 如果您不想或者无法将Linux KLD加载,您就需要在内核中静态链接进Linux二进制兼容模式。您必须在您的内核配置文件里面加入options COMPAT_LINUX,然后按照第 8 章重新编译内核。
10.2.1 安装Linux运行时库
有两种方法来安装Linux运行时库,要么使用linux_base port, 要么手动安装。
10.2.1.1 通过使用 linux_base Port 来安装
这是最容易的安装方法,只需要像安装其他port一样从 Ports Collection来安装:
# cd /usr/ports/emulators/linux_base-fc4# make install distclean 您现在应当是工作在Linux兼容模式下了。一些程序可能会提示系统库的版本不正确。通常,这不是问题。
注意: 有多个版本的emulators/linux_base port,针对不同的版本的Linux。您应该选择最接近Linux应用程序需要的那个版本来安装。
回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会
特地来感谢一下楼主,前人栽树,后人乘凉啊。用的也是FreeBSD 6.2,遇到了楼主所遇到的所有问题,看楼主文章,轻松搞定。感谢楼主之前做出的努力。 写这个帖子的时候我还是本科生,现在都博士了,回来再看这贴,真佩服当时的自己啊。。。
另外,感谢大家的支持与肯定~
页:
[1]