Обновление ядра: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
 
(не показаны 43 промежуточные версии 7 участников)
Строка 1: Строка 1:
APT в дистрибутивах ALT Linux и в Sisyphus автоматом не обновляет ядра вместе с обновлением системы, поскольку обновление такого критичного компонента системы может привести к нежелательным последствиям. Вместо этого в систему могут быть поставлены пакеты нескольких ядер и модулей к разным ядрам одновременно.
[[en:Kernel update]]
APT в дистрибутивах ALT Linux и в Sisyphus автоматом не обновляет ядра вместе с обновлением системы (см. настройки [[hold]] в apt.conf), поскольку обновление такого критичного компонента системы может привести к нежелательным последствиям. Вместо этого в систему могут быть поставлены пакеты нескольких ядер и модулей к разным ядрам одновременно. И LiLo, и [[Grub#Как_однократно_выполнить_загрузку_произвольного_пункта_меню?|Grub]] можно настроить таким образом, что простая перезагрузка (в том числе по reset) будет возвращать старое ядро.


Для ручного обновления ядра используется утилита {{prg|update-kernel}}, находящаяся в одноимённом пакете. Пример использования:
{|class="wikitable" style="float:center; margin-left:2em"
!colspan="2"|ЗА и ПРОТИВ обновления ядра
|-
!ЗА || ПРОТИВ
|-
|
*Поддержка нового оборудования
*Реализация новых функций
*Защита от уязвимостей
*Оптимизация производительности
*Устранение ошибок
|
*возможно "отваливание" оборудования
*возможны регрессии в поддержке оборудования
*возможно [https://vk.com/wall-210979969_1146 зависание при перезагрузке и выключении]
*невозможность загрузить систему
*[https://www.opennet.ru/opennews/art.shtml?num=57883 регрессии, выводящие из строя оборудование]
|}
 
=update-kernel=
{{Attention| Запуск утилиты {{prg|update-kernel}} должен производиться с [[Su|правами root]]}}
 
Для обновления ядра предлагается использовать утилиту {{prg|update-kernel}}, находящуюся в одноимённом пакете. Установка, если ещё не установлено:
 
Получаем права root
<source lang="bash">
su -
</source>


<source lang="bash">
<source lang="bash">
apt-get update
apt-get update
apt-get install update-kernel
apt-get install update-kernel
update-kernel -t std-def
</source>
</source>


Обычно перед обновлением ядра лучше обновить систему до соответствующего бренча
=Обновление ядра=
Обновляем ядро:
 
<source lang="bash">
apt-get update
update-kernel
</source>
или, если хотите обновить/установить [[Kernel/Flavours|другой тип ядра]] (например un-def):
<source lang="bash">
<source lang="bash">
apt-get dist-upgrade
update-kernel -t un-def
</source>
</source>


В некоторых дистрибутивах apt, по-умолчанию, не содержит подключенных репозитарием. Для проверки или уточнения можно воспользоваться утилитой apt-repo, или просто проверить конфиги в /etc/apt.
{{note| Ключ -t и тип ядра (std-def, un-def и т.п.) надо указывать только если вы решили обновить ядро другого типа, т.к. по умолчанию обновляется текущий тип ядра.}}
 
{{prg|update-kernel}} обновляет и пакеты с модулями ядра, но исходя из списка установленных для текущего ядра пакетов. Следует понимать, что у ядер разных типов модули могут быть собраны по-разному, и, тогда, {{prg|update-kernel}} может не доустановить нужное. Например, если у текущего ядра модуль собран в составе пакета с ядром, а у нового отдельно, то пакет с нужным модулем не будет доустановлен автоматически.
 
В некоторых дистрибутивах apt по умолчанию не содержит подключенных репозитариев. Для проверки и/или настройки можно воспользоваться утилитой [[Apt-repo|apt-repo]] или просто проверить и отредактировать конфиги в [[Управление_пакетами|/etc/apt/]].
 
=Обновление модулей ядра=
=Обновление модулей ядра=
{{Важно|Частая ошибка пользователей, это установка модуля от более нового ядра. У вас стоит более старое ядро, чем в репозитории и при этом вы устанавливаете необходимый вам модуль ядра, не обновив ядро. В результате в систему устанавливается новое ядро с одним единственным модулем, который вы установили. Для того, чтобы не было такой проблемы, надо вначале обновить ядро, а потом устанавливать необходимые модули ядра.}}


{{Важно|Более редкая ошибка это установка модуля ядра другой сборочной ветки (std-def, un-def и т.п.) называемой в жаргоне флейвором (тип, вариант сборки ядра). Для предотвращения этого (если модуль есть только в другой ветке) надо перейти сначала на другую сборочную ветку с помощью команды {{prg|update-kernel}}}}
{{prg|update-kernel}} обновляет и модули ядра, если в репозитории обновилось что-то из модулей без обновления ядра. Запуск как при обновлении ядра.
 
=Доустановка модулей ядра=
 
Иногда возникает необходимость доустановить модули. Сложностей нет, но есть ряд нюансов.
 
{{Важно|Частая ошибка пользователей -- установка модуля от более нового ядра. Проблема возникает, когда установлено более старое ядро, чем в репозитории, а пользователь устанавливает необходимый модуль ядра, не обновив ядро. В результате в систему устанавливается новое ядро с одним-единственным модулем, установка которого запрошена. Для того, чтобы не было такой проблемы, надо вначале обновить ядро, а потом доустанавливать необходимые модули ядра}}.
Если вы "попались" на эту ошибку,загрузитесь со старым ядром и дайте команду  {{cmd|update-kernel}} с правами root.
Если необходимо установить модули именно для старого ядра, можно воспользоваться [[archive|архивом репозитория]] аналогично ситуации с установкой старого ядра.}}
{{Важно|Более редкая ошибка -- это установка модуля ядра другой сборочной ветки (std-def, un-def и т.п.) называемой в жаргоне флейвором (тип, вариант сборки ядра). Для предотвращения этого (если модуль есть только в другой ветке) надо перейти сначала на другую сборочную ветку с помощью команды {{prg|update-kernel}}.}}
<source lang="bash">
<source lang="bash">
  update-kernel -t <новый Flavour>
  update-kernel -t <новый Flavour>
Строка 25: Строка 72:
<новый flavour> = std-def, un-def и т.п. См. [[kernel/Flavours]]  
<новый flavour> = std-def, un-def и т.п. См. [[kernel/Flavours]]  


После этого уже можно обновлять модуль ядра, например, мы хотим перейти на ветку un-def и установить модуль fglrx:
После этого уже можно обновлять модуль ядра. Например, мы хотим перейти на ветку un-def и установить модуль rtl8821ce:


<source lang="bash">
<source lang="bash">
update-kernel -t un-def
update-kernel -t un-def
apt-get install kernel-modules-fglrx-un-def
apt-get install kernel-modules-rtl8821ce-un-def
</source>
 
Альтернативный способ установки модуля ядра - установка его с помощью {{cmd|epm}} , {{cmd|epm}} ставит модуль предварительно устанавливая новую версию ядра.
<source lang="bash">
epm install kernel-modules-rtl8821ce-un-def
</source>
 
=Установка старого ядра=
Иногда требуется установить старое ядро. [[FAQ#RET_OLD_KERNEL | Описание процесса]].
 
=Удаление старых версий ядра=
После успешной загрузки на обновленном ядре можно удалить старое:
<source lang="bash">
remove-old-kernels
</source>
</source>
=Ссылки=
* [[Alterator-update-kernel|Обновление ядра с помощью модуля Alterator]]
* [https://bugzilla.altlinux.org/show_bug.cgi?id=35390 #35390]: Обновление ядра на Таволге требует ручной доработки
* [[Сага о драйверах]]
{{Category navigation|title=Kernel|category=Kernel}}
{{Category navigation|title=Kernel|category=Kernel}}
[[категория:admin]]
[[Категория:Upgrade]]
{{Category navigation|title=Обновление|category=Upgrade|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=О ядре для пользователя|category=О ядре для пользователя|sortkey={{SUBPAGENAME}}}}
[[Категория:Использование Epm]]

Текущая версия от 00:03, 14 сентября 2024

APT в дистрибутивах ALT Linux и в Sisyphus автоматом не обновляет ядра вместе с обновлением системы (см. настройки hold в apt.conf), поскольку обновление такого критичного компонента системы может привести к нежелательным последствиям. Вместо этого в систему могут быть поставлены пакеты нескольких ядер и модулей к разным ядрам одновременно. И LiLo, и Grub можно настроить таким образом, что простая перезагрузка (в том числе по reset) будет возвращать старое ядро.

ЗА и ПРОТИВ обновления ядра
ЗА ПРОТИВ
  • Поддержка нового оборудования
  • Реализация новых функций
  • Защита от уязвимостей
  • Оптимизация производительности
  • Устранение ошибок

update-kernel

Внимание! Запуск утилиты update-kernel должен производиться с правами root


Для обновления ядра предлагается использовать утилиту update-kernel, находящуюся в одноимённом пакете. Установка, если ещё не установлено:

Получаем права root

su -
apt-get update
apt-get install update-kernel

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

Обновляем ядро:

apt-get update
update-kernel

или, если хотите обновить/установить другой тип ядра (например un-def):

update-kernel -t un-def
Примечание: Ключ -t и тип ядра (std-def, un-def и т.п.) надо указывать только если вы решили обновить ядро другого типа, т.к. по умолчанию обновляется текущий тип ядра.


update-kernel обновляет и пакеты с модулями ядра, но исходя из списка установленных для текущего ядра пакетов. Следует понимать, что у ядер разных типов модули могут быть собраны по-разному, и, тогда, update-kernel может не доустановить нужное. Например, если у текущего ядра модуль собран в составе пакета с ядром, а у нового отдельно, то пакет с нужным модулем не будет доустановлен автоматически.

В некоторых дистрибутивах apt по умолчанию не содержит подключенных репозитариев. Для проверки и/или настройки можно воспользоваться утилитой apt-repo или просто проверить и отредактировать конфиги в /etc/apt/.

Обновление модулей ядра

update-kernel обновляет и модули ядра, если в репозитории обновилось что-то из модулей без обновления ядра. Запуск как при обновлении ядра.

Доустановка модулей ядра

Иногда возникает необходимость доустановить модули. Сложностей нет, но есть ряд нюансов.

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

.

Если вы "попались" на эту ошибку,загрузитесь со старым ядром и дайте команду  update-kernel с правами root.
Если необходимо установить модули именно для старого ядра, можно воспользоваться архивом репозитория аналогично ситуации с установкой старого ядра.}}
Более редкая ошибка -- это установка модуля ядра другой сборочной ветки (std-def, un-def и т.п.) называемой в жаргоне флейвором (тип, вариант сборки ядра). Для предотвращения этого (если модуль есть только в другой ветке) надо перейти сначала на другую сборочную ветку с помощью команды update-kernel.
 update-kernel -t <новый Flavour>

где <новый flavour> = std-def, un-def и т.п. См. kernel/Flavours

После этого уже можно обновлять модуль ядра. Например, мы хотим перейти на ветку un-def и установить модуль rtl8821ce:

update-kernel -t un-def
apt-get install kernel-modules-rtl8821ce-un-def

Альтернативный способ установки модуля ядра - установка его с помощью epm , epm ставит модуль предварительно устанавливая новую версию ядра.

epm install kernel-modules-rtl8821ce-un-def

Установка старого ядра

Иногда требуется установить старое ядро. Описание процесса.

Удаление старых версий ядра

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

remove-old-kernels

Ссылки