GTX 1060でUbuntu 24.04にCUDA 12.4を入れる実録

GTX 1060 + Ubuntu 24.04 で CUDA 12.4 を動かす方法

事の始まり

GTX 1060 のマシンで nvidia-smi を確認すると CUDA 12.4 まで対応していました。
しかし、NVIDIA公式の対応表を見ると、Linuxは Ubuntu 22.04まで の記載しかありません。
ところが、このマシンは Ubuntu 24.04 を使っているのです。

普通なら「動かないのでは?」と思いますが、実はUbuntu 24.04でも問題なく動かせます。

現状は12.0を使用しており、Ubuntuの標準のインストール方法です。

背景と理由

  • NVIDIA公式ページの対応OS一覧は、動作確認済みOSのみ を掲載している。
  • GTX 1060(Pascal世代)はCUDA 12.4までサポート。
  • Ubuntu 24.04でも、カーネルとX.OrgのABIが合えば動作可能。

セットアップ手順(Ubuntu 24.04 + GTX 1060 + CUDA 12.4)

1. 既存ドライバの削除(必要な場合)

過去に.runファイルで手動インストールしている場合はクリーンにします。

sudo apt purge 'nvidia-*' 'cuda*'
sudo apt autoremove --purge
sudo reboot

2. NVIDIAドライバのインストール(Ubuntu公式)

Ubuntu公式リポジトリの 550系ドライバ はGTX 1060でも動作し、CUDA 12.4まで対応。

sudo apt update
sudo apt install nvidia-driver-550
sudo reboot

しかし、以下のエラーが発生しました。

パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています… 完了
状態情報を読み取っています… 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
nvidia-driver-550 : 依存: libnvidia-compute-550 (= 550.163.01-0ubuntu0.24.04.1) しかし、550.163.01-0ubuntu1 はインストールされようとしています
依存: libnvidia-decode-550 (= 550.163.01-0ubuntu0.24.04.1) しかし、インストールされようとしていません
依存: libnvidia-encode-550 (= 550.163.01-0ubuntu0.24.04.1) しかし、インストールされようとしていません
推奨: nvidia-settings しかし、インストールされようとしていません
推奨: nvidia-prime (>= 0.8) しかし、インストールされようとしていません
推奨: libnvidia-compute-550:i386 (= 550.163.01-0ubuntu0.24.04.1) しかし、インストールすることができません
推奨: libnvidia-decode-550:i386 (= 550.163.01-0ubuntu0.24.04.1) しかし、インストールすることができません
推奨: libnvidia-encode-550:i386 (= 550.163.01-0ubuntu0.24.04.1) しかし、インストールすることができません
推奨: libnvidia-fbc1-550:i386 (= 550.163.01-0ubuntu0.24.04.1) しかし、インストールすることができません
推奨: libnvidia-gl-550:i386 (= 550.163.01-0ubuntu0.24.04.1) しかし、インストールすることができません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

このエラーの原因

  • 一部の libnvidia-* パッケージが 素のnoble版 (…0ubuntu1) でインストールされており、
  • 他は noble-updates版 (…0ubuntu0.24.04.1) が候補になっているため、バージョンが食い違って依存解決できない。

解決方法(実際に成功した手順)

1) 破損状態の修復とHold解除

sudo apt -f install
apt-mark showhold
# 出力に nvidia 関連があれば解除
sudo apt-mark unhold libnvidia-compute-550 libnvidia-decode-550 libnvidia-encode-550 nvidia-driver-550 nvidia-utils-550

2) graphics-drivers PPAを追加

sudo add-apt-repository -y ppa:graphics-drivers/ppa
sudo apt update

3) バージョンを揃えて一括インストール

# 変なバージョンだけ一旦外す
sudo apt remove libnvidia-compute-550

# そろえたバージョンで改めて入れる
sudo apt install \
libnvidia-compute-550=550.163.01-0ubuntu0.24.04.1 \
libnvidia-decode-550=550.163.01-0ubuntu0.24.04.1 \
libnvidia-encode-550=550.163.01-0ubuntu0.24.04.1 \
nvidia-utils-550=550.163.01-0ubuntu0.24.04.1 \
nvidia-kernel-common-550=550.163.01-0ubuntu0.24.04.1 \
nvidia-dkms-550=550.163.01-0ubuntu0.24.04.1 \
nvidia-driver-550=550.163.01-0ubuntu0.24.04.1

ポイント:

  • すべて同じビルド番号 550.163.01-0ubuntu0.24.04.1 を明示。
  • 他の依存パッケージ(例: libnvidia-gl-550)が要求されたら同じバージョンを追加指定。

4) 再起動&確認

sudo reboot
# 起動後
nvidia-smi

CUDA Version: 12.4 と表示されればOK。

3. CUDA Toolkit 12.4 のインストール(22.04用を流用)

3-1. CUDAレポジトリ登録

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

もし、エラーが出た時の回避は2通り。

1) Toolkit 本体だけインストール(Nsight抜き)

cuda-toolkit-12-4 は便利メタですが、Nsight類まで引っ張るので24.04だと詰みます。
必要なコンパイラ&ライブラリだけを個別に入れればOKです(nvcc も入ります)。

# まずレポジトリ登録(やってなければ)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update

# Toolkitの主要部のみ(Nsightを含まない分割パッケージ)
sudo apt install --no-install-recommends \
cuda-compiler-12-4 \
cuda-nvcc-12-4 \
cuda-cudart-12-4 \
cuda-driver-dev-12-4 \
cuda-libraries-12-4 \
cuda-libraries-dev-12-4 \
cuda-cupti-12-4

環境変数(未設定なら):

echo 'export PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

動作確認:

nvcc --version

これで release 12.4 が出ればOK。
サンプルは不要なら入れずでOK(必要ならGitHubから個別取得で十分)。

サンプルはGitHubから取得してビルド

# 12.4 タグのサンプルを取得(CMake対応)
git clone --branch v12.4 https://github.com/NVIDIA/cuda-samples.git
cd cuda-samples/Samples/1_Utilities/deviceQuery

# 依存ツール(未導入なら)
sudo apt install -y build-essential cmake

# CMakeでビルド
cmake -S . -B build
cmake --build build -j

# 実行
./build/bin/linux/release/deviceQuery

Result = PASS が出ればOK。
(サンプルは今やGitHubが公式の入手先です。APTで入らないのは仕様です。)

2)(やや力技):libtinfo5 を入れてメタを通す

どうしても cuda-toolkit-12-4 メタで入れたい場合は、Ubuntu 22.04(jammy)の libtinfo5 を一時的に取り込む手があります。
ただし 異なるリリース混在なので自己責任。終わったら jammy エントリは削除推奨。

# pinを作ってlibtinfo5だけjammyから取る(ほかは触らない)
cat <<'EOF' | sudo tee /etc/apt/preferences.d/libtinfo5-from-jammy
Package: libtinfo5
Pin: release n=jammy
Pin-Priority: 700
EOF

# 一時的に jammy を追加
echo "deb http://archive.ubuntu.com/ubuntu jammy main universe" | sudo tee /etc/apt/sources.list.d/jammy-temp.list
sudo apt update

# 必要な旧ライブラリを取得
sudo apt install libtinfo5

# もう不要なので jammy を外す
sudo rm /etc/apt/sources.list.d/jammy-temp.list
sudo apt update

その上で、

sudo apt install --no-install-recommends cuda-toolkit-12-4

これで通ればOK。通ったあともシンプルに運用したいなら、1)に切り替えてNsightは使わないのが無難です。

3-2. どうしても meta(cuda-toolkit-12-4)で入れたい場合

libtinfo5jammy(22.04)から一時的にだけ 取ってきます(自己責任)。

# pin を作成して libtinfo5 だけ jammy を許可
cat <<'EOF' | sudo tee /etc/apt/preferences.d/libtinfo5-from-jammy
Package: libtinfo5
Pin: release n=jammy
Pin-Priority: 700
EOF

# 一時的に jammy のエントリを追加
echo "deb http://archive.ubuntu.com/ubuntu jammy main universe" | sudo tee /etc/apt/sources.list.d/jammy-temp.list
sudo apt update

# 旧ライブラリを導入
sudo apt install -y libtinfo5

# もう不要なので jammy を外す
sudo rm /etc/apt/sources.list.d/jammy-temp.list
sudo apt update

# これで meta が通る
sudo apt install --no-install-recommends cuda-toolkit-12-4

どっちが良い?

  • 1)が安全・シンプル。深層学習用途や自作CUDAでもこれで十分です。
  • 2)は “metaで一発入れたい” こだわりがある方向け。将来のアップデートで再び依存に悩む可能性はあります。

まとめ

  • GTX 1060はCUDA 12.4までサポートされており、Ubuntu 24.04でも動作可能。
  • ドライバはUbuntu公式の550系を使用するのが安定。
  • CUDA ToolkitはUbuntu 22.04用パッケージで問題なくインストール可能。
  • カーネル更新にも対応できる構成。
タイトルとURLをコピーしました