Linux Mint(LMDE4)でNVIDIAの古いボートを使う/NVIDIAレガシーグラボとnouveauドライバ#1

ネット検索すると「LinuxでNVIDIAドライバーを使う」ことに関してはかなり多くの記事があります。でもそれは公式にサポートされているボードに関する情報です。もし「古い」NVIDIAボードを使うならnouveauドライバを割り当てるべきです。

#短く言うと

ハードウェアのなかに古いNVIDIAのグラフィックボードがあるならnouveauドライバを割り当てるほうが楽にLinuxを導入できます。

+ USBメモリからliveブートしようとすると「Welcome to LMDE 4 Cinnamon 32-bit」の画面が出ます。ここでなにもせずに「Start LMDE 4」になるのを待ちます。

:::note warn
「Start LMDE 4 with NVIDIA driver」を選ばないでください。
:::

+ liveブートしたときに希望の解像度だった場合はそのままHDDインストールを始めます。再起動してうまくいっていたらNVIDIAドライバが残っていないか確認し(使わないのに残っていたら)、削除しましょう。
+ liveブートしたときに希望していたより低い解像度だった場合はHDDインストールのあとフリーズしたりします。再起動時の「grubメニュー」にquiet splash **nouveau.noaccel=1**を加えましょう。

#はじめに

私は90年台後半から00年台前半に製造/販売された自作PCやサーバーを何台も持っています。古くなったせいで10年以上放置してしまいました。このまま捨ててしまうのはもったいないのでせめて最新のLinuxをインストールして~~遊び倒して~~勉強してみようと思いました。ところが、これまでWindowsOSしか使ってこなかったこともあり(どのマシンにもWindows XPがインストールされていました)、Xorgが使いこなせずLinuxのインストールにとても苦労することになりました。

#今回の環境

自宅に眠っていた古いワークステーションを使います。Linuxをインストールし1600x900のグラフィックユーザーインターフェイスを表示するのが目標です。

+ OS：Linux mint LMDE 4 Cinnamon 32-bit
+ Linuxカーネル：4.19.0-8-686
+ X.Org Server：1.20.4
+ X Window System：version 11.0 (X11)
+ モニター：Gateway HX 2000 20inch(1600x900)
+ LAN：有線LAN
+ ワークステーション：HP xw6000
+ グラフィック用拡張スロット：AGP 8x
+ グラフィックボード：
    * 玄人志向 GFX5200-LA1280 (GeForce FX5200)
    * NVIDIA Quadro4 980 XGL (xw6000にはじめから内蔵されていたもの)

#うまくインストールできたが画面表示がおかしい

簡単にインストールできそうだったのに、解像度がおかしかったり、HDDからブートする途中でフリーズしたりで困りました。

Windows 10があればRufusというアプリケーションで簡単にLiveUSBができるので「lmde-4-cinnamon-32bito.iso」ファイルをダウンロードしてきてさっそくLiveUSBをつくりました。

https://rufus.ie/ja/

https://www.linuxmint.com/edition.php?id=279

USBメモリからLiveブートは簡単にできました。(表示は1600x900だったり1024x768でしたが)操作に問題がなかったのでそのままHDDにインストールしました。再起動してHDDからブートするとうまく表示しなかったり、フリーズしたりで、とにかく作業ができません。X.Org Serverがうまく動作していないようです。いろいろ調べてみるとNVIDIAのグラフィックボードが古いせいで、**X.Org Serverが困ってしまいX Window System※がうまく起動していない**ようです。

※X.Org Server(≒GUI；グラフィックユーザーインターフェイスを実行するアプリケーション)、以下「Xorg」
※X Window System(≒GUI；グラフィックユーザーインターフェイスの一種)、以下「X11」

#古いNVIDIAのグラボとXorgは相性が悪い

ネット検索と端末からコマンドでいろいろと調べてみるとNVIDIAのグラフィックボードが古いためにXorgの動作に不具合がでます。その原因は主に２つあるようです。

##古いNVIDIAのグラボでは割り当てるべきドライバを間違えやすい

NVIDIAのグラフィックボードのドライバには「NVIDIA」「nouveau」「vesa」があります。古いグラフィックボードでは公式のサポートが終了しているので間違えてNVIDIAドライバを割り当てると不具合が起こります。

Linuxのグラフィックドライバはメーカー別になっていて、Xorgは最適なドライバを自ら見つけ出します。NVIDIAのドライバは例外で、以下の3つのドライバが存在します。

+ NVIDIAドライバ：公式にサポートされたドライバ。GPUの性能を最大限活かせる。ただしすでにサポートを終了しているグラフィックボードがあるので注意が必要。
+ nouveauドライバ：有志によりサポートされたドライバ。公式のサポートを終了した古いグラフィックボードにも対応している。GPUの性能を引き出せない。
+ vesaドライバ：汎用のドライバ。いわゆるセーフモードで用いる。どうやら最大で1024x768までしか対応しない。

NVIDIAのグラフィックボードではユーザーがドライバを選択するケースがあるので間違ったドライバを割り当てがちです。また、Linux mint には「Start LMDE 4 with NVIDIA driver」の選択肢があるのでより間違いが起こりやすいかもしれません。

##古いグラボ(レガシーグラボ)はアクセラレーション技術も古い

NVIDIAは画像表示の技術が古いものになると公式のサポートを終了するそうです(引用不明)。サポートが終了になったグラフィックボードはLinuxでも扱いにくいものです。

NVIDIAのウエブサイトでドライバ検索ができます。ためしに「NVIDIA Quadro4 980 XGL」について調べると最新のドライバが2012年のもので全く更新されていないことがわかります。

https://www.nvidia.co.jp/Download/Find.aspx?lang=jp

また、以下のサイトで確認すると「NVIDIA Quadro4 980 XGL」のドライバは今後更新の予定がなくレガシーグラボになっていることがわかります。

https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/

「NVIDIA Quadro4 980 XGL」はDirectX8.1、OpenGL1.3と何世代も前のグラフィクアクセラレーション技術が用いられています。(後述しますが)これらの技術が古すぎてnouveauドライバでさえ3Dアクセラレーションに不具合が出ます。※もちろんNVIDIAの公式ドライバは使えないとしても。

#nouveauドライバを割り当ててHDDにインストールする

ハードウェアにNVIDIAのレガシーグラフィクボードを持つ場合はnouveauドライバを割り当てたほうが良さそうです。USBメモリからliveブートしたときのX11の状態でインストールの流れは二通りあります。とりあえず作業していきましょう。

まずUSBメモリからブートすると以下の「Welcome to LMDE 4 cinnamon 32-bit」の画面が出ます。ここではなにもせず「Start LMDE 4」を選びます。**「tab」キーを押してはいけません。**

![IMG_20211020_204338.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2176246/aa0cf4b4-a580-abfa-29be-bb73732a05a0.jpeg)

:::note info
キーボードには触れずにカウントダウンして待ちましょう。
:::

:::note warn
「Start LMDE 4 with NVIDIA driver」を選んではいけません。
:::

liveブートが終わってX11が希望の解像度で表示されたでしょうか？
確認してみます。まずは以下のように端末で「xrandr」コマンドを使います。今回の例では正常に1600x900で表示されました。

```:Terminal
$xrandr
```

> `#前略`
>     1600x900    59.95*+
> `#後略`

つぎに以下のように「lshw」コマンドを使います。今回の例では予定通りnouveauドライバが割り当てられました。

```:Terminal
$sudo lshw -c video
```

> `#前略`
>     configuration: driver=nouveau latency=64 maxlatency=1 mingnt=5
> `#後略`

画像表示がうまくいき、nouveauドライバが割り当てられていたらそのまま次に進みます。
1024x768表示だったり、nouveauドライバが割り当てられていなかったら一つ飛ばします。

:::note info
USB liveブートの段階でnouveauドライバが割り当てられましたか？
:::

##liveブートがうまくいったらそのままHDDインストールにすすむ

liveブートがうまく行ったならきっとHDDからもうまくブートします。

デスクトップの「Install Linux Mint」をクリックしてインストール作業を進めましょう。
HDDからブートできたらNVIDIAドライバが残っていないか確認し、削除しましょう。

##liveブートがうまくいかなくてもHDDインストールにすすむ

liveブートの段階で1024x768表示だったり、nouveauドライバが割り当てられていなかったらHDDインストール後に不具合が出るはずです。liveブートの段階でXorgはX11がうまく機能しないとわかっています。

画像表示がおかしくてもHDDインストールを進めます。nouveauドライバは割り当てられていませんが、ドライバそのものはインストールされます。

インストールが終わって再起動したら大変なことが起こりましたか？
電源をいれるとHDDからブートします。ずっと順調に進み、途中Linux Mintのエンブレムが正しく映し出されたりもします。あと少しで完了という雰囲気で不具合が起こります。”すすけた横長のチェッカーフラッグ”のような表示になったり、完全にフリーズしたりするかもしれません。下の写真のようにです。でも大丈夫です。強制終了して電源をオフにしてください。

![IMG_20211029_233527.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2176246/12231e01-ab78-2cdf-abf9-78fe0793babe.jpeg)

:::note info
不具合がでるとわかってもHDDインストールを行います。
:::

次に電源をいれた直後、下の起動モード選択画面で「LMDE 4 Debbie」をハイライトし「e」キーを押して起動オプションを選択します。

![IMG_20211022_230933.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2176246/1f4a2908-a291-a2c9-1747-66093c97f938.jpeg)


「GNU GRUB version 2.02+dfsg1-20」という画面に変わりますので「quiet splash」に続き**nouveau.noaccel=1**を加え、「F10」キーを押します。なお、この画面ではキーボードが英語配列になっているので「イコール」を入力するにはその右隣りの「＾」キーを押します。

```:GNU_GRUB
quiet splash nouveau.noaccel=1
```

GRUBはブートメニューで「nouveau.noaccel=1」は"nouveauドライバはハードウェアアクセラレーターを使うな"という意味です。NVIDIAのレガシーグラボにはnouveauドライバが要求する3Dアクセラレーションに未対応なものがあるようで、描画できずにフリーズします。フリーズするくらいならパフォーマンスが下がったりX11が平面的になっても1600x900で表示されるほうが大切です。

:::note info
「ビデオハードウェアアクセラレータがない状態でシステムが動いています。」「ビデオドライバをチェックしなさい」と言われますが無視します。
:::

以上で1600x900で表示できると思います。

#おわりに

2021年現在、32bitのLinuxとNVIDIAのレガシーグラボを組み合わせる方はほとんどいないと思います。それでもこの記事を書いたのは「NVIDIAのグラボにNVIDIAドライバを割り当てるのに苦労した」というネットの情報がたくさんあったからです。レガシーグラボではそもそもNVIDIAドライバを割り当てられないこともありえるのでそれをお伝えしたかったのです。とにかく、できるだけ多くのNVIDIAレガシーグラボがnouveauドライバで延命されることを願います。