Ubuntu日和
【第47回】Ubuntu 22.04.4 LTSがリリースされた!ところで最後の「.4」って何?
2024年3月2日 06:17
2024年2月22日に「Ubuntu 22.04.4 LTS」がリリースされた。ところでこの数字の最後の「.4」とは何を意味するのだろうか。2022年3月にリリースされた「Ubuntu 22.04 LTS」とは何が違うのだろうか。既にUbuntu 22.04 LTSをインストール済みのユーザーは何をしないといけないのだろうか。ここ2カ月ほどはハードウェア寄りの記事が多かったため、久しぶりにUbuntuプロジェクトの仕組みについて紹介しよう。
なぜポイントリリースが必要なの?
Ubuntuは「定期的なリリース」を行なうLinuxディストリビューションだ。つまりあるバージョンがリリースされたら、その時点で次のリリース日までを決め、それに従って開発を行なう。Ubuntuの場合は、毎年4月と10月の年2回リリースすることになっている。
ちなみにこの日程になっているのはUbuntuが登場した時期のGNOMEのリリースが3月と9月であり、できるだけ最新のデスクトップ環境を提供しようという考えがあったためだ。
さらに年2回のリリースのうち「偶数年の4月」リリースは、「 長期サポート版(LTS:Long Term Support) 」と称し5年間(現在ではUbuntu Proを導入するとプラス5年の10年間)のサポートを提供している。現在の通常リリース(LTSでないリリース)のサポートが9カ月と短いことに比べると、LTS版は十分に長い時間同じリリースを使い続けられることになる。
このLTS版に対して、およそ半年に1回程度の頻度で「 既存のアップデートを適用し、カーネルやグラフィックライブラリを新しいバージョンに更新したインストールイメージ 」を提供してる。これがUbuntuの「 ポイントリリース 」だ。古くからのWindowsユーザーであれば、「Service Pack」と言う表現が一番しっくりくるかもしれない。このポイントリリースを使うことで次のような利点が得られる。
- インストール直後のアップデート時間が短くなる
- インストール時の不具合が修正されている(かもしれない)
- 最初からカーネルやグラフィックライブラリの最新版を使うことでより新しいハードウェアに対応できる
- グラフィックライブラリなどの刷新により性能が向上する(こともある)
一番分かりやすい利点が、「既存のアップデートが適用済み」であることだ。Ubuntuではリリース後も、セキュリティアップデートや不具合対応によっていくつものパッケージが更新されている。Ubuntuをインストールしたユーザーの最初の作業がこれらの更新の適用となるわけだが、リリース後から何年も使われるLTSの場合はその更新数は膨大になる。たとえば記事執筆時点での最新LTSである22.04の場合、最初からインストールされているパッケージだけでも200個以上、500MiB近いデータをダウンロードし更新しなくてはならない。
ポイントリリースを利用すると、これが最大半年分程度で済むようになる。Ubuntuだとセキュリティアップデートは恒常的に存在するが、不具合対応はリリース後に比べると数は少なくなる傾向になる。よって実際に必要なダウンロード数はかなり小さくなることだろう。
もう1つの大きなポイントが、カーネルやグラフィックスライブラリが最新版となることだ。ここで言う「最新版」とは、直近の 通常リリースのUbuntuで使われたバージョン を意味する。具体的には2024年2月にリリースされたUbuntu 22.04.4 LTSの場合は、2023年10月にリリースされたUbuntu 23.10で使われたカーネル(Kernel 6.5)とグラフィックスライブラリ(たとえばMesa 23.2.1)が、22.04用に再ビルドされて取り込まれるわけだ。Ubuntu 22.04 LTSリリース当時のカーネル(Kernel 5.15)やグラフィックスライブラリ(Mesa 22.0.1)から大きく更新されている。
これによりUbuntu 22.04 LTSがリリースされた後に登場したハードウェアやグラフィックデバイスも22.04で使えるようになるのだ。このような新しいハードウェア向けに更新されたソフトウェアセットを、Ubuntuでは「 HWEスタック(Hardware Enablement Stack) 」と呼ぶ。
たとえばIntel Arcシリーズのうちデスクトップ向けのdGPUは22.04のリリース後に発売されている。よって22.04で十分な性能を発揮するためには別途ドライバをインストールする必要があった。
最新のポイントリリースである22.04.4に取り込まれたHWEスタックでは、このIntel Arcも含めた新しいハードウェアにできるだけ対応した状態になっている。
またサーバー向けの場合も、ネットワークデバイスやストレージコントローラーなどがより最新版のカーネルでないと認識すらしなかったり、特定の条件で誤動作することが稀に存在する。このような場合もインストール時点で、より新しいHWEスタックが欲しくなるケースだろう。
つまり新しいHWEスタックを取り込んだ新しいインストールイメージを用意することで、新しいデバイスでもきんとインストーラが動くことが期待できるというわけだ。これにより新しく購入したPCに、LTS版をインストールしようとしたものの画面すらうまく表示できない、なんて問題を回避できる。
なお、サーバー向けに関しては「新しいカーネル」を入れられると「困る」場合も存在する。たとえばLTS版のリリース当初から使われ続けたカーネルは、使われ続けたという意味で不具合がそれなりに見つかって改修されており、安定的に運用されている可能性が高いことを意味する。つまり安定さが重要なサーバー用途においては、新しいカーネルよりも枯れたカーネルのほうが好まれる傾向がある。
そもそも後述するように通常リリースで採用されたカーネルを元にしたHWEスタックは、その通常リリースとおなくじ9カ月しかサポートされない。5年サポートを享受したいのであればLTSオリジナルのカーネルを使い続けることになるだろう。そこでサーバー版に関してはポイントリリースであっても、インストール時に古いカーネルが使われるようになっている。
ただしアップデート適用済みであることはサーバーにとっても重要であることが多いため、ポイントリリースそのものはサーバー版でも用意されている。
ちなみに以前のUbuntuであれば、「インストーラの不具合が解消している」のもポイントリリースを利用する理由の1つだった。ただしこれに関してはサーバー版だと2017年の17.10から、デスクトップ版だとUbuntu 23.10からインストーラの仕組みが変わったことで、解消されている。具体的にはインストーラを起動してから、そのインストーラを最新版に差し替えられる仕組みが実装されているのだ。もちろん、そもそもインストーラが起動しないようなクリティカルの不具合の場合はポイントリリースが必要になるが、そんな症状が幅広い環境で起きるようだったら、再リリースの判断がくだされることになるだろう。
ポイントリリースはいつリリースされるの?
Ubuntuのポイントリリースは通常のリリースと異なり、厳密にはリリース時期は定義されていない。慣習的には次のよう時期にリリースされることが多い。
- LTSリリースから、3カ月から4カ月後(初回のポイントリリース)
- 通常リリースから、4カ月から5カ月後
さらに「最後のポイントリリース」についても特に決まりはない。本来は「次のLTSがリリースされるまで」なのだが、ここ数回のリリースを見る限り、いくつかの大きめのセキュリティアップデートを提供するために「YY.MM.6」か「YY.MM.7」ぐらいまで増えてしまうことが定番のようだ。つまり22.04を例にすると次のようになる。
リリース名 | リリース日(予想) | 備考 |
---|---|---|
Ubuntu 22.04 LTS | 2022年4月21日 | 初回リリース |
Ubuntu 22.04.1 LTS | 2022年8月11日 | 最初のポイントリリース |
Ubuntu 22.04.2 LTS | 2023年2月23日 | 22.10のHWEスタック取り込み |
Ubuntu 22.04.3 LTS | 2023年8月10日 | 23.04のHWEスタック取り込み |
Ubuntu 22.04.4 LTS | 2024年2月22日 | 23.10のHWEスタック取り込み |
Ubuntu 22.04.5 LTS | 2024年8月(予想) | 24.04 LTSのHWEスタック取り込み |
Ubuntu 22.04.6 LTS | 2025年2月(予想) | 各種不具合取り込み(HWEスタックの更新はなし) |
Ubuntu 22.04.7 LTS | ? | 重要なアップデートがあった場合にのみ発生 |
特に重要なのは、22.04.5において「 Ubuntu 24.04 LTS(つまり次のLTS)のHWEスタックが取り込まれる 」ことだろう。LTSのHWEスタックのうちカーネル部分については「 GAカーネル(General Availabilty Kernel) 」と呼びリリース時に採用されたLTSのサポート期間において、メンテナンスが継続される。つまり24.04のGAカーネルは2029年まで(Ubuntu Proだと2034年まで)メンテナンスされる。Ubuntu 22.04 LTSのサポート期限自体は2027年まで(同2034年まで)となるため、22.04のサポート期限いっぱいこのGAカーネルを使えるのだ。
22.04を使いつつ、次のLTSリリースのGAカーネルを取り込むことで、24.04への段階的な移行が可能になっていると考えれば良いだろう。
ちなみに通常のリリースと異なりリリース日を含めたスケジュールが明確でないのは、主にカーネル側でどの修正をどれくらい取り込むかが見込めないことと、品質評価のリソースの都合だ。
Ubuntuのリリースだと、半年の開発期間のうちおよそ後半部分を使って採用するカーネルの動作確認などを行ったり、古いリリースからのアップグレードテストを行なう。また開発版としてUbuntu全体がリリースされるため、コミュニティの多くのユーザーが開発版を利用するために不具合報告も上がってきやすい。
それに対してHWEスタックは、利用しているユーザーは多いもののUbuntuそのものの開発に携わる人は割合として少なくなりがちだ。まだリリースされていないパッケージを取り込んで使うという形になることも多いため、体系的な動作確認が難しくなる。一応、HWEスタックはある程度動作確認が進んだらポイントリリースに先立ってLTSリリースでも利用可能にはなるため、実際に使っているユーザーは多い状態でポイントリリースが作られることにはなる。ただし、並行して他のリリースの開発も進んでいる都合上、通常のリリースに比べてリソースの確保が難しいのが実情だ。
そこでポイントリリースについては、このあたりに作るということだけ決めておいて、近くになったらリリースできそうなタイミングを判断する形になっている。リリース日をある程度想定したい場合は、過去のリリース日を参考にしつつ、Ubuntu Discourseのリリース関連のアナウンスカテゴリーをチェックしておくと良いだろう。
普通にアップグレードするだけではいけないの?
ポイントリリースは、最新のパッケージを同梱したインストールイメージだ。それを聞くと、次のような疑問が出てくるかもしれない。
- 普通のインストールからアップグレードしていけばポイントリリースと同じになるのか?
- ポイントリリースが出るたびにインストールしなおさなくても良いの?
回答としてはどちらも「イエス」である。つまり既にLTS版Ubuntuをインストールしているなら、 普通にアップグレードしていれば自動的にポイントリリース相当になる 。特にデスクトップ版については、Ubuntu 20.04 LTSから、通常のアップグレードによって常に最新のHWEカーネルが使われるようになっている。
現在使っている環境がどのポイントリリース相当であるかは、冒頭の画像にあるように「このシステムについて」を確認すると良い。ここには「OS名」として現在のリリース情報が書かれている。
もし端末で確認したいのであれば、「/etc/os-release」を表示すると良い。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
つまり実のところ「Ubuntu 22.04 LTS」と「Ubuntu 22.04.4 LTS」で本質的な違いはあまりない。特にUbuntuをアップレードせずに使い続けるということは、あまり薦められる使い方ではない。よって説明にあたってはポイントリリースの部分を省いて、「Ubuntu 22.04 LTS」と表記することが一般的だ。
ただし不具合報告等で自分の環境を伝えたい場合は「このシステムについて」のスクリーンショットなどを伝えると良いだろう。それで「そもそもこいつパッケージを更新していないな」ということがわかって、初手として「まずはソフトウェアの更新をしてみるのはいかがでしょう」と説明できるからだ。
新規にインストールする時は常にポイントリリースを使えば良いの?
新規にLTS版のUbuntuを導入するなら、最新のポイントリリースを使ってインストールすることをおすすめする。実際にUbuntuのダウンロードサイトや公式ミラーサイトでも、LTS版を選択したら自動的に最新のポイントリリースへと誘導される。
ただし新しいカーネルを使った結果、「なんかうまく起動できない」「性能が落ちる」「特殊な不具合を踏んで画面が表示されない」なんてことは、残念ながらよくある。大抵の場合は、使っているハードウェアが変態か、作っているベンダーが変態か、変態的な使い方をしているか、使っている人が変態か、ただ運が悪いかのいずれかだ。変態性に心当たりがなければ、引きの悪さを嘆くしかない。
Ubuntuの良いところは、この手の問題の原因を自分で調べ、修正もしくは回避策の構築を比較的短時間でできる可能性があるところだ。少なくともコードを読める分、調査そのものは楽なことが多い。よって自分で修正すれば良いだけという意見もなくはないものの、普通はそこまでの時間と情熱はないだろう。Ubuntuを使うこと自体が目的であるユーザーは少数派だ。
というわけで、新しいHWEカーネルがうまく動かないのであれば、とりあえずの措置として古いカーネルに差し戻すしかない。この場合、次の2種類の方法が存在する。
- GAカーネルに戻す
- HWEカーネルの1個前に戻す
どちらもカーネルパッケージをインストールすれば良い。GAカーネルをインストールするなら次のパッケージをインストールしよう。
$ sudo apt install linux-generic
これでポイントリリースでも、GAカーネルを使えるようになった。ただし実際に使うためには、GRUBメニューで古いリリースを選択しなくてはならない。最近のUbuntuは起動時にGRUBメニューを表示してくれないため、少し手間がかかる。
一般的な方法は、PCの起動時にESCキーを連打だ。これでGRUBメニューが表示されれば運が良い。もし「grub」で始まるプロンプト(入力画面)が表示されるようなら、「normal」と入力し、Enterキーのあとに一度だけESCキーを押そう。これでGRUBメニューとなる。
しかしながら誰しもがESCキーをうまく連打できるわけではない。もっと確実には、GRUBの設定でメニューを常に表示するようにしよう。具体的には次のコマンドのように、管理者権限で設定ファイルを開いておく。
$ sudoedit /etc/default/grub
冒頭に「GRUB_TIMEOUT_STYLE=hidden」「GRUB_TIMEOUT=0」とあるが、これを「GRUB_TIMEOUT_STYLE=menu」「GRUB_TIMEOUT=5」のように書き換えよう。
#GRUB_TIMEOUT_STYLE=hidden
#GRUB_TIMEOUT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5
これは常にメニューを表示し、さらに5秒経てば自動的に既定のエントリーを起動するというオプションだ。つまり起動時間が5秒長くなってしまう。このあたりは用途や好みに応じて値を変更すると良い。
編集したファイルを保存したら、最後に設定を反映する。
$ sudo update-grub
これで準備完了だ。再起動したらGRUBメニューがが表示されるようになっているはず。さらに「Advanced options for Ubuntu」を選択すると、次のようにGAカーネル(今回なら5.15カーネル)が表示されたなら成功だ。
毎回起動時に選択するのが大変な場合は、「/etc/default/grub」の「GRUB_DEFAULT=0」を「GRUB_DEFAULT=“saved”」に変更して、さらに「GRUB_SAVEDEFAULT=“true”」行を追加し、「sudo update-grub」を実行することになる。これで「最後に選択されたエントリーが次も自動的に選択される」ようになる。ちなみに「GRUB_DEFAULT」にはエントリー番号やIDも指定可能であるため、もっと確実な方法を模索するのも良いかもしれない。
HWEカーネルで「1個前に戻す」のは、基本的に上記と同じようにGRUBメニューで選べば良い。GA/HWEカーネルに関係なく、Ubuntuでは「最新のカーネル」と「1個前のカーネル」は常に残すようになっている。これはカーネルアップグレードによって起動できなくなった時の保険となる。もしさらに古いカーネルを使いたい場合は、自分でパッケージを指定することになるだろう。
$ uname -r
6.5.0-21-generic
たとえば上記の場合、「21」を減らした「6.5.0-19-generic」が一般的には「2個前」になる。しかしながら、実際はいくつかの番号を飛ばすこともある。そこで次のように確認した上で、インストールしよう。
$ apt search "linux-image-6.5.0.*generic"
ソート中... 完了
全文検索... 完了
linux-image-6.5.0-14-generic/jammy-updates,jammy-security,now 6.5.0-14.14~22.04.1 amd64 [設定が残存]
Signed kernel image generic
linux-image-6.5.0-15-generic/jammy-updates,jammy-security,now 6.5.0-15.15~22.04.1 amd64 [設定が残存]
Signed kernel image generic
linux-image-6.5.0-17-generic/jammy-updates,jammy-security,now 6.5.0-17.17~22.04.1 amd64 [設定が残存]
Signed kernel image generic
linux-image-6.5.0-18-generic/jammy-updates,jammy-security,now 6.5.0-18.18~22.04.1 amd64 [設定が残存]
Signed kernel image generic
linux-image-6.5.0-21-generic/jammy-updates,jammy-security,now 6.5.0-21.21~22.04.1 amd64 [インストール済み、自動]
Signed kernel image generic
$ sudo apt install linux-image-6.5.0-17-generic linux-headers-6.5.0-17-generic
「linux-headers」のほうはDKMSなどサードパーティのモジュールをインストールする場合に必要になる。
ちなみに手動でインストールしたカーネルパッケージは、手動で削除しないとずっと残り続けることになる。カーネルパッケージのサイズは大きく、たとえばパーティションの構成によっては「/boot」などを圧迫してしまうので注意して欲しい。
昔のポイントリリースは入手できる?
何らかの理由で古いポイントリリースのイメージが欲しくなるかもしれない。その場合は次のサイトにアクセスすると良いだろう。
CPUアーキテクチャなども混じっているので注意が必要だ。一般的なPCにインストールするなら「ubuntu-22.04.2-desktop-amd64.iso」など「amd64.iso」などを選択することになる。「amd64アーキテクチャのつもりが、arm64アーキテクチャーのISOイメージをダウンロードしてた!」なんてことも良くあるので、ファイル名の末尾にはご注意を。
実はサポートが終了したインストールイメージなどもこちらに保存されている。仮想マシンを使って、最も古いUbuntu 4.10をインストールしてみるのも楽しいかもしれない。
ちなみに次のLTSであるUbuntu 24.04 LTSは2024年4月25日にリリースされる予定だ。そろそろ開発も佳境に入ってきて、4月の頭にベータ版が出ることになる。どんなところが新しくなったか気になる人は、ベータ版が出た頃に開発版を試してみると良いだろう。