Архив заметок

Настройка сервера counter-strike 1.6 на FreeBSD 10

Просмотров: 3053Комментарии: 0
FreeBSD
s@beast:~ % uname -srm
FreeBSD 10.3-RELEASE-p12 amd64
Что по линупсам?
s@beast:~ % sysctl -a | grep compat.linux
hw.snd.compat_linux_mmap: 0
compat.linux32.maxvmem: 0
compat.linux32.maxssiz: 67108864
compat.linux32.maxdsiz: 536870912
compat.linux.oss_version: 198144
compat.linux.osrelease: 2.6.39
compat.linux.osname: Linux

Уже есть smile Освежу в памяти как все это хозяйство появилось:

Установил linux_base-c7. Там есть поддержка нового ядра, в c6 старый хлам, который многими приложениями не поддерживается

s@beast:~ % pkg info | grep linux
linux_base-c7-7.2.1511_3       Base set of packages needed in Linux mode for i386/amd64 (Linux CentOS 7)

После установки прописал в следующие файлы загрузку эмулятора при старте системы.

s@beast:~ % cat /boot/loader.conf
linux_load="yes"
linprocfs_load="yes"
s@beast:~ % cat /etc/rc.conf | grep linux
linux_enable="YES"
s@beast:~ % cat /etc/sysctl.conf
compat.linux.osrelease=2.6.32
kern.fallback_elf_brand=3
kern.ipc.maxsockbuf=524288

Перезагрузим sysctl:

service sysctl restart

Замечу, что пресловутые рекомендации на форумах в строке релиза compat.linux.osrelease=2.6.32 ставить значение 2.6.18 не привели к успеху установки сервера. Ругань была такая:

FATAL: kernel too old

Ну и /etc/fstab, конечно:

s@beast:~ % cat /etc/fstab | grep lin
linprocfs   /compat/linux/proc  linprocfs       rw      0       0
tmpfs    /compat/linux/dev/shm  tmpfs   rw,mode=1777    0       0

Далее. Polling я включать не стал. Играть все равно там будет от силы 4 человека, нагрузка минимальная на сеть.

Так! После всех этих манипуляций загрузим модуль линупса: kldload linux и проверим, загрузился ли:
s@beast:~ % kldstat | grep lin
 2    1 0xffffffff819bd000 11a90    linprocfs.ko
 3    3 0xffffffff819cf000 c128     linux_common.ko
 4    1 0xffffffff819dc000 9af18    linux.ko

Усе в порядке. Можно качать сервер. Сервер я качал официальный, без всяких там NoSteam сборок. Качал по привычке hldsupdatetool.bin. И вот тут ждал меня провал. Оказалось, что старая добрая программка по обновлению дистра сервачка более не оспользуется. Вместо нее пришла тулза steamcmd.

Забугорные парни еще советуют ставить bash перед закачкой steamcmd. Поставил bash, затем скачал саму прогу по ссылке: https://media.steampowered.com/installer/steamcmd_linux.tar.gz

Распаковал:

tar -zxvf steamcmd_linux.tar.gz

Кстати все эти действия я делаю в подготовленной папке для сервера. Шаги эти я не описываю.Далее я нашел на форуме у Лиссяры пост комрада, который поделился работающим скриптом по запуску steam. Назвал я его steambsd.sh:

s@beast:~/cs % cat steambsd.sh
#!/bin/bash

# figure out the absolute path to the script being run a bit
# non-obvious, the ${0%/*} pulls the path out of $0, cd's into the
# specified directory, then uses $PWD to figure out where that
# directory lives - and all this in a subshell, so we don't affect
# $PWD

STEAMROOT=$(cd "${0%/*}" && echo $PWD)
if [ -z $STEAMEXE ]; then
STEAMEXE=steamcmd
fi


#determine platform
UNAME=`uname`
if [ "$UNAME" == "Linux" ]; then
PLATFORM=linux32
# prepend our lib path to LD_LIBRARY_PATH
export LD_LIBRARY_PATH="${STEAMROOT}"/${PLATFORM}:$LD_LIBRARY_PATH
PATHLINK=~/.steampath
rm -f ${PATHLINK} && ln -s ${STEAMROOT}/${PLATFORM}/${STEAMEXE} ${PATHLINK}
PIDFILE=~/.steampid
echo $$ > ~/.steampid
else # if [ "$UNAME" == "FreeBSD" ]; then
PLATFORM=linux32
# prepend our lib path to LD_LIBRARY_PATH
export LD_LIBRARY_PATH="${STEAMROOT}"/${PLATFORM}:$LD_LIBRARY_PATH
PATHLINK=~/.steampath
rm -f ${PATHLINK} && ln -s ${STEAMROOT}/${PLATFORM}/${STEAMEXE} ${PATHLINK}
PIDFILE=~/.steampid
echo $$ > ~/.steampid
fi

ulimit -n 2048

# and launch steam
cd "$STEAMROOT"

STATUS=42
while [ $STATUS -eq 42 ]; do
${DEBUGGER} "${STEAMROOT}"/${PLATFORM}/${STEAMEXE} "$@"
STATUS=$?
# are we running osx?
if [ $STATUS -eq 42 -a ${PLATFORM} == "osx32" -a -f Info.plist ]; then
# are we running from in a bundle?
exec open "${STEAMROOT}"/../..
fi
done
exit $STATUS

Далее стартуем steam:

s@beast:~ % bash cs/steambsd.sh
Redirecting stderr to '/home/s/Steam/logs/stderr.txt'
[  0%] Checking for available updates...
[----] Verifying installation...
Steam Console Client (c) Valve Corporation
-- type 'quit' to exit --
Loading Steam API...opensslconnection.cpp (1375) : Assertion Failed: unable to load trusted SSL root certificates
Created shared memory when not owner SteamController_Shared_mem
OK.

Steam>

Конечно в первый раз он сам себя обновит smile Итак, вот я в консоле стима. Что дальше? Дальше надо залогиниться под анонимусом, ибо я качаю старье. Вроде как оно бесплатно smile

Steam>login anonymous

Connecting anonymously to Steam Public...Logged in OK
Waiting for license info...OK

Указал папку, где будет лежать сервер:

Steam>force_install_dir /usr/home/s/hlds

Затем надо качнуть сам сервер. Сейчас в Steam сервера ранжируются по идентификаторам приложений (App ID). У CS 1.6 идентификатор 90, а Counter Strike: Gloval Offensive 740.

Steam>app_update 90 validate
 Update state (0x3) reconfiguring, progress: 0,00 (0 / 0)
 Update state (0x5) validating, progress: 14,20 (41573707 / 292792971)
 Update state (0x5) validating, progress: 35,09 (102755047 / 292792971)
 Update state (0x5) validating, progress: 55,33 (162014261 / 292792971)
 Update state (0x5) validating, progress: 88,04 (257777347 / 292792971)
 Update state (0x5) validating, progress: 94,95 (278021239 / 292792971)
 Update state (0x5) validating, progress: 43,50 (321119057 / 738123909)
 Update state (0x5) validating, progress: 47,49 (350511218 / 738123909)
 Update state (0x5) validating, progress: 59,80 (441365866 / 738123909)
 Update state (0x5) validating, progress: 70,48 (520206902 / 738123909)
 Update state (0x5) validating, progress: 78,32 (578125477 / 738123909)
 Update state (0x5) validating, progress: 85,12 (628278358 / 738123909)
 Update state (0x5) validating, progress: 88,09 (650190920 / 738123909)
 Update state (0x5) validating, progress: 91,03 (671897797 / 738123909)
 Update state (0x5) validating, progress: 92,37 (681826249 / 738123909)
 Update state (0x5) validating, progress: 93,98 (693719565 / 738123909)
 Update state (0x5) validating, progress: 95,84 (707396568 / 738123909)
 Update state (0x5) validating, progress: 97,42 (719086655 / 738123909)
 Update state (0x5) validating, progress: 98,61 (727881770 / 738123909)
Success! App '90' fully installed.

И долгожданный старт сервера:

s@beast:~/hlds % ./hlds_run -game cstrike
Auto-restarting the server on crash
Unable to open tty(/dev/tty) for output

Console initialized.
Using breakpad crash handler
Setting breakpad minidump AppID = 10
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
Exe build: 13:12:29 Aug 29 2013 (6153)
STEAM Auth Server
Server IP address
couldn't exec listip.cfg
couldn't exec banned.cfg

Стартует норм. Но, как я выше и писал, что я попытался его установить. При попытке зайти на игровой сервер он падает в кору. Вот, что происходит:

warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB.  Attempting to continue with the default i386 settings.

"/usr/home/s/hlds/./hlds_linux.core" is not a core dump: File format is ambiguous
No stack.
debug.cmds:2: Error in sourced command file:
No frame selected.
email debug.log to linux@valvesoftware.com
воскресенье,  4 декабря 2016 г. 20:32:45 (MSK): Server restart in 10 seconds

gdb мало чем помог:

s@beast:~/hlds % gdb
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-marcel-freebsd".
(gdb) set gnutarget i386-marcel-freebsd
(gdb) file hlds_linux
warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB.  Attempting to continue with the default i386 settings.

Reading symbols from hlds_linux...done.
(gdb) core hlds_linux.core
Core was generated by `hlds_linux'.
Program terminated with signal 11, Segmentation fault.
#0  0x28436ae8 in ?? ()
(gdb) bt full
#0  0x28436ae8 in ?? ()
No symbol table info available.

Поиски решения продолжаются...

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)