Подробный гайд: Выделенный сервер Battlefield 2142 на Slackware Linux

Гайд: выделенный сервер Battlefield 2142 на Slackware через Wine. Установка, настройка, конфиги, автозапуск, файрвол, мониторинг.

2026.04.28                  


Подробный гайд: Выделенный сервер Battlefield 2142 на Slackware LinuxПодробный гайд: Выделенный сервер 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.

Варианты:

  1. Извлечение из лицензионного установщика (например, через innoextract на Windows или легальный архив).
  2. Фанатские сборки (например, 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, dinput8Native 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