覚え書きブログ

ubunt16.04のインストール(DELL precision tower, GALLERIA ZZ + GTX1080ti)

久しぶりにPCのセットアップを行ったのでメモっておく。

今回は、以下のMSIとGALLERIA ZZに元々ついているGTX1080ti。大きさが違いすぎて驚き。MSIのはデカすぎて、DELL precision twoerの蓋が閉まらないので、GALLERIA ZZについていたのを、DELL precision towerに挿し、MSIのをGALLERIA ZZに挿した。
f:id:hirotaka_hachiya:20171227110438j:plain

まず、Ubuntu16.04 LTSのインストールしたのだが、これまでのUbuntuインストール経験史上1,2位を争うくらい苦戦した。原因は、GTX1080tiというハイエンドで、Ubuntuにデフォルトでドライバが入っていないGGPUを挿した状態でインストールしたからである。

ubuntu16.04LTSのインストール

1) 以下から、ubuntu-16.04.3-desktop-amd64.isoをダウンロード
https://www.ubuntu.com/download/desktop

2)以下からMD5のchecksumを比較するソフトをダウンロード
http://www.nullriver.com/downloads/Install-winMd5Sum.exe
ダウンロードしたisoファイルに対応する以下のMD5と、上記のソフトで計算したMD5と一致していることを確認。

0d9fe8e1ea408a5895cbbe3431989295 *ubuntu-16.04.3-desktop-amd64.iso

http://releases.ubuntu.com/xenial/MD5SUMS

3) DVD-Rを入れて、ダウンロードしたisoファイルを右クリックし、「ディスクイメージの書き込み」を選択し書き込む
なお、以下のソフトを用いてisoファイルをUSBメモリに書き込んでもよい。
http://unetbootin.github.io/
https://etcher.io/

4) DVDを入れて起動し、起動時にF2を押してBIOSを立ち上げ、DVDから優先的にBootするように設定

nomodesetを設定してインストール

5) DVDから起動し、「Install Ubuntu」を実行。しかし、ずーと黒いスクリーンのまま。。。久しぶりに嫌な予感
ここにきて、いろいろ調べると、gtx1080tiのドライバが入っていないので、表示上の問題がでていることがわかる。他でもトラブル続出状態。。。
https://askubuntu.com/questions/38780/how-do-i-set-nomodeset-after-ive-already-installed-ubuntu
https://qiita.com/bohemian916/items/8c7f0c4b3d3ea0958559

https://qiita.com/kunihikot/items/588f39b4b11024ae0c41

6)もう一度再起動して、今度は「Install Ubuntu」に「↓」で移動し「e」を押し編集モードに入る。 そして、「quiet splash」を「nomodeset」に書き換えて「F10」を押しインストールを開始する

7) インストールの言語を「日本語」に変えて手順に従って進む。なお、パーティションの切り方は、以下のようにする。

ーBoot用「EFIシステムパーティション」に100MB
ーSWAP用にメモリの容量+2GB
ー残りは、/(およびまたは/home)にマウントポイントを設定し、ext4フォーマットを割り当てる

8)インストールしたので再起動。通常のインストールに戻ったと思いきや、今度は紫の画面がずーーーと続く。嫌な予感。先ほどと同様にドライバの問題が起きているとのこと。

なお、DELL precision towerの場合は、Windows10とデュアルブートにしていたため、まだGRUB2のメニュが表示されるが、GALLERIA ZZの場合、マシンに依存するというよりは、Ubuntu単独ブートにしていたためGRUB2の画面がでず、最初から紫画面のまま。

DELLの場合は、GRUB2のメニューの"Ubuntu"(上の写真)にて"e"を押して、編集モードに入り、nomodesetを付ければ起動できたのだが、GALLERIA ZZは手の出しようがない。。。ちなみに、以下のブログでは、別パーティションにもう一つUbuntuをインストールして、GRUB2のメニューが出るように強引に対応したとのこと。
qiita.com

もう一つubuntuを入れるのはどうしても避けたいので、手元にある(もともとDELL Precision Towerに挿してあった)Quadro k620を、以下のように挿して起動したところ、ドライバがデフォルトに入っていたようで、見事に起動できた。
f:id:hirotaka_hachiya:20171227181644j:plain

9) 起動後はどちらでも、/etc/default/grubの「GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"のイコール以降を、"queit splash nomodeset"に変える。そして、sudo update-grubを実行すると、再起動は問題なくできるようになった。

* GTX 1080tiのドライバーのインストール
以下を参考にして、gtx-1080tiのドライバーをインストールした。

qiita.com
上記の説明では、381のドライバーをインストールしているが、結局CUDA8をインストールする際に384.98のドライバがインストールされたので、このステップは必要ないかもしれない。。。追記:他のPCで試してみたが、このステップは飛ばしても(つまり、neauvouをブラックリストに入れて、381をインストール)、問題なかった。

CUDA8とCUDNN6のインストール

1) 以下から、cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.debおよびパッチのcuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64.debをダウンロードする。
https://developer.nvidia.com/cuda-80-ga2-download-archive

2)以下を参考にレポジトリを作って、パッケージをインストールする
hirotaka-hachiya.hatenablog.com

> sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
> sudo apt-get update
> sudo apt-get install cuda

3)次に以下のコマンドでパッチをあてる

> sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64.deb

4)次に、cudnn-8.0-linux-x64-v6.0.tgzを以下からダウンロードする
https://developer.nvidia.com/rdp/cudnn-download

5)以下のコマンドでインストール

> tar xzvf cudnn-8.0-linux-x64-v6.0.tgz 
> sudo cp -a cuda/lib64/* /usr/local/cuda-8.0/lib64/
> sudo cp -a cuda/include/* /usr/local/cuda-8.0/include/
> sudo ldconfig

6)最後に、パスを通す

> vi ~/.bashrc
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:%LD_LIBRARY_PATH
> source ~/.bashrc

再起動し、secure bootをdisableにする(このステップを飛ばすと、ログイン画面が出るけれど、ログインできない症状が起こるので要注意。

7) GTX1080tiが認識されているか確認

> nvidia-smi
Wed Dec 27 20:53:24 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.98                 Driver Version: 384.98                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 00000000:03:00.0  On |                  N/A |
| 25%   46C    P0    60W / 250W |    283MiB / 11163MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1391      G   /usr/lib/xorg/Xorg                           158MiB |
|    0      2139      G   compiz                                       122MiB |
+-----------------------------------------------------------------------------+

> lsmod | grep nvidia
nvidia_uvm            671744  0
nvidia_drm             45056  1
nvidia_modeset        843776  4 nvidia_drm
nvidia              13119488  188 nvidia_modeset,nvidia_uvm
drm_kms_helper        151552  1 nvidia_drm
drm                   352256  4 nvidia_drm,drm_kms_helper

384.98のドライバが入っている。

Anaconda3のインストール

以下を参考にして、Anaconda3をインストールした。
hirotaka-hachiya.hatenablog.com

tensorflowのインストール

以下を参考にして、tensorflowのGPU版をインストールした。
hirotaka-hachiya.hatenablog.com

なお、Anacondaを/usr/local/anaconda3にルート権限で入れた場合、sudoで「pip install」を実行すると、パスが通ってないのでpipが無いとエラーがでる場合があるので要注意。/root/.bashrcにも以下のようにパスの設定をする必要がある。

export PATH=/usr/local/cuda-8.0/bin:/usr/local/anaconda3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

GALLERIA ZZの有線LANドライバのインストール

GALLERIA ZZがやっと起動できるようになったと思ったつかの間、インターネットに繋がっていないことがわかった。
以下のようなドライバーe1000eのロード時にエラーが出ているようだ。

> dmesg | grep e1000e
[    2.026555] e1000e: probe of 0000:00:1f.6 failed with error -5

そこで、インテルのサイトからドライバーをダウンロードする。なお、バージョンは3.3.5.10と3.3.6 で動作確認ができたが、最新版の3.4.0.2では別のエラーがでて動かなかった。
https://downloadcenter.intel.com/ja/download/27158/-PCIe-Linux-

1) 下記のサイトによるとチェックサムのところでエラーが出ているようなので、下記のようにsrc/nvm.cのe1000e_validate_nvm_checksum_generic関数を、常に0を返すように変更する。
https://blog.spiralray.net/archives/474

s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
{
        return 0;
}

2)コンパイルしてインストール

> make
> sudo make install

3) ドライバの読み込み

> sudo rmmod e1000e
> sudo modprobe e1000e

4) 再起動時にもドライバを読み込むように設定

> sudo update-initramfs -u

なお、ここでも、secure bootをdisableにしないとドライバーがインストールできない問題が起こるので要注意。