Подробный гайд: Выделенный сервер Battlefield 2142 на Slackware Linux
Важное предупреждение
- Battlefield 2142 никогда не имел официальной Linux-версии выделенного сервера. Запуск возможен только через эмуляцию Windows-окружения (Wine).
- Официальные серверные бинарники и мастер-листы EA отключены с 2014 года. Данный гайд ориентирован на сообщественные/архивные сборки и предполагает наличие легально приобретённой копии игры.
- Руководство актуально для Slackware 15.0 / Current (sysvinit по умолчанию).
1. Подготовка системы
1.1. Обновление и базовые пакеты
slackpkg update
slackpkg upgrade-all
slackpkg install screen tmux dos2unix wget tar
1.2. Включение Multilib (обязательно для x86_64)
Wine требует 32-битных библиотек.
В Slackware это делается через официальный набор multilib:
# 1. Скачайте пакетный набор (пример для Slackware64-15.0)
cd /tmp
wget http://bear.alienbase.nl/mirrors/people/alien/multilib/15.0/multilib-15.0-compat32.tar.gz
tar xf multilib-15.0-compat32.tar.gz
cd multilib-15.0-compat32
sh multilib-compat32.sh
# 2. Обновите систему
slackpkg upgrade-all
Подробности: AlienBOB Multilib Guide - slackware.nl/alien/multilib/
1.3. Установка Wine
В Slackware Wine находится в extra/ или собирается через SlackBuilds.org
# Вариант A: из extra (если есть в вашем релизе)
slackpkg install wine
# Вариант B: через SBo (рекомендуется для актуальных версий)
sbopkg -i wine
Проверьте установку:
wine --version
1.4. Создание пользователя
Никогда не запускайте сервер от root.
useradd -m -s /bin/bash bf2142srv
passwd bf2142srv
su - bf2142srv
2. Получение серверных файлов
Официальный bf2142_dedicated_server.exe больше не распространяется EA.
Варианты:
- Извлечение из лицензионного установщика (например, через
innoextractна Windows или легальный архив). - Фанатские сборки (например,
BF2142 Revive,Project 2142), содержащие адаптированные бинарники и фиксы.
3. Размещение файлов:
mkdir -p ~/bf2142server/{mods,logs}
# Скопируйте содержимое установщика/архива в ~/bf2142server
Структура каталога должна содержать:
bf2142_dedicated_server.exe
bf2142.exe (для проверки зависимостей)
mods/
server.cfg (создаётся вручную)
maplist.txt
3. Настройка Wine
3.1. Создание 32-битного префикса
export WINEPREFIX=$HOME/.wine-bf2142
export WINEARCH=win32
winecfg
В открывшемся окне:
- Версия Windows: Windows 7 (или XP, если 7 вызывает артефакты)
- Вкладка
Libraries: добавьтеd3dx9_36,vcrun2005,dinput8→Native then Builtin
3.2. Установка зависимостей через winetricks
winetricks corefonts vcrun2005 directx9 d3dx9
Процесс займёт несколько минут.
После завершения:
winecfg # Убедитесь, что звук и графика выставлены в "Dummy" или отключены (серверу не нужны)
3.3. Тестовый запуск
cd ~/bf2142server
WINEPREFIX=$HOME/.wine-bf2142 WINEDEBUG=-all wine bf2142_dedicated_server.exe
Если сервер запустится и покажет консоль с Loading... → Wine настроен корректно. Прервите Ctrl+C.
4. Конфигурация сервера
Создайте ~/bf2142server/server.cfg:
# Основные параметры
sv_name "My BF2142 Slackware Server"
sv_password ""
sv_maxPlayers 32
sv_port 16567
sv_tickRate 60
# Сеть и безопасность
sv_rconPassword "YOUR_STRONG_RCON_PASS"
sv_punkBuster 0
sv_allowDownload 1
sv_voiceQuality 0
# Логи и отладка
sv_logFile 1
sv_logFileAppend 1
sv_logServerState 1
# Стартовая карта и мод
sv_mapListFile "maplist.txt"
sv_mod "mods/standard"
Создайте ~/bf2142server/maplist.txt:
gpm_cq 2042_wake_island
gpm_cq 2042_gulf_of_oman
gpm_tdm 2042_kamandarey
gpm_cq 2042_sharqi_peninsula
Имена карт должны точно совпадать с файлами в mods/standard/Levels/.
5. Запуск и автоматизация
5.1. Скрипт запуска (~/start_server.sh)
#!/bin/bash
cd "$HOME/bf2142server" || exit 1
export WINEPREFIX="$HOME/.wine-bf2142"
export WINEARCH=win32
export WINEDEBUG=-all
LOGFILE="$HOME/bf2142server/logs/server_$(date +%F).log"
echo "[$(date)] Запуск BF2142 Dedicated Server..." >> "$LOGFILE"
exec wine bf2142_dedicated_server.exe +exec server.cfg 2>&1 | tee -a "$LOGFILE"
chmod +x ~/start_server.sh
5.2. Запуск в фоновом режиме
screen -S bf2142srv ~/start_server.sh
# Отключение: Ctrl+A, D
# Возврат: screen -r bf2142srv
5.3. Автостарт при загрузке (sysvinit)
Добавьте в /etc/rc.d/rc.local (перед exit 0):
su - bf2142srv -c "screen -dmS bf2142srv $HOME/start_server.sh"
Сделайте rc.local исполняемым:
chmod +x /etc/rc.d/rc.local
6. Сетевая настройка и файрвол
6.1. Порты сервера
| Порт | Протокол | Назначение |
|---|---|---|
16567 |
UDP | Игровой трафик |
29900 |
UDP/TCP | RCON, Server Query |
14567 |
UDP | Альтернативный гейм-порт (зависит от сборки) |
6.2. Настройка iptables (Slackware)
Отредактируйте /etc/rc.d/rc.firewall или добавьте правила вручную:
iptables -A INPUT -p udp --dport 16567 -j ACCEPT
iptables -A INPUT -p udp --dport 29900 -j ACCEPT
iptables -A INPUT -p tcp --dport 29900 -j ACCEPT
iptables-save > /etc/iptables.rules
Проверьте:
netstat -tulnp | grep 16567
6.3. NAT / Роутер
Пробросьте порты на внешний интерфейс. Сервер не появится в официальном списке мастер-серверов (отключён в 2014).
Для листинга используйте:
- Фанатские браузеры (например,
BF2142 Revive Browser) - Web-панели мониторинга
- Ручную раздачу IP:
connect <IP>:16567
7. Администрирование и мониторинг
7.1. Подключение через RCON
Из консоли сервера (в screen) или внешнего клиента:
rcon_password YOUR_STRONG_RCON_PASS
rcon admin say "Server online on Slackware"
rcon sv_mapNext
rcon sv_kick <player_id>
7.2. Логирование
Логи пишутся в ~/bf2142server/logs/.
Настройте ротацию через logrotate:
cat > /etc/logrotate.d/bf2142srv << EOF
/home/bf2142srv/bf2142server/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
copytruncate
}
EOF
7.3. Мониторинг ресурсов
htop -u bf2142srv
iotop -o
ss -ulnp | grep -E '16567|29900'
8. Типовые проблемы и решения
| Симптом | Причина | Решение |
|---|---|---|
wine: Bad EXE format |
Запуск 64-битного бинарника в 32-битном префиксе | Пересоберите префикс: rm -rf ~/.wine-bf2142, заново создайте с WINEARCH=win32 |
| Сервер падает при загрузке карты | Отсутствие d3dx9, vcrun2005 или конфликт с Wine |
Установите через winetricks, попробуйте Wine 7.x или 8.x |
| Игроки не подключаются | Файрвол, NAT, или неправильный sv_port |
Проверьте iptables, проброс портов, netstat |
| RCON не отвечает | sv_rconPassword не задан или порт заблокирован |
Проверьте server.cfg, откройте 29900 |
| Сервер не виден в списке | Мастер-серверы EA отключены | Используйте фанатские браузеры, раздавайте IP вручную |
| Высокий ping / лаги | MTU, QoS, или ограничение Wine-сети | Добавьте export WINEDEBUG=-all, проверьте tc правила |
9. Оптимизация и безопасность
- DXVK: Может ускорить рендеринг в Wine, но для выделенного сервера обычно не нужен. Отключите, если наблюдаются вылеты.
- CPU Affinity: Привяжите процесс к ядрам:
taskset -c 0,1 wine ... - SELinux/AppArmor: В Slackware отключены по умолчанию. Если включали вручную, добавьте исключения для
~/.wine-bf2142и~/bf2142server. - Бэкапы: Регулярно копируйте
server.cfg,maplist.txt,mods/. - Обновления: Сервер не обновляется автоматически. Следите за комьюнити-патчами вручную.
10. Юридические и технические примечания
Легальность: Запуск сервера разрешён при наличии лицензионной копии игры. Распространение bf2142_dedicated_server.exe без лицензии нарушает EULA EA.
Сетевая модель: Официальный матчмейкинг, статистика и PunkBuster отключены. Сервер работает в изолированном режиме.
Альтернативы: Если Wine показывает нестабильность, рассмотрите:
- Виртуальную машину с Windows Server 2012/2016 (Hyper-V, KVM)
- Контейнер
wineв Docker (требует проброса портов и настройки--network host) - Фанатские кроссплатформенные обёртки (если появятся в 2026)
Полезные ссылки (на 2026)
- SlackBuilds.org – Wine - slackbuilds.org/result/?search=wine
- AlienBOB Multilib - slackware.nl/alien/multilib/
- BF2142 Revive / Community Patch - поиск в архивах GitHub/Forge
- WineHQ AppDB – Battlefield 2142 - appdb.winehq.org
- Slackware Documentation - docs.slackware.com