1. ええ?なにこのポスト?
個人用のためwindows10・OpenSUSEのデュアルブートをセットアップしました。勉強してきたもの・落とし穴を整理した。お役に立てるとうれしい (*゚▽゚)ノ。
LinuxのDistroを選んだとき次の点を優先した:
- OSの安定さ
- エンタープライズバージョンのLinuxに似ていること
- PCに入っているNvidia RTX 2060 SuperでDeep Learningのモデルを訓練できること。
2. 始める前に知っておくとよかった
- OSインストールの基礎
- ハードディスクパテーションの理解
- 基礎的なターミナルコマンド
3. リソース
- UbuntuかOpenSUSEか
- 2021年5月からnvidiaドライバーが動かない理由.
- OpenSUSEのイメージ
- Balena Etcher
- OpenSUSEインストールチュートリアル
- linux x86_64 nvidiaドライバーのアーカイブ
- マニュアルでnvidiaをインストールする手順
- CUDA Toolkitアーカイブ。
4. じゃ、始めよう! OSを選ぶ
まずはOpenSUSEを選んだ理由を教えたいと思います。
データサイエンスのプロジェクトを開発したいので、CUDAにサポートされているLinuxのDistroを選ぶ必要があります。
すぐに「ダメだ」と思ったのは:
- Centos 2021/2022年からサポートが終わりそう
- WSL-Ubuntu もともとLinuxじゃない (でも最近ずいぶん改善されたので気をつけよう)
- Debian Ubuntuのおじいさん。安定している点はいいだけどパケージのアップデートも遅いし、設定も(普通のLinuxより更に)複雑な感じ、サーバーとしてすごく人気があるらしいですけど、ワークステーションとのOSとして疑問。
- RHEL、SLES エンタープライズ向けはいいけど、完全にサーバーとしてデザインされたものを個人用として使うのは大変。
また、デスクトップのインタフェースについて、Material Designが好きです。KDE-plasmaが絶対に使いたいです。残っているDistroの中、KDEが簡単に使えるのは:
- OpenSUSE
- Kubuntu (Ubuntu)
結局OpenSUSEを選んだ。理由は:
- エンタープライズLinuxのマーケットシェアが一番大きなのはRPM系のRed Hat Enterprise Linux (RHEL)とSUSE Linux Enterprise Server (SLES)。 RHEL・SLESに一番似ているのは、同じ会社がリリースした個人用向けのFedora(RHEL)とOpenSUSE(SLES)。
- Ubuntuが個人向けのOSとして、OSのアップデートがためずにだんだん出てくる。そのため、安定さはRPM系のDistroより悪い。
OpenSUSEもTumbleweed(ローリングアップデート)とLeap(定期的なアップデート)という二つのバージョンがある。OSの安定さを考えてLeapを選んだ。
5. OpenSUSEをインストール
事前にファームウェアのタイプを確認しておこう
OpenSUSEをインストールする前に、まずはファームウェアのタイプを確認しておこう。
Windowsの中、 win + r
で msinfo32
を実行し、システム一覧でBIOS Modeを確認する(最近のシステムは基本的にUEFiのはず)。
Processor AMD Ryzen 5 3600 6-Core Processor, 3600 Mhz, 6 Core(s), 12 Logical Processor(s)
BIOS Version/Date American Megatrends Inc. 3.50, 11/7/2019
SMBIOS Version 2.8
Embedded Controller Version 255.255
BIOS Mode UEFI **<ーーーーーーー これを確認**
BaseBoard Manufacturer Micro-Star International Co., Ltd
BaseBoard Product B450 TOMAHAWK MAX (MS-7C02)
BaseBoard Version 1.0
Windowsが入っているディスクにOpenSUSEを入れたい
win + r
で diskmgmt.msc
を実行する。
ハードディスクに40GBのフリースペースがあることを確認する。
(個人的に機械学習のプロジェクトの開発をしたいのでライブラリーのため200GBを用意しました。)
パテーションのサイズと番号も覚えておこう! OpenSUSEをインストールするとき、サイズ・順番でどちらがWindowsのパテーションがわかるから。
UEFIの準備
インストールする前に、UEFIのオプションを調整しましょう:
- RAIDを無効にする
- Fastbootを無効にする
- AHCIを許可する
以上の点は古い技術にかかわるので、最近のパソコンでオプションえないかもしれない。ただし、以下のオプションに注意する:
- Secure Bootを無効にする
- CSMブートを無効にする
- Fastbootを無効にする
- (Intel CPUの方のみ Optane MemoryとRapid Storage Technologyを無効にする)
- UEFI USBをブート順番の一番目にする
まずはOpenSUSEのイメージをダウンロードする。
次に、Balena Etcher のようソフトでBootable USBを作って、USBドライブでブートする。
インストール
OSインストール自身はそれほど難しくない。
一番注意してもらいたいのは ハードディスクのパテーション。(新しいハードディスクを買った方は無視してもよい)
デュアルブートの場合、Guided Setupを使う必要がある
Guide Setupの際に注意すべき点:
- LVMを基本的に使う必要がない
- Windowsのパテーションを変えない・削除しない
- ハードディスクの余裕があったら、SWAPをRAMと同じサイズにする
- ルーツパテーション
/
が残っているフリースペースを使う。 - WindowsのEFIパテーション(普通に一番目のパテーション)が /boot/efiにマウントされている
また、デスクトップの選択はKDE Plasma
にしよう。
これでタイムゾーン・ユーザーなどを設定したら完了。
6. nvidiaドライバーのインストール
nvidiaさんのドライバーをセットアップするのは、一番難しい。
なぜなら、簡単に言うとnvidiaのclosed sourcedソフトがLinuxとの相性が悪い。Linus Torvaldsがnvidiaに対するコメント(笑)
私もnvidiaドライバーのため1ヶ月にわたって様々なDistroを試してみた。その理由は、2021年の五月からの460.73以降のstable branchドライバーにバッグが入ってしまったから。さらに、stable branchとしてリリースされたので、ほとんどのdistroがこれを自動的インストールしてしまう。
このような問題の対応はやはりフォーラムの他にはない。次回は諦めずにフォーラムを探しましょう。
現時点の対策として、460.73またより古いnvidiaドライバーをインストールしましょう。
パケージマネージャーでインストールするのは避けましょう(バグが入っているバージョンがインストールされてしまうから)マニュアルでインストールする 必要があります。
大体次のステップ(すべてのコマンドはrootユーザーとして実行)になります:
snapper create
でシステムイメージを作る。zypper in -t pattern devel_C_C++ devel_kernel
でドライバーをビルドする必要がライブラリーをインストール。zypper rm drm-kmp-default
で矛盾があるパケージを削除。hwinfo --gfxcard | grep Model
とhwinfo --arch
でハードウエアを確認する。- nvidiaドライバーダウンロードする。ドライバーがセーブされている場所を覚えておく。
- 再起動して、そしてGRUB2(OSを選択する画面)で「e」を押してopenSUSEのカーネルをパラメータを渡す。
splash = ...
にnomodeset
と3
をつける。例:splash = silent quiet
がsplash = silent quiet nomodeset 3
になる。 ctrl + x
でブートしたら、ターミナルしかないブートに入る。sh /home/<username>/Downloads/<NVIDIA*.run>
でドライバーをインストールする。mkinitrd
でブートするときのinitial ramdiskをアップデートする。shutdown -r now
再起動。
再起動して普通にブートしたらよい。インストールを確認するため:
nvidia-smi
でドライバーとCUDAのバージョンを確認できます。nvidia-smi
でCUDAのバージョンが表示されていてもCUDAがインストールされているわけではありません!
CUDAをインストールする
nvidia-smi
で右上でCUDAのバージョンが表示されます。CUDA Toolkitをダウンロードします。
RPMパケージなので簡単に実行できます。
また、nvidiaドライバーはすでにインストールしましたので、スキップしてもよい
インストール後、次のお知らせを示します。
指示通り、環境変数を変えなければなりません。
そこで、~/.bash_profile
を開いて、次を入力する。
export PATH="$PATH:/usr/local/cuda-11.2/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-11.2/lib64"
7. 最後に
今回はOpenSUSE15.3 + nvidiaドライバー460.73.01 + CUDA Toolkit 12.1のインストールは完了。
次のポストでワークステーションが使えるようにソフト・ハードウエアのセットアップについて紹介したと思います。
インストール後、Linuxカーネルのアップデートを気をつけましょう。セキュリティアップデートでもグラフィックスドライバーを完全に壊すリスクがあります。
ご閲覧ありがとう!(´∇`)