ほとんどのLinuxディストリビューションは特定のカーネルバージョンに付属しており、ポイントリリース(x.y.z
〜)とセキュリティアップデートでのみx.y.(z+1)
更新されます。
一方、私はLinuxがカーネルABIを変更せずにユーザースペースを侵害しないという非常に厳しいポリシーを持っていることを知っています。実際、Linusは、以前のバージョンと互換性のない方法でカーネルを(意図的にまたは意図的に)変更しようとする開発者に対して公に何度も爆発しました。
ディストリビューションが常に最新のカーネルに更新するのではなく、「安定した」カーネルを使用する理由を理解できません。これは批判ではなく、ただ理由が気になりますね。
答え1
Linuxカーネルシステムコールインターフェイスは非常に安定しています。ただし、カーネルには常に互換性のない他のインターフェイスがあります。
/proc
ほとんどは安定していますが、過去にいくつかの変更が発生しました(たとえば、一部のインターフェイスが/sys
作成後に移動しました)。/sys
- さまざまなデバイス関連インターフェースを提供削除済み過去に。
/sys
いくつかの安定したインターフェースが含まれています(リストはDocumentation/ABI/stable
)一部はそうではありません。そうでないものを使用してはいけませんが、時には人々が使用することもあり、単純なセキュリティと信頼性のアップグレードによってこれらの機能が中断されるべきではありません。- 過去には、modutils(最新バージョンのmodutilsが必要な最新のカーネル)と互換性がない問題がありましたが、私の考えはずっと前でした。
- また、一部の異常な構成では、起動プロセスに非互換性があります。コアサイズを大きくしても、一部の組み込みシステムでは問題が発生する可能性があります。
- カーネル外部インターフェイスはかなり安定しており、内部インターフェイスはそうではありません。内部インターフェイスの規則は、内部使用のために変更されたものであれば誰でもそれを破ることができるということです。ただし、サードパーティのモジュールを変更することは、そのモジュールの作成者の責任です。全体として、かなりの数のインストールではサードパーティのモジュールを実行します。カーネルでサポートされていないハードウェア用の追加ドライバ(新しいカーネルがハードウェアをサポートしても大丈夫ですが、サポートしていない場合はどうなりますか?) 、そうではありません。たとえば、優れた3D GPUパフォーマンスが必要な場合は、独自のドライバを使用する必要があります。
- 一部の人はカーネルや一部のサードパーティモジュールを再コンパイルする必要があります。最新のカーネルは古いコンパイラでコンパイルできないことが多いです。
全体的に最新のカーネルバージョンに切り替えない主な理由は、サードパーティのモジュールです。
ただし、一部のディストリビューションでは、最新のカーネルをオプションとして提供しています。たとえば、Debianはバックポートを介して信頼性の高いリリースユーザーがテストカーネルを使用できるようにします。同様に、Ubuntu LTSでは最新のUbuntuバージョンのカーネルを使用できますが、デフォルトでは使用されません。これは、リリースの完了時にサポートされていないハードウェアに新規インストールする場合に便利です。
答え2
私はディストリビューションで働いていませんが、少なくとも2つの理由を考えることができます。
- 一部のディストリビューションは、まだメインラインにマージされていないカーネルにカスタムパッチを適用します。つまり、カーネルを更新するたびにパッチが壊れず、正しく機能していることを確認する必要があります。
- 最新の信頼性の高いカーネルリリースにもバグが含まれる可能性があり、信頼性を重視するディストリビューションでは、カーネルを顧客に配送する前にいくつかのテスト手順/プロセスを実行したいと思うでしょう。
答え3
より保守的な分布が続き、積極的に参加します。安定安定性のためのカーネルバージョンです。もっと冒険的な人であれば、カーネルの最新および最高のバニラバージョンと開発者のヒント(およびいくつかの自作パッチ)からバックポートされたパッチを使用してください。
現在のカーネル開発方針は、Linusバージョンが輝く新しいおもちゃを引き続きリリースし、大規模な変更を恐れていないことです。一部のバージョンは、厳格なテストと安定化のための基盤を形成するのに十分安定していると考えられ、開発の観点から安定したシリーズを提供します。
これらはすべて使用されたツールのおかげで可能です。誰でも自分のツールを飾ることができます。子ツリー、興味深いアップストリームブランチ、ツリーをローカルに同期し、他人のコミットを盗み、ローカルの変更を自由に共有します。