sdshq201 发表于 2007-3-9 12:32:27

在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


   
   

gearfox 发表于 2007-3-12 10:21:14

回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会

不错,帮顶楼主。。。。。。。。

stcowboy 发表于 2007-3-24 01:01:52

回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会

能提供 Liunx HLDS NS V.3651 的下载地址吗?谢谢了

gearfox 发表于 2007-3-30 16:08:12

回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会

你可以按照楼上的办法去下载S版的3651 ,然后打上我发的NS补丁就行NS版的3651了

sprider 发表于 2007-5-27 09:09:04

回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会

l楼主的文章看后很受启发,不过在我的feerbsd仿真linux环境下运行程序出错,错误提示如下:
cminterface.cpp (538) : Assertion Failed: NULL != m_hConnection

heidern 发表于 2007-6-16 18:40:17

回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会

好帖子,楼主真敬业啊~~

thinkpadnb 发表于 2007-7-12 21:58:31

回复: 在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应用程序需要的那个版本来安装。

netfrog 发表于 2007-7-19 12:14:25

回复: 在FreeBSD-6.2下架设hlds linux v3651的几点体会

特地来感谢一下楼主,前人栽树,后人乘凉啊。
用的也是FreeBSD 6.2,遇到了楼主所遇到的所有问题,看楼主文章,轻松搞定。感谢楼主之前做出的努力。

sdshq201 发表于 2011-4-9 11:39:57

写这个帖子的时候我还是本科生,现在都博士了,回来再看这贴,真佩服当时的自己啊。。。
另外,感谢大家的支持与肯定~

枝恩广 发表于 2011-5-2 13:50:38

页: [1]
查看完整版本: 在FreeBSD-6.2下架设hlds linux v3651的几点体会