Ядро — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
Строка 30: Строка 30:
  
 
Существует несколько способов поставки сторонних модулей ядра:
 
Существует несколько способов поставки сторонних модулей ядра:
 +
* сборка модулей ядра во время сборки ядра
 
* использование dkms для сборки модуля ядра из исходников на стороне клиента для каждого релиза ядра
 
* использование dkms для сборки модуля ядра из исходников на стороне клиента для каждого релиза ядра
 +
* использование бинарных модулей ядра
 +
 +
Первые 2 способа не вызывают вопросов и требуют наличия исходников, но некоторые разработчики модулей ядра не хотят поставлять их в виде исходников. У сопровождающих пакета с ядром получился такой выбор:
 +
* либо разработчики этих сторонних модулей ядра будут поставлять модули для конкретных сборок дистрибутивного ядра, поставляя в своем ПО файлы с путем вида /lib/modules/5.4.59-1rosa2019.1-x86_64/kernel/*.ko и тем самым ''вынуждают'' пользователей нашего дистрибутива не обновлять ядро, лишая и нас, и пользователя возможности поставлять исправления работы и уязвимостей,
 +
* либо разработчики этих сторонних модулей кладут свои модули в специальную папку, которая не содержит в пути к себе конкретную версию ядра, а наши ядра пытаются подгрузить модули из нее.

Версия 16:52, 20 августа 2020

Эта статья описывает политику упаковки и сопровождения официальных ядер Linux в дистрибутивах ROSA Fresh, RED, Nickel. Статья находится в разработке.

Предмет описания

Эта статья описывает политику упаковки и сопровождения официальных ядер Linux в дистрибутивах ROSA Fresh, RED, Nickel. В настоящий момент затрагивает ядро 5.4 LTS.

Пакеты с ядром

Исходники пакета с ядром находятся здесь: https://abf.io/import/kernel-5.4

Бинарные пакеты с ядром размещены в официальных репозиториях платформ rosa2016.1, rosa2019.05, rosa2019.1.

Каждое ядро собирается в отдельный пакет, в название которого включается:

  • flavour — разновидность ядра; для сертифицированных дистрибутивов это «nickel», для остальных — «generic»
  • версия ядра, например, 5.4.59
  • аппаратная архитектура, например, x86_64
  • релиз пакета с ядром (номер сборки ядра этой версии) c названием платформы ROSA в постфиксе, например, 1rosa2019.1, где 1 ­— номер сборки, а rosa2019.1 — платформа (репозиторий).[1]

Пример результирующего названия пакета с ядром: kernel-generic-5.4.59-1rosa2019.1-x86_64

Пример пути к модулям ядра: /lib/modules/5.4.59-1rosa2019.1-x86_64

Мета-пакет kernel-generic-5.4-latest — это пакет-пустышка, который зависит от самого нового ядра серии 5.4.х. При установке новой версии ядра старая остается установленной, чтобы можно было при необходимости вернуться к ней, выбрав ее в меню загрузчика ОС Grub.

Политика обновлений ядра

Используются официальные релизы ветки 5.4 с kernel.org. По мере выхода новых минорных версий производится обновление пакета с ядром, для стабильных платформ (rosa2016.1) обновления проходят проверку качества. Задачи как можно быстрее обновлять пакет при выходе новой версии ядра не стоит. Основной упор делается на обеспечение стабильной работы. При выходе исправлений уязвимостей обновления производятся быстрее.

Сторонние проприетарные модули ядра

Существует несколько способов поставки сторонних модулей ядра:

  • сборка модулей ядра во время сборки ядра
  • использование dkms для сборки модуля ядра из исходников на стороне клиента для каждого релиза ядра
  • использование бинарных модулей ядра

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

  • либо разработчики этих сторонних модулей ядра будут поставлять модули для конкретных сборок дистрибутивного ядра, поставляя в своем ПО файлы с путем вида /lib/modules/5.4.59-1rosa2019.1-x86_64/kernel/*.ko и тем самым вынуждают пользователей нашего дистрибутива не обновлять ядро, лишая и нас, и пользователя возможности поставлять исправления работы и уязвимостей,
  • либо разработчики этих сторонних модулей кладут свои модули в специальную папку, которая не содержит в пути к себе конкретную версию ядра, а наши ядра пытаются подгрузить модули из нее.
  • rosa2016.1 — ROSA Fresh R9-R11.1, ROSA Enterprise Desktop X4; rosa2019.1 находится в разработке; rosa2019.05 — платформа для сертифицированного органами госвласти дистрибутива.