- Обновление ядра
- update-kernel
- Обновление ядра
- Обновление модулей ядра
- Доустановка модулей ядра
- Установка старого ядра
- Удаление старых версий ядра
- Ссылки
- Нужно ли перезагружать сервер после обновления ядра Linux (РЕШЕНО)
- Так обязательно ли перезагружать компьютер после обновления ядра Linux?
- 1. Избегайте последующие обновления пакетов до перезагрузки
- 2. Модули dkms могут не работать до обновления ядра
- 3. Неожиданная перезагрузка может привести к неожиданным результатам
- Как не перезагружать Linux после обновления ядра
- 1. Kexec
- 2. Ядро Linux 4.0 больше не требует перезагрузки компьютера?
- Итог
- Связанные статьи:
Обновление ядра
APT в дистрибутивах ALT Linux и в Sisyphus автоматом не обновляет ядра вместе с обновлением системы (см. настройки hold в apt.conf), поскольку обновление такого критичного компонента системы может привести к нежелательным последствиям. Вместо этого в систему могут быть поставлены пакеты нескольких ядер и модулей к разным ядрам одновременно. И LiLo, и Grub можно настроить таким образом, что простая перезагрузка (в том числе по reset) будет возвращать старое ядро.
update-kernel
Для обновления ядра предлагается использовать утилиту update-kernel , находящуюся в одноимённом пакете. Установка, если ещё не установлено:
apt-get update apt-get install update-kernel
Обновление ядра
apt-get update update-kernel
или, если хотите обновить/установить другой тип ядра (например un-def):
Примечание: Ключ -t и тип ядра (std-def, un-def и т.п.) надо указывать только если вы решили обновить ядро другого типа, т.к. по умолчанию обновляется текущий тип ядра.
update-kernel обновляет и пакеты с модулями ядра, но исходя из списка установленных для текущего ядра пакетов. Следует понимать, что у ядер разных типов модули могут быть собраны по-разному, и, тогда, update-kernel может не доустановить нужное. Например, если у текущего ядра модуль собран в составе пакета с ядром, а у нового отдельно, то пакет с нужным модулем не будет доустановлен автоматически.
В некоторых дистрибутивах apt по умолчанию не содержит подключенных репозитариев. Для проверки и/или настройки можно воспользоваться утилитой apt-repo или просто проверить и отредактировать конфиги в /etc/apt/.
Обновление модулей ядра
update-kernel обновляет и модули ядра, если в репозитории обновилось что-то из модулей без обновления ядра. Запуск как при обновлении ядра.
Доустановка модулей ядра
Иногда возникает необходимость доустановить модули. Сложностей нет, но есть ряд нюансов.
Частая ошибка пользователей — установка модуля от более нового ядра. Проблема возникает, когда установлено более старое ядро, чем в репозитории, а пользователь устанавливает необходимый модуль ядра, не обновив ядро. В результате в систему устанавливается новое ядро с одним-единственным модулем, установка которого запрошена. Для того, чтобы не было такой проблемы, надо вначале обновить ядро, а потом доустанавливать необходимые модули ядра. Если необходимо установить модули именно для старого ядра, можно воспользоваться архивом репозитория аналогично ситуации с установкой старого ядра.
Более редкая ошибка — это установка модуля ядра другой сборочной ветки (std-def, un-def и т.п.) называемой в жаргоне флейвором (тип, вариант сборки ядра). Для предотвращения этого (если модуль есть только в другой ветке) надо перейти сначала на другую сборочную ветку с помощью команды update-kernel .
После этого уже можно обновлять модуль ядра. Например, мы хотим перейти на ветку un-def и установить модуль fglrx:
update-kernel -t un-def apt-get install kernel-modules-fglrx-un-def
Установка старого ядра
Иногда требуется установить старое ядро. Описание процесса.
Удаление старых версий ядра
После успешной загрузки на обновленном ядре можно удалить старое:
Ссылки
Нужно ли перезагружать сервер после обновления ядра Linux (РЕШЕНО)
В отличии от Windows, в которой для обновления программы данная программа обязательно не должна быть запущена, в Linux без проблем можно обновлять запущенные программы — это не приведёт ни к каким ошибкам. В Linux можно удалять используемые файлы (в том числе исполнимые) и пока они используются, они будут держаться в кэше, а когда их использование прекратится, то они будут по-настоящему удалены. То есть при обновлении запущенной программы, новая версия файла будет использоваться после того, как вы закроете и вновь откроете эту программу.
Обновление ядра Linux не является исключением — можно обновить ядро на работающей системе и продолжить её использовать.
Отсюда возникает вопрос, на самом ли деле перезагрузка системы является обязательной после обновления ядра Linux? Этот вопрос особенно актуален для веб-серверов, которые на период перезагрузки становятся недоступны. Также это имеет значение при использовании кэширования (Varnish или NGINX), поскольку обычно кэш хранится в оперативной памяти и при перезагрузке теряется, в результате возникает необходимость заново наполнять кэш веб страниц.
Так обязательно ли перезагружать компьютер после обновления ядра Linux?
Если коротко — да, обязательно. Чтобы система начала использовать новое ядро, компьютер (сервер) нужно перезагрузить.
После обновления ядра можно продолжать использовать сервер без перезагрузки, но кроме того, что преимущества нового ядра не вступили в силу, нужно помнить ещё о некоторых моментах.
1. Избегайте последующие обновления пакетов до перезагрузки
Поскольку вместе с ядром обновляются пакеты заголовков ядра (linux-headers, kernel-headers), то может возникнуть проблема со сборкой модулей, использующих dkms (Dynamic Kernel Modules System). Возникает ситуация, когда используется старое ядро, для которого файлы заголовков ядра (linux-headers) могли быть уже удалены, поэтому нормально собрать модули dkms система не может.
И даже если заголовки ядра сохранены и удалось собрать модули ядра под устаревшее ядро, то сразу после перезагрузки эти модули будут конфликтовать с новым ядром и не будут работать из-за различия версий текущего ядра и ядра, для которого они собирались.
2. Модули dkms могут не работать до обновления ядра
При обновлении ядра пересобираются все модули ядра, использующие dkms. Примерами пакетов, использующие модули ядра dkms являются драйверы Wi-Fi адаптеров, гостевые дополнения VirtualBox, другие драйверы и модули ядра.
Так вот, новые модули ядра собираются заново при обновлении ядра, но не могут использоваться, пока используется старое ядро. То есть для того, чтобы они заработали, необходима перезагрузка. При этом старые модули ядра в некоторых дистрибутивах сразу удаляются.
3. Неожиданная перезагрузка может привести к неожиданным результатам
Помните, что ваша система не протестирована с новым ядром. Поэтому если сервер будет перезагружен без вашего внимания, то в случае возникновения проблем, вы не сможете быстро на них отреагировать.
Как не перезагружать Linux после обновления ядра
1. Kexec
Kexec — это системный вызов, который позволяет загружать другое ядро из текущего ядра. Это полезно для разработчиков ядра или других людей, которым необходимо очень быстро перезагрузиться, не дожидаясь завершения всего процесса загрузки BIOS. Обратите внимание, что kexec может работать некорректно из-за того, что устройства не полностью повторно инициализируются при использовании этого метода, однако это случается редко.
Коротко говоря, Kexec это перезагрузка компьютера с пропуском аппаратной загрузки (то, что вы видите начиная с запуска БИОСа).
2. Ядро Linux 4.0 больше не требует перезагрузки компьютера?
В списке нововведений Linux 4.0 говориться о том, что начиная с этой версии больше не требуется перезагрузка ядра. Но это либо не так, либо не работает из коробки. Как минимум, это требует дополнительных шагов для реализации.
Итог
Перезагрузка компьютера после обновления ядра Linux необходима. Она может быть отложена, но, на самом деле, лучше отложить обновление ядра, чем перезагрузку после обновления.
Как вариант сократить простой из-за перезагрузок, можно предложить сократить количество обновлений, принимая их только для устранения уязвимостей.