ディストリビューションが最新のLinuxカーネルを使用できないのはなぜですか?[閉まっている]


13

ほとんどのLinuxディストリビューションには、特定のカーネルバージョンが同梱されており、ポイントリリース(x.y.zからx.y.(z+1))およびセキュリティアップデートのためにのみアップデートされます。

一方、Linuxには、カーネルABIを変更せず、ユーザースペースを壊さないという非常に厳しいポリシーがあることは知っています。実際、Linusは(意図的または偶然に)カーネルを変更しようとする開発者向けに、多くの公のかんしゃくを使用しています。これは、下位互換性のない方法です。

ディストリビューションが常に最新のカーネルに更新するのではなく、「安定した」カーネルを使用する理由がわかりません。これは批判ではありません、私はその理由に興味があります。


1
最新のカーネルではテストが不足しているためです。システムの安定性に影響を与える可能性のあるバグが含まれている可能性があり、安定性はあらゆるディストリビューションメンテナの主な焦点です。

回答:


8

Linuxカーネルのシステムコールインターフェイスは非常に安定しています。しかし、カーネルには他のインターフェースがあり、常に互換性があるとは限りません。

  • /procほとんどは安定していますが、過去にいくつかの変更が加えられています(たとえば、一部のインターフェイスは、作成/sys後しばらくしてから移動します/sys)。
  • 多くのデバイス関連のインターフェースは過去に削除ました。
  • /sysいくつかの安定したインターフェース(に記載Documentation/ABI/stable)とそうでないインターフェースが含まれています。あなたはそうでないものを使用することになっているわけではありませんが、時には人々は使用します、そして単純なセキュリティと安定性のアップグレードはそれらのために物事を壊すべきではありません。
  • 以前はmodutilsとの非互換性がありましたが(新しいカーネルには新しいバージョンのmodutilsが必要です)、私はそれがかなり前だったと思います。
  • また、いくつかの異常な構成での起動プロセスに関して非互換性がありました。カーネルのサイズを大きくしても、一部の組み込みシステムで問題が発生する可能性があります。
  • カーネルの外部インターフェースはかなり安定していますが、内部インターフェースは安定していません。内部インターフェースのルールは、内部使用を修正する限り、誰でもそれらを壊すことができるということですが、サードパーティのモジュールを修正することは、そのモジュールの作成者の責任です。全体として、多くのインストールでサードパーティモジュールが実行されます。カーネルでサポートされていないハードウェア用の追加ドライバー(ハードウェアが新しいカーネルでサポートされている場合は問題ありませんが、サポートされていない場合)、専用ドライバー(すべてのドライバーがオープンソースである場合、世界はより良い場所になりますが、これは当てはまりません。たとえば、優れた3D GPUパフォーマンスが必要な場合、プロプライエタリドライバーにかなりこだわっています)など。
  • カーネルやサードパーティのモジュールを再コンパイルする必要がある人もいます。最近のカーネルは、古いコンパイラーでコンパイルできないことがよくあります。

全体として、より新しいカーネルバージョンに切り替えない主な理由は、サードパーティのモジュールです。

それでも、一部のディストリビューションはオプションとして最近のカーネルを提供しています。たとえば、Debianはテストからのカーネルを、安定版リリースのユーザーがバックポートを介して利用できるようにします。同様に、Ubuntu LTSでは、最新のUbuntuリリースのカーネルを利用できますが、デフォルトでは使用されません。これは、ディストリビューションが完成した時点ではまだサポートされていなかったハードウェアへの新規インストールに主に役立ちます。


9

私はディストリビューションで働いていませんが、少なくとも2つの理由が考えられます。

  • 一部のディストリビューションは、まだメインラインにマージされていないカーネルにカスタムパッチを適用しています。つまり、カーネルを更新するたびに、パッチが何も壊さず、適切に機能することを確認する必要があります。
  • 最新の安定したカーネルリリースでもバグが含まれている可能性があります。信頼性を重視するディストリビューションでは、カーネルを顧客に提供する前に、いくつかのテスト手順/プロセスを実行する必要があります。

2
とにかく、ディストリビューション固有のパッチは必ずしもアップストリームを対象としているわけではありません。また、最新のアップストリームカーネルには、ディストリビューションでテストされた「ストック」カーネルよりも平均して多くのバグが含まれます。ディストリビューションによって配布されたカーネルが行うことの多くは、必要以上にコードを変更しないようにしながら、できるだけ多くのバグを排除または修正しようとすることです。
Faheem Mitha、2016年

0

安定性を保つために、より保守的なディストリビューションが安定したカーネルのバージョンに従います(そして積極的に参加します)。より冒険的なものは、カーネルの1バージョン程度を使用して、最新かつ最大のバニラに加えて、開発のヒント(および一部の自家製のもの)からバックポートされたパッチの散布を使用しています。

現在のカーネル開発方針では、Linusのバージョンは、光沢のある新しいおもちゃで先を進んでおり、大規模な変更を恐れていません。一部のバージョンは、厳密なテストと安定化の基盤を形成するのに十分な(開発面で)安定していると見なされ、安定したシリーズを提供します。

使用中のツールにより、これはすべて可能です。誰もが自分のgitツリーをグルーミングし、興味深い上流のブランチとツリーをローカルで同期した状態に保ち、コミットを他者から盗み、ローカルの変更を自由に共有できます。


安定したカーネルシリーズは、特定のバージョンの安定性に基づいて選択されるのではなく、任意です。今年から、stableシリーズは毎年リリースされる最初のバージョンに基づいています...すべてのカーネルリリースは安定しており、下位互換性を壊すことはありません。
Stephen Kitt 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.