NetBSD тоже может запускать сервер Minecraft
Вольный перевод ;) статьи Рубена Шаде: https://rubenerd.com/netbsd-can-also-run-a-minecraft-server/
В прошлый понедельник я написал следующее о нашем сервере FreeBSD Minecraft: https://rubenerd.com/how-we-run-a-minecraft-server/
Мы с Кларой запускаем Minecraft на нашем домашнем сервере FreeBSD в lail, где Java и другие зависимости хранятся в одном изолированном месте. Теоретически вы можете запустить сервер везде, где поддерживается Java, включая Linux и, возможно, даже NetBSD, хотя последнюю я не тестировал.
Ну, я решил, что не могу оставить это как есть! Хорошая новость: да, вы можете запустить сервер Minecraft и на другой моей любимой ОС. В этом посте рассказывается, как я это сделал, хотя я уверен, что есть и другие способы.
Установка Java
После того, как вы установили NetBSD, настроили сеть и включили pkgin , вам нужно получить OpenJDK для запуска Minecraft.
Для Minecraft 1.17 и более поздних версий требуется OpenJDK 17 , но OpenJDK 16 является последним в самом последнем снимке по состоянию на июль 2022 года. Вы можете выполнить поиск, чтобы подтвердить, так ли это:
pkgin search openjdk
Если все еще 16, вы можете получить текущие пакеты, открыв файл репо:
# vi /usr/pkg/etc/pkgin/repositories.conf
И изменение URI репо, в моем случае с 9.0 на 9.0_current :
https://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/$arch/9.0_current/All
Примечание:
В текущей версии pkgsrc OpenJDK имеет версию 1.6 ( для релиза netbsd 9.х).
Поэтому, чтобы использовать OpenJDK 17 этой строкой мы как раз и подключаем репозиторий бинарников (пакетов) из версии 9.0_current.
А так как GENERIC-ядро NetBSD по умолчанию компилится с поддержкой разных версий релиза ( вплоть до netbsd 1.6 ), то больше никаких телодвижений делать не надо - OpenJDK17 запуститься в режиме бинарной совместимости. Очень удобно!
Так же GENERIC-ядро NetBSD по умолчанию компилится с поддержкой бинарной совместимости Linux ( linux-compat ).
Большое спасибо ryoon@ за работу над этим (в оригинале ссылка на добавление ryoon@ поддержки OpenJDK в netbsd-current ) . Он так много делает для сообщества NetBSD (в оригинале ссылка в pkgsrc где он является майнтейнером https://pkgsrc.se/bbmaint.php?maint=ryoon%7Ca%7CNetBSD.org), что я чувствую себя обязанным ему хотя бы чашечкой кофе или пива, когда в следующий раз смогу поехать в Японию. (От себя бы добавил еще пару другую ящиков пива, или чая, или чего еще покрепче - настолько реально он много делает!

Теперь мы можем установить вместе с несколькими другими полезными инструментами:
# pkgin install -v openjdk17 fetch tmux
Запуск Майнкрафт
Отсюда запуск Minecraft в основном такой же, как и для любого сервера с поддержкой Java. Я кладу все свои файлы в одно место:
# mkdir -p /opt/minecraft
# chown $YOUR_LOCAL_USER /opt/minecraft
Примечание:
В NetBSD программы по умолчанию ставятся в /usr/pkg/bin
Папки /opt в NetBSD нет. Поэтому, он и создает первой командой эту папку.
Папка /opt существует, обычно, в Linux. И именно туда ставятся программы по умолчанию в Linux.
Можно было бы где угодно создать эту папку. Но унификация путей - это правильный подход. Я тоже так делаю. Как минимум, не надо править конфигурационные файлы ;) Да и в общем - "порядок в танковых войсках" никто не отменял.
Затем войдите в систему как мой локальный пользователь и запустите:
$ cd /opt/minecraft
$ fetch $SERVER_URL_FROM_ABOVE.jar
Теперь мы можем начать!
$ openjdk17-java -jar minecraft.jar
Вы заметите, что Java выдает исключение, не поддерживаемое системой , которое слишком хорошо известно тем из нас, кто использует NetBSD. Из моего тестирования вы можете смело игнорировать это:
[ServerMain/WARN]: Failed retrieving info for group hardware
java.lang .UnsupportedOperationException: Operating system
not supported: NetBSD
at oshi.SystemInfo.createHardware(SystemInfo.java:163)
И не забудьте принять лицензионное соглашение после первого запуска сервера:
$ sed -i '' 's/eula=false/eula=true/' ./eula.txt
Создание сценария запуска
Мне нравится делать символическую ссылку на последнюю версию сервера на minecraft.jar :
$ ln -s /opt/minecraft/minecraft_server.1.19.jar minecraft.jar
Затем укажите его в файле launch.sh с помощью tmux, чтобы сохранить сервер после отключения. Мне также нравится давать Minecraft больше памяти:
#!/bin/sh
tmux new -s minecraft openjdk17-java -Xmx4096M -Xms4096m -jar minecraft.jar
Примечание: привел код в одну строку - так лучше читаемость.
Теперь мы готовы запускать!
$ chmod +x start.sh
$ ./start.sh
Примечание:
В тексте создается скрипт launch.sh
Но в конце, запускается start.sh
Возможно, надо было запускать launch.sh, и в статье ошибка..
Далее
Моим следующим шагом будет создание надлежащей среды chroot для Java и Minecraft, аналогично тому, что я делаю с тюрьмами FreeBSD. В течение многих лет у меня был надлежащий пост по исследованию chroot NetBSD; Приведу в порядок и скоро выложу.
Тем временем вы также можете установить все те же расширения и сторонние серверы, о которых я упоминал в своем посте FreeBSD Minecraft на прошлой неделе.
Я в восторге, это работает! 🧡