Ubuntuのアップグレードで古いNvidia GPUがダウングレードを要求してきた

Table of Contents

Ubuntuのアップグレードで古いNvidia GPUがダウングレードを要求してきた

Reg FOSSデスクは、グラフィックアクセラレーションを復元するためにUbuntuをダウングレードすることに多くの時間を費やしました。なぜ、どのようにしてこれを行うのでしょうか?

Ubuntu 24.04「Noble」は長期サポート版で、9月に最初のポイントリリースがリリースされました。Ubuntuのダウンストリームとして最大のものの一つであるLinux Mintも、Nobleベースのバージョンの最初のポイントリリースをリリースしました。より慎重な方は、このタイミングでアップグレードを検討してみてはいかがでしょうか。Nvidiaの「レガシー」ドライバーが必要なNvidia内蔵GPUをお持ちの方は、アップグレードを控えるか、Ubuntu Jammyベースのバージョンに戻すことを検討してみてはいかがでしょうか。

3月にUbuntu 24.04がベータテストに入った際にこの問題について説明しました。また、9月にDebian 11の最終ポイントリリースがリリースされた際にも、同じ問題がDebian 12にも影響することを警告しました。解決策は今のところ見つかっておらず、今後も見つかる可能性は低いため、テスト用のThinkPadの1台を再び動作させるに至った経緯を説明すると役立つのではないかと考えました。

Nvidiaは、GPUの新モデルとグラフィックドライバーの新メジャーバージョンを頻繁にリリースしています。CPUと同様に、GPUは関連製品ファミリーに属しています。つまり、特定のバージョンのNvidiaドライバーは、特定の最近のGPUファミリーのみをサポートします。古いGPU用のドライバーは「レガシー」ステータスに格下げされ、更新されなくなります。これにより、2種類の非互換性問題が発生します。1つは、古いドライバーが現在のカーネルとそのサポートツールにインストールまたは実行されないことです。もう1つは、一部のソフトウェアが新しいドライバーの機能を必要とするため、古いドライバーでは正常に動作しないことです。

問題は、Nvidiaのグラフィックドライバがプロプライエタリコードであることです。社外の誰も、新しいツールチェーンで動作するようにドライバを変更したりアップデートしたりすることはできません。同社はよりオープンなドライバの開発に取り組んでいますが、記事のブートノートにもあるように、ドライバの大部分はFOSSコードであるものの、多くのコードを侵入不可能な「ファームウェア」バイナリ(BLOBと呼ばれることもあるパッケージ)に移行することでこれを実現しています。

本稿執筆時点では、バージョン550と565が最新版です。バージョン470、390、およびそれ以前のバージョンはレガシーバージョンとみなされます。バージョン390はカーネル6.5以降にはインストールできません。さらに悪いことに、カーネルバージョンだけが問題ではありません。例えば、Debian 12はカーネル6.1を使用していますが、バージョン535しか含まれておらず、それ以前のドライバーはサポートされていません。これは、MX LinuxなどのDebianのダウンストリームにも当てはまります。

独自仕様のドライバーの代替手段は存在しますが、それらには重大な欠点があります。FOSSのNouveauドライバーはほとんどのNvidia GPUモデルで動作しますが、完全な加速を実現できず、GPUをフルスピードで動作させることさえできません。Nouveauの電源管理ページで、赤色(「TODO」)、黄色(「MOSTLY」)、青色(「STALLED」)の大きな領域を確認してください。また、NVKという新しいコードもあります。これはNvidiaがリリースしたコードヘッダーを一部ベースにしていますが、最近のGPUモデルの一部しかサポートしていません。

この問題は、Reg FOSSデスクの私たちが古いThinkPad、特に古い7列キーボードを愛用していることが原因で、大きな問題となっています。新しいチクレットキーボードを嫌うRegハッカーは私たちだけではありません。古いThinkPadの中には、アップグレードできないオンボードのディスクリートGPUを搭載しているものもあります。例えば、ThinkWikiには11モデルが掲載されていますが、このハゲタカはそのうち3モデルも所有しています。

Ubuntu、Debian、および関連ディストリビューションの新しいバージョンで、いくつかの回避策を試しました。TeejeeTechのUbuntuカーネルアップグレードユーティリティ(UKUU)とそのFOSSフォークであるMainlineを使用して、Canonical独自のカーネルリポジトリから理論上互換性のあるカーネルバージョンをインストールしてみました。パッチを適用した古いドライバの使用も試しましたが、どれもうまくいきませんでした。

ということで、最近、諦めて元に戻しました。マシンをアップグレードする際、時間とディスク容量に余裕があれば、古いバージョンのOSのコピーを別のパーティションに保存するようにしています。Ventoyキーで起動し、Gparted Liveなどを使ってルートパーティションを複製し、必要に応じて新しいUUIDを割り当てます。新しいコピーの/etc/fstabファイルを編集して新しいルートパーティションの場所を指定し、GRUBを再起動してupdate-grubパーティションをGRUBの起動メニューに追加します。

残念ながら、テスト用のT420にはUbuntuに加え、Windows 7、Windows 10、MX Linux、Elementary OSが既にインストールされていたため、空き容量がありませんでした。搭載されているディスクリートNVIDIA Quadro NVS 4200Mは、CPUに統合されたIntel HD 3000の補助チップです。マシンはNVIDIAのOptimusテクノロジーを使用して、これらのチップをリアルタイムで切り替えますが、ファームウェアでこの機能をオフにして、どちらかをプライマリに設定することも可能です。この切り替え機能のおかげで、23.10にアップグレードしても突然の不具合は発生しませんでした。画面表示が少し乱れる程度で、再起動後には解消されました。

既存の23.04をアップグレードしようとしたところ、いくつか気になる警告が表示されました。正直何とも言えませんが、アップグレードは完了し、問題なく動作しています。

既存の23.04をアップグレードしようとしたところ、いくつか気になる警告が表示されました。正直、何と言っていいのか分かりませんが、アップグレードは完了し、問題なく動作しています。(クリックして拡大)

別のマシン(X220、単体GPUなし)には、22.04.5の完全アップデート版がまだ残っていました。Rescuezillaは便利そうに動作し、ブートセクターなどもコピーしてしまうため、コマンドラインからpartcloneを使ってそのパーティションのイメージを作成しました。これは、Rescuezillaが不要なブートセクターもコピーしてしまうためです。イメージを圧縮し、USBキーにコピーし、それをT420のデータパーティションにコピーし直し、MX Linuxで解凍して、Ubuntuパーティションに書き戻しました。その後、fstabファイルを調整し、 を実行してupdate-grubMX LinuxのGRUBに追加し、試してみました。GRUBが間違ったルートパーティションを選択したため、 をブートコマンドラインに として追加することでroot=/dev/sdb5、問題なく動作しました。

デュアル ヘッド構成の Ubuntu 22.04.5 - 2 番目が縦向きモードであるため、空白領域があります。

出荷時のカーネル、バイナリドライバ、そしてJammy Jellyfishは両方の頭を元に戻しました – クリックして拡大

最後に必須のステップがあります。カーネルをダウングレードすることです。最新のUbuntu HWEアップデートにより、「Jammy」は「Noble」の6.8カーネルをデフォルトとして採用するようになりました。これはレガシードライバでは動作しません。出荷時のカーネル5.15に戻すには、以下の手順を実行しました。

apt install linux-generic

再起動して動作を確認し、linux-generic-hwe-22.04インストールされた厄介な新しすぎるカーネルを削除しました。Linux汎用カーネルでは5.15.00.130.128が使用でき、Ubuntuの「ソフトウェアとアップデート」ツールを使用してNvidia独自ドライバのバージョン390をインストールできました。

  • WINE 10はまだエミュレータではないが、Windowsアプリは違いを認識しない
  • OpenZFS 2.3がRAID拡張と重複排除の高速化を実現
  • Linuxカーネル6.13で電力管理、セキュリティ、スケジューリングが向上
  • Linux Mint 22.1 Xiaが遅れて登場

すべてが非常にスムーズに動作し、グラフィックアクセラレーションも完全に回復しました。また、MX Linuxを削除し、XfceベースのZorin OS Liteに置き換えて、アクセラレーションが機能するフォールバックディストリビューションを用意しました。

このかなり複雑な多段階のプロセスを共有することで、(私たち自身も含めて)より良いバックアップを取るよう皆さんに動機付けできればと思いました。2011年製のラップトップにしては大変な作業でしたが、SSD 2台、USB 3、16GBのRAMを備えた優秀なマシンです。最先端のマシンには遠く及びませんが、それでも十分に使用可能で、スリムだが修理不可能な後継機よりも優れたキーボードと多くのポートを備えています。マシンのその他の部分はすべて、私たちが試した最新のディストリビューションで完璧に動作します。ちなみに、BIOSマシンからUEFIマシンにパーティションを移動する場合も、同じ手順で行えます。必要なGRUBサポートを で追加するだけですsudo apt install grub-efi

なぜそこまで手間をかけるのか、あるいは少なくとも、なぜ世間に説明する必要があるのか​​?理由は2つあります。まず、記憶をたどると、このUbuntuのインストールはバージョン13.10から始まったと思います。今では約12年が経過し、約5回のLTSリリース(そして様々なラップトップ)と、いくつかの中間リリースを経て、繰り返しアップグレードされてきました。これは、このOSの長期的な耐久性を証明しています。また、10年以上にわたるカスタマイズや追加アプリも搭載されており、再現するのは大変です。次に、このプロセスを説明した理由は、カーネルのダウングレード、グラフィックドライバーの追加など、ほとんどの作業は新規のクリーンインストールにも同様に当てはまり、クリーンインストールの方が多少早く済むからです。

改善の余地は十分にあります。Ubuntu、Debian、Linux Mintなどのディストリビューションのアップグレードツールが、アップグレードを提案する前にサポート対象外となるハードウェアを検出してリスト表示するほど賢くなれば良いと思います。また、NVIDIAが製造中止となったハードウェア用の古いレガシードライバのソースコードを公開してくれると非常に助かります。最後に、試してみる価値はありますが、NouveauがOptimusモードを自動的に検出して実行できれば便利です。

残念ながら、すべてが実現する可能性は低いようです。そのため、NVIDIAのレガシーリストにあるアップグレード不可のGPUが必要な場合は、Jammy Jellyfishを使い続けることをお勧めします。無料のUbuntu Proアカウントと延長サポートが利用できるかもしれません。あるいは、Ubuntu 22.04をベースにしたダウンストリームディストリビューションの関連バージョン、例えばMint 21、Elementary 7、Zorin OS 17、Linux Lite 6などもおすすめです。Debian 11やその類似バージョンをお使いの場合は、ディストリビューションの切り替えを検討する時期かもしれません。®

Discover More