Вопрос или проблема
Вот данные моего сервера
cat /etc/*-release
CentOS Linux release 7.3.1611 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux release 7.3.1611 (Core)
CentOS Linux release 7.3.1611 (Core)
Я хотел обновить ядро до последней версии, чтобы запустить docker
Я обновил систему с помощью yum update
, и она показала, что обновляет ядро до какой-то версии 4.*
.
Потом я выполнил reboot
И потом я увидел
[root@vps ~]# uname -r
2.6.32-042stab116.2
Все еще работает старая версия.
Я попробовал решение из https://serverfault.com/a/623755/213444
Но на моем сервере нет таких файлов по указанным путям.
Что идет не так?
/Редактировать:
Только что прочитал комментарий Томаса о версии ядра 2.6.32-042stab116.2.
Дело в том, что ваш VPS-провайдер использует контейнеры Virtuozzo / OpenVZ.
Существуют варианты запуска docker в таких средах:
https://openvz.org/Docker_inside_CT
Тем не менее, иногда клиенты не могут попросить провайдера изменить эти настройки. Мне тоже пришлось перейти на другой сервер с полной виртуализацией, чтобы запустить docker.
В противном случае следующие советы могут быть полезны и для других:
Может быть /boot находится на другом разделе, который не был смонтирован во время обновления ядра? Или на /boot не было достаточно свободного места, и скрипт установки прервал свою работу до успешного создания initramfs и применения обновлений к grub2.cfg.
Пожалуйста, проверьте, что /boot смонтирован и что vmlinuz и initramfs для нового ядра присутствуют. Затем вручную выполните:
grub2-mkconfig -o /boot/grub2/grub.cfg
Это обновит доступные загрузочные строчки в конфигурации grub2, представленной во время загрузки системы.
Другой вариант:
Чтобы активировать новое ядро, необходимо перезагрузить систему. Если вы использовали reboot -f
, возможно, файлы еще не были правильно записаны на диск.
Ответ или решение
Проблема: Обновление ядра не применяется после перезагрузки
Введение
Ваша ситуация с сервером под управлением CentOS 7.3.1611, где обновление ядра не приводит к ожидаемым результатам, требует тщательного анализа. На основании предоставленной информации и конфигураций, мы можем выделить несколько ключевых аспектов, которые помогут решить вашу проблему.
Описание проблемы
Вы предприняли шаги для обновления ядра до версии 4.*, и после перезагрузки ожидали увидеть новое ядро. Однако команда uname -r
по-прежнему показывает старую версию 2.6.32-042stab116.2, что вызывает замешательство. Давайте рассмотрим возможные причины данной ситуации.
1. Окружение виртуализации
Основная причина, почему вы видите старую версию ядра, заключается в том, что ваш сервер, скорее всего, работает в среде контейнерной виртуализации, такой как Virtuozzo или OpenVZ. Эти технологии используют общее ядро для всех виртуальных машин, что ограничивает возможность индивидуального обновления ядра внутри контейнера.
Решение:
Если ваша хостинг-компания не может предоставить возможность полного виртуализированного окружения, вы можете рассмотреть возможность перехода на другой тип VPS или выделенный сервер, который поддерживает независимое управление ядром.
2. Проверка обновления
Если вы считаете, что ядро было обновлено, но не активировано, стоит проверить следующие моменты:
-
Проверка загрузочных файлов: Убедитесь, что соответствующие файлы изображения ядра (обычно
vmlinuz
иinitramfs
) находятся в каталоге/boot
. При необходимости выполните команду:ls /boot
-
Проверка места на диске: Возможно, на разделе
/boot
недостаточно места. Выполните:df -h /boot
-
Обновление конфигурации GRUB: Если у вас есть новые файлы ядра, убедитесь, что конфигурация загрузчика GRUB обновлена:
grub2-mkconfig -o /boot/grub2/grub.cfg
3. Проверка загрузочного процесса
Если ваш сервер использует другой механизм загрузки из-за окружения виртуализации, попробуйте:
-
Перезагрузить без форсирования: Если вы использовали команду
reboot -f
, это может привести к неполному завершению работы системы. Полная перезагрузка должна быть выполнена командой:reboot
Заключение
Ваше окружение виртуализации ограничивает возможности обновления ядра. Важно понять, что в данном случае обновление ядра на уровне контейнера просто невозможно, и вам потребуется перейти на новый сервер или VPS с полным доступом к ядру.
Если ваше окружение действительно поддерживает установку Docker, но ограничивается текущей конфигурацией, можно рассмотреть альтернативные варианты, такие как обертки для Docker в контейнерах (docker-in-docker), которые могут работать в минимальном окружении.
Если ни одно из предложенных решений не помогло, рекомендуется обратиться к вашему хостинг-провайдеру, чтобы получить конкретные инструкции по настройке виртуального сервера.