Centos 7 не загружается после yum update

Обновлено: 07.07.2024

Ниже представлен краткий мануал о выполнении обновления ядра CentOS 7.

1.1. Что такое ядро?

Ядро обеспечивает базовую функциональность операционной системы: создает процессы и управляет ими, распределяет память и обеспечивает доступ к файлам и периферийным устройствам. Когда компьютер включается и загружает Linux, первое, что загружается – ядро. Ядро инициализирует аппаратные компоненты системы: последовательные и параллельные порты, звуковые и сетевые карты, контроллеры IDE и SCSI и многое другое.

Возможность просто заменить деталь чем-то другим без проблем — вот что делает Linux великолепным.

Ваш дистрибутив постоянно просит вас обновить ядро? Зачем вам это делать, когда он работает нормально?

1.2. Исправления безопасности.

Практически каждое обновление ядра будет иметь какие-то исправления безопасности, которые закрывают обнаруженные дыры. Это, вероятно, одна из самых важных причин для обновления вашего ядра, так как вам всегда будет безопаснее с исправленным ядром. Если хакеру удастся проникнуть в ядро, может быть нанесен большой ущерб или система просто рухнет. Это неудобства, которых легко избежать с помощью современных актуальных версий ядер Linux.

1.3. Улучшения стабильности.

Обновления ядра содержат не только исправления безопасности, но и другие проблемы, которые могут вызвать сбой системы при регулярном использовании. Некоторые люди утверждают, что постоянное обновление ядра фактически снижает общую стабильность системы, потому что вы будете работать на ядре, которое никогда не использовали, поэтому вы не можете предполагать, что оно будет работать так же, как ядро, на котором вы ранее работали. Хотя это также верно, этот запас довольно невелик, и только люди, которые используют серверы или другие важные системы, действительно должны быть осторожны. Для большинства обычных пользователей потребительского типа обновление вашего ядра намного перевешивает эти проблемы.

1.4. Обновленные драйверы.

Хотя это были обновления, которые вы получаете с небольшими обновлениями ядра (скажем, с 3.10.0 до 3.10.1), давайте посмотрим на некоторые улучшения, которые вы обычно можете увидеть с основными обновлениями (подумайте с 3.12 до 3.13).

Прежде всего, каждое крупное обновление ядра гарантированно включает последние версии драйверов с открытым исходным кодом для всех ваших устройств. Из всех обновляемых драйверов графические драйверы, вероятно, наиболее заметны, так как каждое обновление обычно увеличивает производительность. Хотя всегда можно пойти по собственному пути.

Зная, что драйверы с открытым исходным кодом продолжают становиться все лучше и лучше, это тоже хорошо.

1.5. Новые функции ядра.

Иногда крупные обновления ядра в Linux также приносят некоторые новые функции. Эти функции в основном являются частями ядра, которые программы могут использовать для выполнения каких-либо задач или операций. Кроме того, другие функции также могут быть изменены. Скорее всего, вы не сломаете свою систему, если не будете обновлять ядро ​​именно по этой причине, но рано или поздно вы найдете программы и другие пакеты, для которых требуется определенная версия ядра. Лучше иметь последнюю версию, чтобы вы знали, что не столкнетесь с этой проблемой.

1.6. Увеличение скорости.

И последнее, но не менее важное: многие крупные обновления ядра улучшают общую скорость работы системы.

В то время как некоторые изменения могут быть очень незначительными, другие — нет, и могут иметь большое значение, такие как знаменитый патч на 200 строк, который значительно увеличил общую производительность машины с Linux.

2. Обновление ядра.

Первым делом обновим операционную систему и программное обеспечение:

Посмотрим текущую версию ядра Linux:

Ответ:


Поэтому, перед тем как обновляться, неплохо взять за привычку проверять наличие свободного места:

Ответ:


Если с местом в разделе /boot всё хорошо, то продолжаем обновление.

Если всё с местом в разделе /boot всё плохо, то чистим место до обновления вот этим способом:

Подключаем репозиторий ELRepo Project для CentOS 7.

Далее исполняем несколько команд, для подготовке к обновлению ядра.

Импортируем публичный ключ:

Чтобы вывести список доступных ядер, введите:

Система должна вернуть список доступных модулей.

Ответ:


Обратите внимание на строку в списке, в которой написано kernel-lt , что означает стабильный выпуск с долгосрочной поддержкой, или kernel-ml , который указывает на основной выпуск с более коротким сроком поддержки, но с более частыми обновлениями.

Затем посмотрите на правый столбец и обратите внимание на ряд букв и цифр, который выглядит примерно как 5.4.142-1.e17.elrepo . Это версия ядра.

Интересное наблюдение! Имея на одном и том же сервере одинаковые комплекты репозиториев для yum и dnf видимость содержимого репозиториев отображается по разному.

YUM:


DNF:


Устанавливаем само ядро актуальной стабильной версии с долгосрочной поддержкой с помощью yum или dnf:

или ядро с более коротким сроком поддержки, но с более частыми обновлениями:

После устаноки нужно версии ядра, требуется перезагрузить сервер:

Вам будет представлен GRUB или меню загрузки.

С помощью клавиш со стрелками выберите только что установленное ядро. GNU/Linux 5, затем нажмите Enter. Ваша операционная система должна нормально загрузиться.

Найдите время, чтобы проверить функциональность вашей системы CentOS 7. Все ли у вас программное обеспечение запускается правильно и без ошибок? Все ли ваши сетевые функции работают правильно?

Внимание! Протестируйте новое ядро так, чтобы все ошибки были вовремя обнаружены и исправлены именно на вашем сервере и под ваше оборудование. Или, если нет никаких исправлений, вы можете вернуться к старому ядру.

Убедившись, что новое ядро совместимо и работает правильно, вы захотите отредактировать загрузочную утилиту GRUB так, чтобы по умолчанию она загружала ваше новое ядро.

Редактируем конфигурацию загрузчика:

Вносим изменения по смыслу в строку:

Ответ:


Посмотрим текущую версию ядра Linux:

Ответ:


3. Исправление возможных ошибок.

3.1. Закончившееся место в каталоге /boot.

Ошибка:

Иногда так бывает, что надо почистить старые ядра CentOS 7. Чаще всего это происходит после того, как вы поставили обновления и сервер банально перестал грузится. Причина – закончившееся место в каталоге /boot .

Решение:

3.2. Система работает неисправно.

Ошибка:

Бывает, что после обновления ядра, операционная система престает загружаться или не работают некоторые привычные функции. Например, пропала сетевая карта и никак не хочет находиться в системе.

Решение:

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

После возвращения на предыдущую версию ядра всё работает в штатном старом-добром режиме.

Затем вы можете удалить неисправное ядро ​​и сделать выбор: остаться с текущим ядром или подождать, пока не появится рабочее обновление.

Ядро операционной системы является основным ее элементом — оно выполняет функции распределения ресурсов и предоставления интерфейса для взаимодействия с оборудованием. Из соображений безопасности или обеспечения корректной работы современного оборудования может возникнуть необходимость обновления ядра.

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

Перед обновлением необходимо убедиться, что текущая версия ядра уже не обновлена. Это выполняется командой:

* в данном примере установлено ядро версии 3.10.0.

2. Установка ядра

Перед обновлением ядра, необходимо обновить саму систему:

После стоит перезагрузить систему:

С помощью yum

Самый быстрый и безопасный способ обновить ядро CentOS — воспользоваться автоматической установкой из репозитория. Минусом тут является то, что можно установить только ту версию, которая имеется в наличие в данном репозитории.

Последняя версии ядра для CentOS находится в репозитории ELRepo (не путать с EPEL). Сначала устанавливаем его.

Ссылка на последнюю версию репозитория ELRepo

Импортируем ключ репозитория:

Воспользовавшись ссылкой, устанавливаем сам репозиторий:

* список установленных репозиториев можно посмотреть командой yum repolist.

Теперь можно установить ядро:

yum --enablerepo=elrepo-kernel install kernel-ml

Ручное обновление

Чаще всего, администратор пользуется встроенными в сборку Linux инструментами (как описано выше) — это безопаснее и проще. Однако, если нужной версии ядра нет в репозитории или мы хотим установить тестовую версию, необходима ручная установка.

Ручная установка неадаптированного для определенной сборки Linux ядра — потенциальный риск для системы. Обновление стоит проводить сначала в тестовой среде, а также выполнить резервное копирование всех важных данных.

Ссылка на скачивание ядра Linux

* в данном примере мы скопировали ссылку на нестабильную версию ядра 5.0.

Воспользовавшись ссылкой, скачиваем ядро на компьютер с Linux:

* если система вернет ошибку, нужно установить wget — yum install wget.

Распаковываем скачанный архив:

tar -xvf linux-5.0-rc8.tar.gz -C /usr/src

* в данном примере мы распаковываем архив linux-5.0-rc8.tar.gz в каталог /usr/src.

Переходим в каталог, куда распаковали исходник ядра:

Устанавливаем инструменты для компиляции пакетов:

yum groupinstall "Development Tools"

yum install ncurses-devel openssl-devel bc

Создаем свою конфигурацию для ядра:

Или используем текущую конфигурацию для ядра:

На все вопросы, которые задает система можно отвечать нажатием Enter, чтобы принимать значения по умолчанию.

* процедура может занять много времени.

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

make modules_install install

3. Применение нового ядра

Чтобы система грузилась с использованием нового ядра, необходимо внести изменения в GRUB:

* данной настройкой мы говорим загрузчику использовать первое ядро для загрузки (первым идет последнее по версии ядро).

Применяем настройки для grub:

grub2-mkconfig -o /boot/grub2/grub.cfg

Можно перезагружать компьютер:

После загрузки проверяем текущую версию ядра:

Если система не загружается после обновления ядра

При установке новой версии ядра, старые версии тоже сохраняются и их можно выбрать при загрузке CentOS.

Если управление осуществляется удаленно по SSH, мы должны подключить монитор к компьютеру и включить его. В процессе загрузки выскочит окно со списком систем:

Ссылка на скачивание ядра Linux

Выбираем вариант загрузки с предыдущей версией ядра.

Возможные ошибки

1. Фатальная ошибка: <путь до файла>: Нет такого файла или каталога.

Причина: в системе не установлен один из пакетов, содержащий необходимые библиотеки.

Решение: необходимо воспользоваться поисковиком, чтобы определить, какой именно пакет необходим для продолжения установки и воспользоваться командой yum install <имя пакета> для его установки.

2. [<путь до файла>] Ошибка 127

Например: [include/generated/timeconst.h] Ошибка 127

Причина: как и с предыдущей ошибкой, в системе не установлен один из пакетов, содержащий необходимые библиотеки.

Решение: аналогично предыдущему примеру решения проблемы, необходимо воспользоваться поисковиком, чтобы определить, какой именно пакет необходим для продолжения установки и воспользоваться командой yum install <имя пакета> для его установки.

Некоторые пользователи RHEL 8 и CentOS 8 столкнулись с проблемами после установки вчерашнего обновления загрузчика GRUB2 с устранением критической уязвимости. Проблемы проявляются в невозможности загрузки после установки обновления, в том числе на системах без UEFI Secure Boot.

На некоторых системах (например, HPE ProLiant XL230k Gen1 без UEFI Secure Boot) проблема проявляется в том числе на свеже-установленном в минимальной конфигурации RHEL 8.2. После обновления пакетов и перезагрузки наблюдается зависание и даже не показывается меню GRUB. Похожие проблемы с загрузкой отмечаются для RHEL 7 и CentOS 7, а также для Ubuntu и Debian.

После запуска yum update на CentOS при последующей перезагрузке вас может поджидать сюрприз в виде окирпиченного сервера, который зависает на заставке биоса.

О проблеме на форумах и багтрекерах писали в июля 2020 года. Похоже, что проблема затрагивает все системы с UEFI загрузчиком и актуальна как минимум для версий CentOS 7.8 и 8.2.

Проблема проявляет себя в момент перезагрузки сервера в виде зависшего экрана с заставкой биоса, от чего сначала вообще не понятно, что происходит — ни ошибок, ни консоли grub, только зависшая заставка bios.

Решение

Если после обновления сервер не перезагружался, то чтобы не получить кирпич при последующей перезагрузке достаточно откатить обновление grub2 пакетов и их зависимостей:

Если же сервер перезагрузили и кирпич все-таки получили, то чтобы восстановить загрузчик понадобится Live-CD диск или флешка. Последовательность действий для отката пакетов на не грузящейся системе будет следующей:

  • Загрузиться с Live-CD (7 версию можно взять тут);
  • Настроить сеть;
  • Смонтировать корневой раздел в /mnt/sysimage;
  • Смонтировать раздел /boot в /mnt/sysimage/boot и раздел /boot/efi в /mnt/sysimage/boot/efi;
  • Выполнить последовательность команд:

После этого загрузчик обновится на старую версию и сервер должен загрузиться.

Исключение пакетов из обновления

Чтобы при следующем обновлении загрузчик опять не сломался, надо добавить проблемные пакеты в исключения (строка exclude=grub2* shim* mokutil ) в файл конфигурации yum /etc/yum.conf .

Проблемные версии пакетов для CentOS 7, именно с ними ломается UEFI загрузчик:

Как обновить (поставить обновления) CentOS

Добрый день, операционная система CentOS не идеальна, и с каждым днем пополняется свежими обновлениями закрывающими различные уязвимости. После того как вы поставили CentOS ее нужно обновить и закрыть все баги дырки, что накопились. Делать это нужно по возможности оперативно, но с главным принципом, не навреди, еще не нужно забывать и про обновления ядра операционной системы, так как оно в сборках сильно отстает и если вы хотите использовать максимальное количество функций Centos 7, то лучше его обновить.

Как обновить centos

И так обновление centos 7 начинается с просмотра списока всех пакетов, которые присутствуют у вас в системе, чтобы вы представляли сколько их, и какие у вас уже стоят. Вводим

Как обновить (поставить обновления) CentOS-01

Синими будет подсвечено, что стоит у вас, у пакетов будут статусы:

обновить centos 7

Дальше начнем обновление, вводим

Как обновить (поставить обновления) CentOS-03

Появится список всех доступных обновлений, жмем Y и соглашаемся их установить, обязательно проверьте, чтобы нужные репозитории были открыты и разрешены на вашем шлюзе или прокси сервере.

Как обновить (поставить обновления) CentOS-04

Начнется в начале их скачивание из репозитория, тут все зависит от скорости вашего интернет соединения и от накопившегося багажа.

Как обновить (поставить обновления) CentOS-05

Начинается обновление centos 7.

Как обновить (поставить обновления) CentOS-06

Как обновить (поставить обновления) CentOS-06

Как обновить (поставить обновления) CentOS-07

Посмотреть обновления только для ядра например можно командой

Как обновить (поставить обновления) CentOS-08

Можно при желании обновить только конкретный пакет делается это так

yum install и копируете имя пакета

Как обновить (поставить обновления) CentOS-09

В моем примере я обновляю пакет kernel-abi-whitelists до версии 2.6.32-504.1.3.el6

Как обновить (поставить обновления) CentOS-10

Как видите сам процесс установки апдейтов весьма тривиален и не требует спец знаний от системного администратора. Держите ваш Centos в актуальном состоянии, но есть одно, но с ядром системы, об этом ниже.

Как обновить (поставить обновления) CentOS-11

Обновление ядра centos 7

И так мы произвели в centos обновление системы и всех пакетов, но по умолчанию он подсовывает не самое последнее ядро, в лучшем случае вы получите 3 версию, хотя уже давно существует 4 версия. Давайте я покажу как узнать версию ядра centos, для этого воспользуемся командой:

как узнать версию ядра centos

Затем добавляем репозиторий для операционной системы CentOS 7, с помощью команды:

для Centos 6 будет такая команда

Ключи -Uvh обновляют и показывают статус бар

обновление ядра centos 7

Далее убедитесь, что после выполнения команды yum upgrade, у вас все установлено, так же убедитесь, что установлена последняя версия plugin-fastestmirror

Все теперь можно приступать к обновлению ядра Centos 7, через команду

Как видите, мне сразу предлагается поставить новую, стабильную версию ядра, 4.9.10-1.elrepo, согласитесь, что разница по сравнению с 3 версией существенная.

обновление ядра centos 7-2

Но не спешите радоваться, так как пока по умолчанию Centos 7 будет продолжать использовать старую версию ядра, убедиться в этом вы можете перезагрузив систему. Как видите, есть выбор загрузки, либо 3.10, либо 4.9.

обновление ядра centos 7-3

И видим там параметр set pager=1, означающий, загрузку по данному порядковому номеру, а список загрузчиков начинается с 0.

обновление centos 7-3

обновление centos 7-4

Вводим команду grub2-set-default 0 для смены приоритетов загрузки ядра. 0 это начальный загрузчик Centos 7. Проверить какое ядро загружается по умолчанию, можно командой
grub2-editenv list. Не забудьте потом удалить старые ядра.

обновление centos 7-5

Как видите обновление ядра Centos 7 и всех остальных пакетов, не сложная вещь. Изучайте Linux.

Читайте также: