搜索
查看: 4809|回复: 9

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

[复制链接]
发表于 2007-3-9 12:32:27 | 显示全部楼层 |阅读模式 来自 中国–黑龙江–哈尔滨
一.服务器端的下载

  • 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
     [SIZE=-1]www.opensubscriber.com
     [SIZE=-1]www.mail-archive.com
     www.freebsdchina.org


     
     

发表于 2007-3-12 10:21:14 | 显示全部楼层 来自 中国–陕西–西安

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

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

使用道具 举报

发表于 2007-3-24 01:01:52 | 显示全部楼层 来自 中国–广东–韶关

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

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

使用道具 举报

发表于 2007-3-30 16:08:12 | 显示全部楼层 来自 中国–陕西–西安

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

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

使用道具 举报

发表于 2007-5-27 09:09:04 | 显示全部楼层 来自 中国–辽宁–盘锦

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

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

使用道具 举报

发表于 2007-6-16 18:40:17 | 显示全部楼层 来自 中国–北京–北京–石景山区

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

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

使用道具 举报

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

使用道具 举报

发表于 2007-7-19 12:14:25 | 显示全部楼层 来自 中国–江苏–南京

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

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

使用道具 举报

 楼主| 发表于 2011-4-9 11:39:57 | 显示全部楼层 来自 中国–黑龙江–哈尔滨
写这个帖子的时候我还是本科生,现在都博士了,回来再看这贴,真佩服当时的自己啊。。。
另外,感谢大家的支持与肯定~
回复

使用道具 举报

发表于 2011-5-2 13:50:38 | 显示全部楼层 来自 中国–江苏–扬州
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表