Что мешает дистрибутивам использовать новейшее ядро ​​Linux? [закрыто]

13

Большинство дистрибутивов Linux поставляются с определенной версией ядра и обновляют ее только в точечных выпусках ( x.y.zдо x.y.(z+1)) и для обновлений безопасности.

С другой стороны, я знаю, что в Linux действует очень строгая политика: не менять ABI ядра и никогда не нарушать пространство пользователя. Фактически, у Линуса было много публичных истерик, направленных на разработчиков, которые хотели (намеренно или случайно) изменить ядро ​​несовместимыми способами.

Я не понимаю, почему в дистрибутивах используются «стабильные» ядра вместо того, чтобы всегда обновляться до последнего ядра. Это не критика, мне просто любопытно, почему.

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

Ответы:

8

Интерфейсы системных вызовов ядра Linux очень стабильны. Но у ядра есть другие интерфейсы, которые не всегда совместимы.

  • /procв основном стабильный, но в прошлом произошли некоторые изменения (например, некоторые интерфейсы перенесены на /sysнекоторое время после /sysсоздания).
  • Ряд связанных с устройством интерфейсов был удален в прошлом.
  • /sysсодержит некоторые стабильные интерфейсы (перечислены в Documentation/ABI/stable), а некоторые нет. Вы не должны использовать те, которые нет, но иногда это делают люди, и простое обновление безопасности и стабильности не должно сломать их.
  • В прошлом были несовместимости с modutils (для новых ядер требовалась более новая версия modutils), хотя я думаю, что это было довольно давно.
  • Там также были несовместимости в отношении процесса загрузки на некоторых необычных конфигурациях. Даже увеличение размера ядра может вызвать проблемы в некоторых встроенных системах.
  • Хотя внешние интерфейсы ядра довольно стабильны, внутренние интерфейсы - нет. Правило для внутренних интерфейсов состоит в том, что любой может нарушить их, если они исправляют внутреннее использование, но исправление сторонних модулей является обязанностью автора указанных модулей. В целом довольно много установок запускают сторонние модули: дополнительные драйверы для оборудования, которое не поддерживается ядром (если оборудование поддерживается новым ядром, это нормально, но что, если это не так), проприетарные драйверы ( в то время как мир был бы лучше, если бы все драйверы были с открытым исходным кодом, это не так, например, если вы хотите хорошую производительность 3D GPU, вы в значительной степени застряли с проприетарными драйверами) и т. д.
  • Некоторым людям нужно перекомпилировать свое ядро ​​или сторонние модули. Более свежие ядра часто не могут быть скомпилированы с более старыми компиляторами.

В общем, основная причина не переходить на более новую версию ядра - сторонние модули.

Тем не менее, некоторые дистрибутивы предлагают последние версии ядер в качестве опции. Например, Debian делает ядра из тестирования доступными для пользователей стабильного выпуска через backports. Аналогичным образом, в Ubuntu LTS доступны ядра из более свежих выпусков Ubuntu, но они не используются по умолчанию. Это в основном полезно для новых установок на оборудовании, которое еще не поддерживалось на момент завершения распространения.

Жиль "ТАК - перестань быть злым"
источник
9

Я не работаю на дистрибутив, но могу придумать как минимум две причины:

  • Некоторые дистрибутивы применяют свои собственные патчи к Ядру, которые еще не объединены с основной линией. Это означает, что для каждого обновления ядра они должны убедиться, что их патчи ничего не сломали и по-прежнему функционируют должным образом.
  • Даже последний стабильный выпуск ядра может содержать ошибку, дистрибутивы, которые серьезно относятся к надежности, захотят пройти через некоторые процедуры / процессы тестирования, прежде чем доставлять ядро ​​своим клиентам.
переигровка
источник
2
Патчи, специфичные для дистрибутива, не обязательно предназначены для апстрима. А последнее вышестоящее ядро ​​в среднем будет содержать больше ошибок, чем проверенное ядром дистрибутива дистрибутива. Многое из того, что делает ядро, распространяемое дистрибутивом, - это пытаться вытряхнуть / исправить как можно больше ошибок, не изменяя код больше, чем необходимо.
Фахим Митха
0

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

Текущая политика разработки ядра такова, что версия Линуса идет вперед с блестящими, новыми игрушками и не боится оптовых изменений. Некоторые версии считаются достаточно стабильными (с точки зрения разработки), чтобы сформировать основу для строгого тестирования и стабилизации, давая стабильные серии.

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

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