Подробный гайд: Установка и настройка выделенного сервера Battlefield 2142 на Elementary OS

Сервер Battlefield 2142 на Elementary OS через Wine с патчами сообщества. Настройка, конфиги, автозапуск через systemd.

2026.04.26                  


Подробный гайд: Установка и настройка выделенного сервера Battlefield 2142 на Elementary OSПодробный гайд: Установка и настройка выделенного сервера Battlefield 2142 на Elementary OS

Важные предварительные замечания

  • Официальные серверы EA были отключены в 2014 году. Для работы мультиплеера обязательно требуются патчи сообщества (наиболее стабильный: BF2142 Revival / Project 142b).
  • Выделенный сервер поставляется только для Windows. На Linux он стабильно запускается через Wine.
  • Elementary OS основана на Ubuntu LTS, поэтому все команды совместимы с apt и systemd.
  • Рекомендуется использовать легальную копию игры для получения оригинальных файлов сервера.

Шаг 1: Подготовка системы

1. Обновите пакеты и добавьте поддержку 32-битных библиотек (сервер 32-битный):

sudo apt update && sudo apt upgrade -y
sudo dpkg --add-architecture i386
sudo apt update

2. Установите базовые зависимости:

sudo apt install -y wine winetricks curl unzip net-tools ufw systemd-cron

3. (Опционально) Установите свежую версию Wine из официального репозитория, если в репозиториях Elementary OS версия старее 8.0:

sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(. /etc/os-release && echo "$VERSION_CODENAME")/winehq-$(. /etc/os-release && echo "$VERSION_CODENAME").sources
sudo apt update
sudo apt install -y --install-recommends winehq-stable

Шаг 2: Получение файлов сервера и патчей

1. Оригинальные файлы:

  • Установите BF2142 на любой Windows-ПК или в виртуальную машину.
  • Найдите папку установки, обычно: C:\Program Files\EA Games\Battlefield 2142\
  • Вам нужны: BF2142_w32ded.exe, папки mods\bf2142, mods\bf2142\Cache, mods\bf2142\Data
  • Также можно скачать официальный BF2142 Dedicated Server из архивов EA (файл bf2142_dedicated_server.zip).

2. Патч сообщества (обязательно):

  • Скачайте актуальный патч с официального сайта сообщества: bf2142revival.com или project142b.com
  • Распакуйте архив, он содержит исправленные .dll, bf2142_w32ded.exe, а также утилиту MasterServerRedirect для подключения к современным мастер-серверам.

3. Создайте структуру на сервере:

mkdir -p ~/bf2142server/drive_c/Program\ Files/EA\ Games/Battlefield\ 2142/mods/bf2142

Скопируйте оригинальные файлы сервера и замените их файлами из патча сообщества в указанную директорию.


Шаг 3: Настройка Wine-префикса

Сервер должен работать в 32-битном префиксе с эмуляцией Windows 7.

export WINEPREFIX=~/bf2142server
export WINEARCH=win32

# Инициализация префикса
winecfg

В открывшемся окне winecfg:

  • Вкладка Windows Version → выбрать Windows 7
  • Вкладка Libraries → добавить d3dx9_36, d3dcompiler_43, msvcp60, msvcr71, vcrun2005 (позже установим через winetricks)
  • Нажмите OK

Установите необходимые компоненты:

WINEPREFIX=~/bf2142server WINEARCH=win32 winetricks -q vcrun2005 vcrun2008 directx9

Рекомендуется отключить графический вывод для сервера:

WINEPREFIX=~/bf2142server wine reg add "HKCU\Software\Wine\Direct3D" /v "VideoMemorySize" /t REG_SZ /d "0" /f

Шаг 4: Конфигурация сервера

Все настройки хранятся в файлах .con (ASCII-кодировка, без BOM).

1. serversettings.con (основные параметры):

sv.serverName "BF2142 EU Community Server"
sv.maxPlayers 32
sv.gamemode gpm_cq
sv.ranked 1
sv.password ""
sv.adminPassword "your_admin_pass"
sv.autoRotate 1
sv.timeLimit 30
sv.scoreLimit 0

2. maplist.con (список карт):

mapList.add map_toronto gpm_cq 6
mapList.add map_shanghai gpm_cq 6
mapList.add map_minsk gpm_cq 6
mapList.add map_beach gpm_cq 6
mapList.add map_fortress gpm_cq 6

Имена карт и режимов должны совпадать с названиями в папке mods/bf2142/Levels/

3. Поместите оба файла в:

~/bf2142server/drive_c/Program\ Files/EA\ Games/Battlefield\ 2142/mods/bf2142/

Шаг 5: Запуск и тестирование

1. Ручной запуск (для проверки):

cd "~/bf2142server/drive_c/Program Files/EA Games/Battlefield 2142"
WINEPREFIX=~/bf2142server WINEARCH=win32 wine BF2142_w32ded.exe +exec serversettings.con +mapList.mapList

2. Проверка:

  • В консоли должно появиться: Starting server on port 16567...
  • Проверьте открытый порт: ss -ulnp | grep 16567
  • Попробуйте подключиться клиентом (с тем же патчем сообщества) через IP_СЕРВЕРА:16567

3. Логи:

~/bf2142server/drive_c/users/$USER/Local Settings/Application Data/Battlefield 2142/Logs/server.log

Шаг 6: Настройка сети и автозагрузки

Брандмауэр (UFW)

sudo ufw allow 16567/udp
sudo ufw allow 16567/tcp
sudo ufw reload

Если сервер за NAT, пробросьте порт 16567/udp на роутере.

Systemd-сервис (автозапуск)

1. Создайте файл:

sudo nano /etc/systemd/system/bf2142server.service

2. Вставьте:

[Unit]
Description=Battlefield 2142 Dedicated Server
After=network.target

[Service]
Type=simple
User=denis
WorkingDirectory=/home/denis/bf2142server/drive_c/Program Files/EA Games/Battlefield 2142
Environment=WINEPREFIX=/home/denis/bf2142server
Environment=WINEARCH=win32
Environment=DISPLAY=:0
ExecStart=/usr/bin/wine BF2142_w32ded.exe +exec serversettings.con +mapList.mapList
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

3. Активируйте:

sudo systemctl daemon-reload
sudo systemctl enable --now bf2142server.service
sudo journalctl -u bf2142server -f

Для headless-серверов (без монитора) установите xvfb и измените ExecStart:

ExecStart=/usr/bin/xvfb-run --auto-servernum --server-args="-screen 0 640x480x24" /usr/bin/wine BF2142_w32ded.exe ...

Устранение неполадок

Симптом Решение
Missing DLL при старте WINEPREFIX=~/bf2142server winetricks vcrun2005
Сервер запускается, но не видит карты Проверьте регистр в maplist.con, убедитесь, что файлы .con в ASCII (не UTF-8 с BOM)
Краш при загрузке первой карты Добавьте в запуск: +set fs_basepath "C:\Program Files\EA Games\Battlefield 2142"
Клиент не подключается Убедитесь, что клиент и сервер используют одинаковый патч сообщества, проверьте UFW/NAT, отключите IPv6 в serversettings.con: sv.ipVersion 4
Высокий CPU / лаги Ограничьте тикрейт: sv.fps 30, добавьте +set net_maxfps 30

Безопасность и рекомендации

  • Запускайте сервер от отдельного пользователя, не от root.
  • Используйте ufw или nftables, разрешайте доступ только по нужным портам.
  • Регулярно обновляйте патчи сообщества и бэкапьте serversettings.con.
  • Настройте rcon (удалённая консоль) через sv.adminPassword и клиенты типа BF2142 RCON Tool.
  • Не размещайте сервер в публичных каталогах с sv.password "", если не готовы к гриферам.