Ubuntu 16.04のビデオドライバいれかえ

ここ最近不調だったUbuntu 16.04 のビデオドライバを入れ替えました。NVIDIA製ドライバに変更後は、安定して動いています。

事の発端はデスクトップ機へのWindows 10再インストールでした。このPCはWindows 7時代から継続的にアップデートをしており、動作がかなり緩慢になっていました。結局たまりかねてWindows 10を入れなおしたわけですが、ついでに入れ替えたUbuntu 16.04 が不安定になるというのは予想外でした。

症状としてはフリーズです。利用中に前触れ無く画面がフリーズし、その後はCTRL-ALT-F2も効きません。電源を落とす以外に対策はありませんでした。

調査

 Googleで調べてみると、NVIDIA製カードのフリーズは多く、しかも長い間解決されていませんでした。ただ、多くの場合CTRL-ALT-F2でキャラクタ端末に移行できており、その点は私と違います。

そこで/var/log/syslogを調べてみました。


    
Oct 28 08:07:20 580s pulseaudio[2372]: [alsa-sink-USB Audio] alsa-sink.c: We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail.
Oct 28 08:15:46 580s kernel: [ 3066.343126] nouveau 0000:01:00.0: chromium-browse[25350]: nv50cal_space: -16
Oct 28 08:15:50 580s kernel: [ 3070.400951] nouveau 0000:01:00.0: fifo: SCHED_ERROR 0a [CTXSW_TIMEOUT]
Oct 28 08:15:50 580s kernel: [ 3070.400962] nouveau 0000:01:00.0: fifo: gr engine fault on channel 5, recovering...
Oct 28 08:15:56 580s kernel: [ 3076.201519] [drm:drm_atomic_helper_swap_state [drm_kms_helper]] *ERROR* [CRTC:37:head-0] hw_done timed out
Oct 28 08:16:06 580s kernel: [ 3086.441587] [drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [CRTC:37:head-0] hw_done timed out
Oct 28 08:16:16 580s kernel: [ 3096.681658] [drm:drm_atomic_helper_wait_for_dependencies [drm_kms_helper]] *ERROR* [CRTC:37:head-0] flip_done timed out

ちょっとわかりにくいですが、08:15:56にdrmのエラーが起きており、それから20秒くらいのメッセージを最後にログは終了しています。調べたところdrmは主犯ではなくその直前、08:15:46に発生したnouveauの問題から煽りを食らって発生したようです。

nouveauはNVIDIAグラフィックス・カード用のオープンソース・ドライバです。このドライバがどうやら原因のようですので、ドライバをNVIDIA製に変更することにしました。

ドライバ変更

ドライバは『ソフトウェアとアップデート』から変更できます。ラジオボタンでNouveauからプロプライエタリのドライバに選びなおし、変更の適用をクリックするだけです。

https://pbs.twimg.com/media/Dql-qZtX4AEBsmU.jpg

結果

日曜日に変更をかけましたが、その後フリーズはなく安定して動作しています。

/* -----codeの行番号----- */