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 …..了。
解决的办法比较麻烦,我是重新编译了内核.
在内核配置文件中加入:
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
kern.ipc.maxsockbuf=524288

