読者です 読者をやめる 読者になる 読者になる

ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

CUDA 6.0をDebian 7 wheezyにインストール

インストールメモ CUDA debian トラブルシューティング

この記事は

 CUDA 6.0をDebian wheezyにインストールした時の手順をまとめた記事です。いろいろつまずいた。

想定する環境

 インストール直後のDebian wheezy x64 desktop

インストーラーの入手

 こ↑こ↓(https://developer.nvidia.com/cuda-downloads)のLinuxタブ内からUbuntu 12.04のRUNを入手する。Debian用のパッケージは用意されていないのでRUNから手動でインストールする。マニュアルのpdfは同ページ内の``Getting Starting Guid''から見ることができる。
 余談だが、Ubuntuだとほとんどapt-getだけで話が済む。

インストール手順

パッケージの用意

 まずは必要なパッケージをすべてapt-getで入手する。

# apt-get install g++ g++-4.6 make linux-headers-3.2.0-4-amd64 pkg-config

``linux-headers''のバージョンは``uname -r''でカーネルのバージョンを調べてそれに合わせる事。
g++を入れているのはこの記事の外でg++を使うアテがあるから。使うつもりがなければgccでもいいんじゃないですかね。

gccのバージョン切り替え

 カーネルのビルドはgcc-4.6でなくてはならない(他のバージョンだとインストールを止められる)ので。update-alternativesでgccgcc-4.6が呼び出されるようにする。なお、デフォルトではgcc-4.7が呼び出される。

# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 46 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
----(略)----
# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 47 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7
----(略)----
# update-alternatives --config gcc
alternative gcc (/usr/bin/gcc を提供) には 2 個の選択肢があります。

  選択肢    パス            優先度  状態
------------------------------------------------------------
* 0            /usr/bin/gcc-4.7   47        自動モード
  1            /usr/bin/gcc-4.6   46        手動モード
  2            /usr/bin/gcc-4.7   47        手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 1
update-alternatives: /usr/bin/gcc (gcc) を提供するために 手動モード で /usr/bin/gcc-4.6 を使います

 --installして--configureする。g++もついでに設定しているがgccしか入れてない場合は--slave以降は省略しても良い。なお、コレ以降は全てのコンパイルgcc-4.6で行われることになるのだが、インストール終了後にこのまま放っておくと危ないので、インストールが終わったら忘れずに戻しておきましょう。

純正ドライバのインストール

 あとはスクリプトを走らせるだけ・・・と言いたいのだが、デフォルトで入っているnouveau(グラフィックスドライバ)に邪魔されるのでこいつを何とかしつつ、純正の対応ドライバをインストールする。
まずはtty1に移動して、デスクトップマネージャーを止める。Ctrl+Alt+F1でtty1に移動してログインしてから

# service gdm3 stop

その後RUNファイルを実行する

# chmod +x cuda_6.0.37_linux_64.run
# ./cuda_6.0.37_linux_64.run

実行権限を与えてからRUNファイルを実行している。バージョンは適宜読み替えてください。
で、ここからはインタラクティブに進むので

    1. ``q''でライセンスを飛ばして``accept''(ライセンスを承諾)
    2. サポート外へのインストールであることを確認されるので``y''
    3. ドライバーを入れるか聞かれるので``y''
    4. 残り2つはひとまず``n''

というふうにやると、インストールが失敗する。末尾にエラーログ(``/tmp''以下の方)吐いたからそれ読んでねみたいなことが出力されるのでそれに従ってエラーログを読むと``/etc/modprobe.d/nvidia-installer-disable-nouveau.conf''吐いたみたいなことが書いてあるはず。このファイルの中でnouveauをブラックリストに登録しているので、次回起動時にはnouveauが起動しなくなる。ということでリブート。

# reboot

再起動後はやはりtty1に移動してログインしてからディスプレイマネージャを停止

# service gdm3 stop

先ほどと同じ要領でRUNファイルを実行(対話の応答も同じ)すると、今度は正常にインストールされるはず。もし何か問題がアレばログファイルを参照する。

CUDA Toolkitとかのインストール

 お待ちかねのCUDA本体です。作業はtty1のままですすめる。
まずはインストール先のディレクトリを作っておく

# mkdir /opt/local

``/usr/local''以下にインストールする場合は無視してOK
そして一度RUNファイルを実行。今度は

    1. ``q''でライセンスを飛ばして``accept''(ライセンスを承諾)
    2. サポート外へのインストールであることを確認されるので``y''
    3. ドライバーを入れるか聞かれるので``n''(もう入れている)
    4. Toolkitを入れるか聞かれるので``yes''
    5. Toolkitのインストール先を聞かれるので設定(/opt/local/cuda-6.0)
    6. ``/usr/local''にシンボリックリンクを置くか聞かれる(``/opt/local''へのインストールなので``n'')
    7. サンプルをインストールするか聞かれるので``y''
    8. サンプルのインストール先を聞かれるので設定(/opt/local/NVIDIA_CUDA-6.0_Samples)

でインストールされる。

リブートでいろいろ確認

 このままリブートしてしまいたい(実際自分はそうしてしまった)が、このままでは``/etc/X11/xrog.conf''が存在しないためGUIが立ち上がらない。なので

# nvidia-xconfig

でコンフィグファイルを作っておく。また、gccが4.6のままなので4.7に戻しておく。

# update-alternatives --config gcc
alternative gcc (/usr/bin/gcc を提供) には 2 個の選択肢があります。

  選択肢    パス            優先度  状態
------------------------------------------------------------
  0            /usr/bin/gcc-4.7   47        自動モード
* 1            /usr/bin/gcc-4.6   46        手動モード
  2            /usr/bin/gcc-4.7   47        手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 0
update-alternatives: /usr/bin/gcc (gcc) を提供するために 手動モード で /usr/bin/gcc-4.7 を使います

ここまでやってようやっと再起動。
再起動後にGUIが無事立ち上がればOK。
心配ならnvidia-settingsを立ち上げてドライバのバージョンが合っていることを確認してもいいかも。

パスの設定

 最後にパスを設定する。``~/.bashrc''に以下の行を追加

export PATH=/opt/local/cuda-6.0/bin:$PATH
export PKG_CONFIG_PATH=/opt/local/cuda-6.0/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/local/cuda-6.0/lib64:$LD_LIBRARY_PATH
感想

 nouveauのせいでてんやわんやだったがなんとかインストールできた。

参考

 特になかったと思う