Ubuntu で採用する Linux kernel のバージョン
Ubuntu で採用する Linux kernel の採用方針を紹介します。新しい方針
それでは CKT から出された新しい方針を見てみましょう。常に最新版 Linux kernel を採用
常に最新版 Linux kernel を採用します。Ubuntu の Feature Freeze に合わせ、採用する Ubuntu の Linux kernel を決定します。
Feature Freeze にそれが例えアップストリームの Linux kernel がまだ RC版(リリース候補版)の段階だったとしても、最新版 Linux kernel を採用します。
つまり Ubuntu のリリース日ではなく、Feature Freeze を基準に判断することになります。
ユーザーやベンダーにとって嬉しい選択
これによりハードウェアや新機能のサポートが従来より積極的に拡大され、特に最新ハードを利用しているユーザーやベンダーはこの恩恵に与れるでしょう。安定性や品質の確保はどうするの?
ただ単純に常に最新版 Linux kernel を採用する方針では、安定性や品質の確保に懸念が生じます。Ubuntu の Linux kernel 周りの状況を整理しよう
では安定性や品質の確保はどうするのでしょうか?とその前に、まず Ubuntu の Linux kernel 周りの状況を整理しましょう。
Variant kernel
Variant kernel とは Ubuntu で提供している Generic kernel 以外のカーネルのことです。様々なカーネルが展開されている
Ubuntu では幅広く利用されるカーネルの他にも、ある特定のプラットフォームや特定の用途に最適化した復数のカーネルを展開しています。これらのカーネルの種類が Variant kernel にあたります。
Variant kernel は、派生カーネルや亜種カーネルと表現することもできます。
ということはその元となるカーネルが存在するわけです。
その元となるカーネルが Generic kernel です。
Generic kernel
Generic kernel が Ubuntu にとってのマスターカーネル及びベースカーネルであり、様々な環境に対応できるよう開発されているカーネルです。言い換えると Generic kernel は、あらゆる環境を想定した万能なカーネルということになります。
しかし状況によっては Generic kernel で対応しきれない事情も出てきます。
その対応しきれない事情をカバーするのが、Variant kernel の役割です。
Generic kernel が安定してから
Variant kernel は Generic kernel がベースになるため、Generic kernel の安定性が確保されてから Variant kernel の安定性が確保されることになります。アップストリームと Ubuntu の Linux kernel
Ubuntu の Linux kernel はアップストリームの Linux kernel から作られています。Dependent Component と Ubuntu の追加実装
Ubuntu の Linux kernel は、アップストリームの Linux kernel をそのまま Ubuntu 向けにパッケージングしてリリースしているのではなく、Ubuntu の事情に合わせた追加実装を行っています。例えばアップストリームに含まれていない追加のデバイスドライバーやカーネルの機能を追加しています。
これらの追加実装は Linux kernel のバージョンに依存しており、ユーザースペースだけでなくカーネルスペースの実装も含まれています。
これらの追加実装を Dependent Component と呼んでいます。
CKT の管理下にない実装もある
これらの追加実装は CKT 自身が管理している実装もあれば、Canonical 内の他のチームが管理している実装もありますし、外部から導入される実装もあります。つまり Ubuntu の Linux kernel で行われる追加実装のすべてが CKT の管理下にないことを意味します。
例えば NVIDIA GPU ドライバーや ZFS ファイルシステムのサポートがこれにあたります。
追加実装はアップストリームのリリースの後に行われる
当然と言えば当然ですが、Ubuntu の追加実装はアップストリームで Linux kernel がリリースされた後その Linux kernel に対して行われるため、アップストリームのリリース後一定期間はこれらの追加実装が完了するまで、追加実装による機能はサポートされません。追加実装に依存するユーザースペースのライブラリーやアプリケーションが期待通りに動作するためには、この追加実装を含めた Ubuntu の Linux kernel が安定していなければなりません。
スケジュール
Ubuntu の開発スケジュールには、復数の段階があります。この開発スケジュールと Ubuntu の関わりを見てみましょう。
Feature Freeze
その段階の一つに Feature Freeze という段階があります。この Feature Freeze の日を迎えると、Ubuntu の新機能の導入や大きな変化は一段落します。
Beta Freeze
もう一つ重要な段階に Beta Freeze という段階があります。Beta Freeze は Feature Freeze の約一ヶ月後に迎える段階です。
Beta Freeze は Ubuntu β版リリースに向けた準備をする段階であり、重大な不具合は率先して修正されます。
Tight Release
もし Ubuntu が Feature Freeze を迎えた日に、アップストリームの Linux kernel が RC4 から RC6 の段階だった場合、Ubuntu にとって厳しいスケジュールになります。この状況を Tight Release と呼びます。
この時 Ubuntu では、Beta Freeze の前にアップストリームの Linux kernel がリリースされることを想定しています。
この状況で Ubuntu は安定版 Ubuntu のリリース日まであまり時間がなく、テストや不具合のす修正、追加実装の取り込み作業に割ける余裕を確保しにくくなります。
Unstable Release
もし Ubuntu が Feature Freeze を迎えた日に、アップストリームの Linux kernel がオープンマージウィンドウの期間であったり、RC1 から RC3 の段階だった場合、Ubuntu にとって Tight Release より厳しいスケジュールになります。この状況を Unstable Release と呼びます。
この状況で CKT は、Ubuntu の Beta Freeze 時にアップストリームの Linux kernel はまだ RC版(リリース候補版)の段階であり、Ubuntu の追加実装を含めた完全な Linux kernel の安定性は期待できないと判断します。
Late Release
CKT では Tight Release や Unstable Release の状況をまとめて Late Release と表現しています。Stabilized Kernel
Ubuntu の追加実装を含め Ubuntu 向けにリリースする Linux kernel は、カーネルのテストがすべて合格し、意図通りに動作すると CKT が判断した Linux kernel が Ubuntu 向け安定版 Linux kernel となります。この安定版 Linux kernel のことを Stabilized kernel と呼びます。
通常 Late Release の状況下にない場合は、この Linux kernel が Ubuntu のリリース日に採用される Linux kernel になります。
この安定版 Linux kernel のことを GA kernel(General Availability kernel)と呼びます。
Stabilization Period
Late Release の状況下にある時に、Ubuntu のリリース日と CKT が Stabilized kernel であると判断できる日の間の期間を指します。Late Release の状況下にある場合は、Linux kernel で有効にする機能や問題の解決など、Stabilized kernel に向けた作業内容が変化します。
Bridge kernel
Stabilized kernel では、その Linux kernel に含まれる Dependent Component も安定版になります。しかし Late Release のケースでは、Stabilized kernel が Ubuntu のリリース日に間に合うとは限りません。
その時 Stabilized kernel にならなかった場合は、Dependent Component も安定版にはなりません。
ユーザーが Dependent Component の完全なサポートを得るには、Stabilized kernel が必要です。
そこでアップグレードしたいユーザーが、一部のファイルシステムなど Dependent Component に含まれる機能が必要な場合でも対応できるよう、Stabilized kernel リリース後に、その Stabilized kernel へ自動的に移行する仕組みが用意されます。
それまでは繋として Stabilized kernel が登場するまで、前バージョンの Ubuntu の Stabilized kernel が採用されます。
この一時的に採用される Stabilized kernel のことを Bridge kernel と呼んでいます。
新しいガイドライン
上記を踏まえ、新しいガイドライン及び方針内容を見てみましょう。次に続きます。