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

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

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

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

  • Учитывая git commit hash, как узнать, какая версия ядра содержит его?
  • Загрузка с использованием initramfs вместо uramdisk
  • Как заставить оболочку отображаться в моем собственном дистрибутиве (linux)?
  • Конфигурация XFRM_SUB_POLICY в kerne
  • перенос конфигурации ядра в другую архитектуру
  • Как подтвердить настройку CONFIG с помощью make menuconfig?
  • Можно ли запускать любой дистрибутив из ОЗУ из .iso, сохраненного в файловой системе NTFS?
  • dracut загрузочный каталог md5sum
  • 3 Solutions collect form web for “Что мешает дистрибутивам использовать последнее ядро ​​Linux?”

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

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

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

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

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

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

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

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

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

    Linux и Unix - лучшая ОС в мире.