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

Установка выделенного сервера Battlefield 2142 на Gentoo Linux. Настройка, патчи совместимости, автозапуск OpenRC, фаервол nftables.

2026.04.28                  


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

Важно:

  • Battlefield 2142 вышел в 2006 году. Официальные серверные файлы больше не распространяются EA, а бинарник собран под glibc 2.3 и требует libstdc++.so.5. На современных Gentoo потребуются мультилиб-среда, патчи совместимости и сообщества (например, Project 2142 / BF2142 Revive). Гайд актуален для профилей 17.1 и новее (2024–2026).

1. Системные требования

Компонент Минимум
CPU 1 ядро (x86_64)
RAM 256–512 МБ
Диск 1 ГБ
Сеть Открытый UDP порт 16567, статический IP или проброс
ОС Gentoo Linux (профиль multilib)

2. Подготовка Gentoo

2.1 Проверка профиля мультилиб

eselect profile list

Убедитесь, что активен профиль с multilib, например:

default/linux/amd64/17.1/desktop/multilib (sysv)

Если нет:

eselect profile set default/linux/amd64/17.1/multilib

2.2 Включение 32-битных библиотек

В /etc/portage/make.conf добавьте или раскомментируйте:

ABI_X86="64 32"

Обновите систему:

emerge --ask --newuse --deep @world

2.3 Установка зависимостей

emerge --ask \
  sys-devel/gcc \
  sys-libs/glibc \
  sys-libs/libstdc++-v3 \
  media-libs/libpng \
  media-libs/libjpeg-turbo \
  sys-libs/zlib \
  dev-libs/openssl \
  app-misc/screen \
  sys-apps/patchelf \
  net-firewall/nftables

libstdc++-v3 предоставляет libstdc++.so.5, необходимый для оригинального бинарника.


3. Загрузка и установка сервера

3.1 Получение файлов

Официальные зеркала EA недоступны.

Рекомендуется использовать архивы или сообщества:

  • Project 2142 - project2142.com
  • BF2142 Revive - bf2142revive.com
  • Archive.org: bf2142_linux_dedicated_server.zip

Создайте директорию и распакуйте:

mkdir -p /opt/bf2142
cd /opt/bf2142
unzip bf2142_linux_dedicated_server.zip

3.2 Патч совместимости с modern glibc

Оригинальный bf2142_lnxded падает на glibc >= 2.31.

Исправляем:

# Проверяем зависимости
ldd bf2142_lnxded

# Если отсутствует интерпретатор или libstdc++.so.5
patchelf --set-interpreter /lib/ld-linux.so.2 bf2142_lnxded
patchelf --add-needed libstdc++.so.5 bf2142_lnxded 2>/dev/null || true
chmod +x bf2142_lnxded

Альтернатива:

  • используйте уже пропатченный бинарник от сообщества (bf2142_lnxded_fixed).

3.3 Базовая настройка сервера

Создайте /opt/bf2142/serverconfig.con:

sv.servername "Gentoo BF2142 Server"
sv.maxplayers 32
sv.port 16567
sv.gameplay bf2142
sv.maplist "conquest_little_hanoi, assault_alaska, titan_gibraltar, conquest_istanbul"
sv.autoadmin 1
sv.autobalance 1
sv.maxbots 0
sv.respawn 1
sv.scorelimit 200
sv.timelimit 0

Настройки конвейера карт (modlist.txt) можно оставить пустыми, если используется ванильный режим.

4. Запуск и тестирование

4.1 Ручной запуск

cd /opt/bf2142
./bf2142_lnxded +set serverconfig.con

Проверьте лог:

tail -f server.log

Ожидаемые строки в логе:

Server is listening on port 16567
Map loaded: conquest_little_hanoi

4.2 Запуск в фоне (для тестов)

screen -dmS bf2142 ./bf2142_lnxded +set serverconfig.con

Подключиться к сессии:

screen -r bf2142

5. Автозапуск через OpenRC

Создайте /etc/init.d/bf2142:

#!/sbin/openrc-run
#depend() {
#   need net
#   after firewall
#}

command="/opt/bf2142/bf2142_lnxded"
command_args="+set serverconfig.con"
command_background=true
pidfile="/run/bf2142.pid"
name="BF2142 Dedicated Server"
user="games"
group="games"

start_pre() {
   checkpath --directory --owner games:games /run
   checkpath --directory --owner games:games /opt/bf2142
}

Делаем исполняемым и добавляем в runlevel:

chmod 0755 /etc/init.d/bf2142
useradd -r -d /opt/bf2142 -s /bin/false games
chown -R games:games /opt/bf2142
rc-update add bf2142 default
rc-service bf2142 start

Бинарник BF2142 не создаёт pidfile самостоятельно. OpenRC будет отслеживать фоновый процесс. Для надёжного управления используйте supervise-daemon или оберните в screen/systemd.


6. Сетевая настройка и фаервол

6.1 Порты

Протокол Порт Назначение
UDP 16567 Основной игровой трафик
UDP 22000–22100 Query / RCON (опционально)
TCP 16567 RCON (если включён в конфиге)

6.2 Настройка nftables (Gentoo default)

/etc/nftables.conf:

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        iif lo accept
        ct state established,related accept
        tcp dport 22 accept
        udp dport 16567 accept
        udp dport 22000-22100 accept
        icmp type echo-request accept
    }
}

Примените:

nft -f /etc/nftables.conf
rc-service nftables start
rc-update add nftables default

7. Патчи сообщества и модернизация

Оригинальный сервер не поддерживает современные ОС без доработок.

Рекомендуется:

  1. BF2142 Community Patch – исправляет падения на glibc 2.31+, добавляет поддержку x86_64 через linux32-обёртку.
  2. RCON и веб-панель – используйте bf2142-admin или GameQ для мониторинга.
  3. Античит и балансерBF2142 AntiCheat (от сообщества) или ручная настройка sv.autobalance.

Установка патча обычно сводится к замене bf2142_lnxded и запуску install.sh из архива сообщества.

8. Диагностика и логирование

Проблема Решение
error while loading shared libraries: libstdc++.so.5 emerge sys-libs/libstdc++-v3, проверьте ldd
Сервер падает сразу после запуска Проверьте server.log, используйте patchelf или пропатченный бинарник
Нет подключения из интернета Откройте UDP 16567, проверьте NAT/роутер, nmap -sU <IP> -p 16567
OpenRC не отслеживает PID Запустите через screen или замените скрипт на supervise-daemon
Карты не загружаются Проверьте пути в sv.maplist, наличие .con файлов в mods/bf2142/Levels/

Просмотр логов в реальном времени:

tail -f /opt/bf2142/server.log

9. Резервное копирование и обновления

# Бэкап конфигов
tar czf /root/bf2142_backup_$(date +%F).tar.gz /opt/bf2142/*.con /opt/bf2142/server.log

# Обновление (при выходе новых патчей сообщества)
rc-service bf2142 stop
cp -r /opt/bf2142 /opt/bf2142.old
# замените файлы, примените патч, запустите
rc-service bf2142 start

Итог

Вы получили рабочий выделенный сервер BF2142 на Gentoo с:

  • Поддержкой 32-битных библиотек через multilib
  • Патчами совместимости с glibc 2.31+
  • Автозапуском через OpenRC
  • Настроенным nftables
  • Базовой диагностикой и логированием

Полезные ресурсы:

  • Project 2142 Wiki - wiki.project2142.com
  • Gentoo Multilib Handbook - wiki.gentoo.org/wiki/Multilib
  • BF2142 Server Config Reference - bf2142revive.com/docs