Memo >> Ubuntu on MSI GS66 Stealth >> MSI GC66 Stealth(Ubuntu18.04)
MSI GC66 StealthにUbuntu18.04をインストール
MSI GC66は、比較的新しいパソコンなので、Ubuntuをインストールする場合には、20.04LTSを入れた方がいいのですが、開発案件によっては、まだUbuntu18.04+ROS melodicを使わなければいけない場合があります。
そこで、以前インストールしたUbuntu20.04のパーティションを縮小して、空き領域にUbuntu18.04をインストールしてみました。Ubuntu18.04は、デフォルトではRTX3070の利用が難しいのですが、何とか動作するようになったので、備忘録代わりに、書いていきます。
色々試してわかったのですが、私が所有しているNodePCの内臓RTX 3070は、CUDA10には対応していなかったようです。そのため、Tensorflow v1.Xの利用はCPUのみしか対応していませんでした。
パーティションの縮小
最近のLinuxでは、gpartedというツールを使うと比較的簡単にパーティションの操作ができます。Ubuntu20.04の環境にログインして、gpartedをインストールして起動します。
$ sudo apt install gparted $ sudo gparted
gpartedの使い方については、オフィシャルサイトでも解説されていますので、詳細は割愛しますが、簡単に言うと下記のとおりです。
- Ubuntu20.04のパーティション(私の場合は、/dev/nvme1n1p2でした)を選択
- 「Resize/Mode」ボタンを押下して操作ダイアログを表示
- GUI操作で縮小の操作
- 「Apply」ボタンを押下し実行
パーティションの縮小がエラーなく終了すれば、再起動してもとのUbuntuが起動できることを確認しましょう。
Ubuntu18.04のインストール
内臓SSDに空き領域ができましたので、Ubuntu18.04を通常通りインストールしていきます。Ubuntuのインストールは、USBメモリを使った方が起動が速いのであらかじめインストール用のUSBメモリを作成しておくことをお勧めします。インストール用USBメモリの作成方法はこちらを参照して下さい。
Ubuntu18.04をデフォルトインストールを行った場合、ネットワークデバイス(有線と無線)が動作しません。MSI GS66 では、Killer E3100/AX1675x のチップが使われており、カーネル 5.11.xで有線LAN、カーネル 5.13.xで無線LANがサポートされるようになっています。
そのためUbuntu18.04でネットワークに接続する場合には、USBの有線LANアダプタまたは無線LANアダプタを使ってください。
カーネルの更新
Ubuntu18.04をインストールして、各種パッケージをアップデートすると、カーネルは 5.4.Xになっていました。このカーネルでは、RTX3070をサポートしていないようなので、https://kernel.ubuntu.com/~kernel-ppa/mainline/から v5.11.5のカーネルをダウンロードして、インストールしていきます。
現在のカーネルのバージョンは、v5.17.1なのですが、これはUbuntu21.10以降でないとライブラリのバージョンが合わないので、うまくドライバが動作しないようです。(Ubuntu20.04でもダメでした)
また、v5.11.x系統のカーネルの最新版は、v5.11.22なのですが、こちらも試した結果動作しないようなので、v5.11.16にしておきます。このサイトにアクセスし、以下の4つのdebパッケージをダウンロードします。
- linux-headers-5.11.16-051116-generic_5.11.16-051116.202104211235_amd64.deb [2.3M]
- linux-headers-5.11.16-051116_5.11.16-051116.202104211235_all.deb [11M]
- linux-image-unsigned-5.11.16-051116-generic_5.11.16-051116.202104211235_amd64.deb [11M]
- linux-modules-5.11.16-051116-generic_5.11.16-051116.202104211235_amd64.deb [54M]
すべてのパッケージをダウンロードできたら、dpkgコマンドでインストールします。
sudo dpkg --install linux-*.deb
すべてのパッケージがインストールできたら、動作確認のため再起動します。
v5.11系のカーネルでは、どういうわけかタッチパッドが動作しませんでした。色々試したところv5.8.18であれば、タッチパッドもRTX3070が動作することがわかりましたので、現在は、v5.8.18で運用しています。ただし、このカーネルにも有線イーサネットが動かないという不具合がありますが、無線LANは動作するので良しとしています。
無線LANのドライバのインストール
インストールしたカーネル v5.11.16では、MSI GS66の内臓無線LANが動作しません。そのため、Ubuntu20.04で行ったようにファームウェアのインストールとバックポートドライバのインストールが必要です。
- Step 1
- 最初に、ソースコードの取得とビルドのためのソフトウェアをaptでインストールします
$ sudo apt update $ sudo apt-get install -y git $ sudo apt-get install -y build-essential
- Step 2
- 次に、Iwlwifi-Firmware.gitのリポジトリからファームウェアをダインロードしてインストールします
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git $ cd linux-firmware $ sudo cp iwlwifi-* /lib/firmware/ $ cd ..
- Step 3
- 最後に、Iwlwifi Driver のバックポートをソースコードからインストールします
$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git $ cd backport-iwlwifi $ sudo make defconfig-iwlwifi-public $ sudo make -j4 $ sudo make install
ここまでインストールすれば、ほぼ完了なのですが、起動時にドライバを追加するには、下のコマンドを実行します。
$ sudo update-initramfs -u
また、無線LANのデバイスは、SecureBootが有効になっている状態では動作しないようですので、あらかじめBIOSでSecureBootを無効にしておいてください。
無線LANのドライバのインストールが終われば、再起動します。
Nvidiaのドライバのインストール
Ubutnu18.04+kernelv5.11.16で何とか動作するようになったら、内臓GPU(RTX3070)のドライバのインストールを行っていきます。
nvidiaドライバのバージョンをチェック
対応するnvidiaドライバのチェックを行います。対応するNvidiaのドライバの確認は、ubuntu-driversコマンドで確認することができます。
$ ubuntu-drivers devices WARNING:root:_pkg_get_support nvidia-driver-510-server: package has invalid Support PBheader, cannot determine support level == /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 == modalias : pci:v000010DEd0000249Dsv00001462sd000012F5bc03sc00i00 vendor : NVIDIA Corporation driver : nvidia-driver-495 - third-party non-free driver : nvidia-driver-460 - third-party non-free driver : nvidia-driver-465 - third-party non-free driver : nvidia-driver-510 - third-party non-free recommended driver : nvidia-driver-470-server - distro non-free driver : nvidia-driver-510-server - distro non-free driver : nvidia-driver-470 - third-party non-free driver : xserver-xorg-video-nouveau - distro free builtin
通常は、recommended がついているものをインストールしますが、GS66 の場合には最新版は510でしたので、nvidia-driver-510をインストールします。
nvidiaドライバのインストール
Nvidiaのドライバは、PPAに正式版が置かれていますので、リポジトリの追加とドライバのインストールを行います。
$ sudo add-apt-repository ppa:graphics-drivers $ sudo update $ sudo apt install nvidia-driver-510
これでnvidiaのドライバがインストールされたと思いますので、再起動して動作確認を行ってください。動作確認は、nvidia-smiコマンドを実行し、ドライバの情報が表示されればインストールは完了です。
$ nvidia-smi Sat Apr 2 16:51:27 2022 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... On | 00000000:01:00.0 On | N/A | | N/A 48C P8 14W / N/A | 163MiB / 8192MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 1118 G /usr/lib/xorg/Xorg 87MiB | | 0 N/A N/A 1233 G /usr/bin/gnome-shell 73MiB | +-----------------------------------------------------------------------------+
CUDAライブラリのインストール
次にCUDAライブラリをインストールしていきます。Ubuntu18.04では、まだ、Python2.7がデフォルトで使用されており、Tensorflowも1.4.0のようです。Tensorflow-1.4.0では、CUDAライブラリとして。version 10.0が必要でしたので、それをインストールしていきます。
$ wget "https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1804-10-0-local- $ 10.0.130-410.48_1.0-1_amd64" $ mv cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64 cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb $ sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb $ sudo apt-key add /var/cuda-repo-10-0-local-10.0.130-410.48/7fa2af80.pub $ sudo apt update $ sudo apt install cuda-10-0
cuDNNライブラリのインストール
Ubuntu18.04のTensorflowでは、cuDNNライブラリとして version.7 になっていました。下のリンクの "Download cuDNN v7.6.5 (November 5th, 2019), for CUDA 10.0"からruntimeまたはdevelop libraryをダウンロードします。ダウンロードには、ユーザ登録とログインが必要になりますので、事前にユーザ登録をしておきます。
私の場合は、runtime libraryを選択しました。
- libcudnn7_7.6.5.32-1+cuda10.0_amd64.deb
ダウンロードが終了したら、dpkgコマンドでインストールします。
$ sudo dpkg --install libcudnn7_7.6.5.32-1+cuda10.0_amd64.deb
以上でCUDA関連のライブラリがインストールできましたので、念のため再起動して動作を確認します。
Tensorflowのインストール
CUDAライブラリのインストールが終われば、Tensorflowをインストールしていきます。Tensorflowは、pipコマンドでインストールできますので、最初にpipをインストールします。
$ sudo apt install python-pip
次に、pipでtensorflow-gpuをインストールします。
$ pip install tensorflow-gpu
一応、これでTensorflowのインストールができましたが、実行するとエラーがでます。これは、protobufのバージョンが新しすぎるからのようです。正常に実行するには、version 3.17.3が必要のようですので、pipコマンドでインストールします。
$ pip install protobuf==3.17.3
これでインストールは終了ですが、念のため動作確認を行います。
$ python Python 2.7.17 (default, Mar 18 2022, 13:21:42) [GCC 7.5.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from tensorflow.python.client import device_lib >>> device_lib.list_local_devices()
これでダイナミックライブラリがロードできていれば、正常に動作していると思います。
最後に、深層学習の経過のグラフ表示が必要な場合には、matplotlibをインストールしておく方が良いと思います。matplotlibもpipコマンドでインストールすることができます。
$ pip install matplotlib
以上でUbuntu18.04で運用できるようになります。
資料