Как сменить версию ядра сервера

1. Подготовка и доступ к панели proxify.cloud

  1. Авторизуйтесь в панели управления proxify.cloud.
  2. В списке услуг выберите нужный выделенный сервер (Dedicated Server) с установленным Ubuntu.
  3. Перейдите во вкладку Console (Консоль) или VNC для получения прямого доступа к оболочке сервера.
    Рекомендуется использовать SSH-клиент (OpenSSH, PuTTY, Termius) для удобства копирования команд:
    ssh root@<IP-адрес_вашего_сервера>
    
  4. Обновите локальный индекс пакетов и установите утилиты для работы с ядром:
    apt update && apt install -y linux-image-generic linux-headers-generic grub2-common
    

2. Проверка текущей версии ядра

Выполните команду, чтобы узнать, какое ядро загружено в данный момент:

uname -r

Пример вывода: 5.15.0-105-generic.

Посмотрите все установленные ядра в системе:

dpkg --list | grep linux-image

Вы увидите список пакетов в формате ii linux-image-5.15.0-105-generic 5.15.0-105.115 amd64 Signed kernel image generic.

3. Выбор целевой версии ядра

Вариант А: Установка последней стабильной версии из репозитория Ubuntu (рекомендовано)

  1. Найдите доступные версии в репозитории:
    apt-cache search linux-image | grep -E '^linux-image-[0-9]+\.[0-9]+\.[0-9]+-.*-generic' | sort -V | tail -20
    
  2. Установите нужный метапакет (например, для ветки 6.5 на Ubuntu 22.04 LTS — HWE kernel):
    apt install -y linux-image-generic-hwe-22.04 linux-headers-generic-hwe-22.04
    
    Для Ubuntu 24.04 базовое ядро уже новое, метапакет linux-image-generic достаточно.

Вариант Б: Установка конкретной версии (например, 6.8.x)

Если требуется строго определенная версия (часто нужно для совместимости с античиты или специфическими модами):

apt install -y linux-image-6.8.0-31-generic linux-headers-6.8.0-31-generic linux-modules-6.8.0-31-generic linux-modules-extra-6.8.0-31-generic

Замените 6.8.0-31 на актуальную версию из вывода apt-cache search.

Вариант В: Установка Mainline Kernel (вручную через .deb пакеты)

Используйте, если нужна версия новее, чем в репозиториях (например, 6.10+ для поддержки нового железа).

  1. Перейдите в временную директорию:
    cd /tmp
    
  2. Скачайте 4 пакета для вашей архитектуры (amd64) с kernel.ubuntu.com:
    # Пример для версии 6.10.5
    wget https://kernel.ubuntu.com/mainline/v6.10.5/amd64/linux-headers-6.10.5-061005_6.10.5-061005.202408151235_all.deb
    wget https://kernel.ubuntu.com/mainline/v6.10.5/amd64/linux-headers-6.10.5-061005-generic_6.10.5-061005.202408151235_amd64.deb
    wget https://kernel.ubuntu.com/mainline/v6.10.5/amd64/linux-image-unsigned-6.10.5-061005-generic_6.10.5-061005.202408151235_amd64.deb
    wget https://kernel.ubuntu.com/mainline/v6.10.5/amd64/linux-modules-6.10.5-061005-generic_6.10.5-061005.202408151235_amd64.deb
    
  3. Установите пакеты:
    dpkg -i linux-*.deb
    
  4. Исправьте возможные зависимости:
    apt -f install
    

4. Настройка загрузчика GRUB для выбора ядра по умолчанию

После установки нового ядра оно не обязательно станет загружаться первым. Настройте GRUB.

  1. Посмотрите список записей в меню GRUB:

    grep -E '^menuentry|^submenu' /boot/grub/grub.cfg | cat -n
    

    Пример вывода:

     1  menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-uuid' {
     2  submenu 'Advanced options for Ubuntu' {
     3      menuentry 'Ubuntu, with Linux 6.8.0-31-generic' ...
     4      menuentry 'Ubuntu, with Linux 6.8.0-31-generic (recovery mode)' ...
     5      menuentry 'Ubuntu, with Linux 5.15.0-105-generic' ...
    
  2. Определите точное имя пункта меню для нового ядра (строка 3 в примере). Оно будет выглядеть как:
    Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-31-generic.

  3. Откройте конфигурацию GRUB:

    nano /etc/default/grub
    
  4. Измените параметр GRUB_DEFAULT. Используйте вложенную структуру с >:

    GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.8.0-31-generic"
    # Если хотите загружаться последним успешным ядром автоматически:
    # GRUB_DEFAULT=saved
    # GRUB_SAVEDEFAULT=true
    
  5. (Опционально) Уменьшите таймаут для быстрой загрузки:

    GRUB_TIMEOUT=3
    GRUB_TIMEOUT_STYLE=menu
    
  6. Сохраните файл (Ctrl+O, Enter, Ctrl+X) и примените изменения:

    update-grub
    

    Вывод должен показать Found linux image: /boot/vmlinuz-6.8.0-31-generic.

5. Проверка совместимости модулей (Критично для выделенных серверов)

На выделенных серверах proxify.cloud часто используются специфические драйверы (RAID-контроллеры, сетевые карты Intel/Ice, NVMe). Новое ядро может не содержать встроенных модулей (dkms пакеты не пересобрались).

  1. Проверьте статус DKMS модулей для нового ядра:

    dkms status -k 6.8.0-31-generic
    

    Ожидаемый вывод: added или built / installed. Если missing — модуль не собран.

  2. Принудительно пересоберите все DKMS модули для нового ядра:

    dkms autoinstall -k 6.8.0-31-generic
    
  3. Проверьте наличие критичных модулей в initramfs:

    lsinitramfs /boot/initrd.img-6.8.0-31-generic | grep -E 'nvme|raid|megaraid|i40e|ice|mlx5'
    

    Если вывод пуст для вашего контроллера — обновите initramfs:

    update-initramfs -c -k 6.8.0-31-generic
    

6. Перезагрузка и верификация

  1. Инициируйте перезагрузку через панель proxify.cloud (кнопка Reboot в разделе Power Management) или командой:

    reboot
    
  2. После загрузки (подождите 2-3 минуты, так как на выделенке POST и RAID инициализация занимают время) подключитесь по SSH.

  3. Проверьте активное ядро:

    uname -r
    

    Должно вывести: 6.8.0-31-generic (или вашу целевую версию).

  4. Проверьте загрузку модулей оборудования:

    dmesg -T | grep -i -e nvme -e raid -e eth -e enp
    

    Убедитесь, что сетевые интерфейсы поднялись (ip a) и диски видны (lsblk).

7. Очистка старых ядер (Опционально, для экономии места в /boot)

Храните минимум 1-2 старых рабочих ядра для отката.

  1. Посмотрите установленные ядра, кроме текущего:

    dpkg --list 'linux-image-[0-9]*' | grep ^ii | grep -v $(uname -r | cut -d'-' -f1,2) | awk '{print $2}'
    
  2. Удалите ненужные (пример для 5.15.0-105):

    apt purge -y linux-image-5.15.0-105-generic linux-headers-5.15.0-105-generic linux-modules-5.15.0-105-generic linux-modules-extra-5.15.0-105-generic
    
  3. Обновите GRUB:

    update-grub
    

8. Настройка Minecraft-сервера под новое ядро (Java Tuning)

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

  1. Откройте скрипт запуска вашего сервера (например, start.sh или systemd unit):

    nano /home/minecraft/start.sh
    
  2. Для ядер 6.x (поддержка ZGC/Generational ZGC, улучшенный madvise) рекомендуемые флаги для Paper/Purpur/Folia:

    # Пример для 16GB RAM
    java -Xms16G -Xmx16G \
    -XX:+UseZGC -XX:+ZGenerational \
    -XX:+UnlockExperimentalVMOptions \
    -XX:+UnlockDiagnosticVMOptions \
    -XX:-ZProactive \
    -XX:SoftMaxHeapSize=14G \
    -Dusing.aikars.flags=https://mcflags.emc.gs \
    -Daikars.new.flags=true \
    -jar paper.jar --nogui
    

    Если используете GraalVM (рекомендуется для 6.x ядер), замените java на путь к бинарнику GraalVM.

  3. Перезапустите игровой сервер:

    systemctl restart minecraft
    # или
    screen -S mc -X stuff "restart\n"
    

Возможные проблемы и решения

1. Сервер не загружа