Подробный гайд: Выделенный сервер 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. Патчи сообщества и модернизация
Оригинальный сервер не поддерживает современные ОС без доработок.
Рекомендуется:
- BF2142 Community Patch – исправляет падения на
glibc 2.31+, добавляет поддержкуx86_64черезlinux32-обёртку. - RCON и веб-панель – используйте
bf2142-adminилиGameQдля мониторинга. - Античит и балансер –
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