Ubuntu on MSI GS66 Stealth
Simple Wiki Based Contents Management System
Memo >> Ubuntu on MSI GS66 Stealth

MSI GS66 StealthにUbuntu20.04をインストールしてみた

MSI GS66 Stealth(以下、MSIノートPCと書いていきます)を入手したので、Ubuntu20.04をインストールしてみました。あまり推奨できませんが、18.04をインストールする場合には、こちらを参照してください。
MSIノートPCには、Nvidia RTX3070が搭載されているのでCUDAをインストールして深層学習ができるようにしていきたいと思います。

Ubuntu20.04をデフォルト設定でインストール

Ubuntu20.04は、オフィシャルサイトからISOイメージをダインロードします。
MSIノートPCのBIOSの設定では、USB CD/DVD, HDD, USB HDD, LANからの起動ができるようですが、USBメモリに焼いたISOイメージでは、起動できませんでしたので、DVDにISOイメージを焼いて、USB DVDを使って起動します。
無事に起動できたら、Ubuntuのインストールを実行していきましょう。MSIノートPCの内臓SSDは1TBあるので、パーティションを分割してインストールしてもいいのですが、今回は、2つ目のSSDも搭載しましたので、こちらにインストールしていきます。Ubuntu自体のインストールは、デフォルトの設定でインストールすれば終了です。

ネットワークドライバのインストール

Ubuntu20.04をデフォルト設定でインストールして再起動してみたのですが、ネットワークアダプタが全く見当たりません。しかたがないので、手元にあるUSB-LANアダプタを接続して、ソフトウェアのアップデートを行っていきます。
ソフトウェアのアップデート後に再起動すると、有線LANのみはドライバがインストールされていました。しかし、無線LANは認識していないようですので、無線LANのドライバのインストールを行っていきます。
2022/03/10現在では、UpdateするだけでWifiも正常に使えるようになっています。(kernel-5.13.x) ただし、このカーネルには少し問題があり、nvmeのSSDが見えなくなる場合があります。その場合には、grubが正常にアップデートできない場合があるので注意が必要です。kernel-5.11系を使う場合には、Wifiのドライバを下記のようにインストールする必要があります。

無線LANドライバのインストール

MSIノートPCの無線LANは、Windows上の設定で調べると、
Intel Corporation
Killer(R) Wi-Fi 6E AX1675x 160MHz
Wireless Network Adaptor (210NGW) #2
となっています。このデバイスに関して調べてみるとIntelのサポートページに下のような記述があります。https://www.intel.com/content/www/us/en/support/articles/000058909/wireless/intel-wireless-products.html
このページを参照すると、Wifiを動かすには、
  1. aptコマンドでインストール
  2. Githubに公開されているファームウェアとソースコードからドライバをビルドする
の2つの方法が記載されています。最初にaptコマンドを使ってインストールしたところ、正常に動作しませんでしたので、2つ目の方法を書いておきます。
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
これで、Wifiのドライバのインストールは終了なのですが、MSIノートPCのデフォルト設定では、SecureBootが有効になっており、ドライバがロードできません。SecureBoot対応は後述しますが、ドライバの動作テストだけであれば、BIOS画面(起動時にDeleteを押下していれば、BIOSに移行します)で、SecureBootをDisableにしてください。
ここまで設定が終われば、再起動後Wifiドライバがインストールされていると思います、

Nvidiaのドライバのインストール

つぎにNvidiaのドライバをインストールしていきます。Nvidiaのドライバは、オフィシャルサイトからダウンロードした方がいいと思うのですが、今回は、aptコマンドでインストールしました。WifiのドライバインストールでSecureBootをDisableしていると思いますので、この状態で作業を行います。
まず最初、どのドライバが良いのかをubuntu-driversコマンドで調査します。
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd0000249Dsv00001462sd000012Fbc03sc00i00
vendor   : NVIDIA Corporatin
driver   : nvidia-driver-460 - distro non-free
driver   : nvidia-driver-495 - distro non-free
driver   : nvidia-driver-460-server - distro non-free
driver   : nvidia-driver-470 - distro non-free recommended
driver   : nvidia-driver-470-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin
と出てきましたので、recommendであるnvidia-driver-470をインストールします。
kernel-5.13.xの場合には、nvidia-driver-510が推奨になりますので、そちらをインストールしましょう
$ sudo apt install -y nvidia-driver-470
以上で、ドライバのインストールは完了です。再起動して、nvidia-smiコマンドを実行して、GPUが認識されていることを確認してください。
SecureBootをEnableにしていると、GPUにアクセスできないようです。これを解決するには、下のSecureブートへの対応の作業が必要です。SecureBootがDisableのままで良い場合は、ここでドライバのインストール作業は終了です。

Secureブートへの対応

最近のPCではほとんどがSecureBoot機能が搭載されており、デフォルトでEnableになっています。特にWindows11では、セキュリティの要件が厳しくなっていますので、できれば常時SecureBootをEnableにしておきたいものです。
SecureBootをEnableにしておくと、署名なしのドライバモジュールをインストールできないなど、Linuxで使うには多少の弊害があるのですが、自分でドライバモジュールに署名してしまえば大丈夫です。
LinuxのドライバをSecureBootがEnableの状態で使う方法は、ここに紹介されていましたので、この通りに作業を行います。
再起動後は、UEFIでMOK managementの画面がでてきますので、下記のように作業を行います。
  • 開始するには、いずれかのキーを押します。
  • [Perform MOK management]画面が出たら、[Enroll MOK]を選択します。
  • 次に[Enroll MOK]画面に遷移後、[View key 0]を選択し、ENTERを押下します。
  • [Enroll the key(s)?]画面で[Yes]を選択するとパスワード入力ダイアログがでますので、設定したパスワードを入力します。
  • 最後に再起動すれば完了です。

Cudaライブラリのインストール

Ubuntu20.04のインストールが終了したので、深層学習のプログラム作成のためにcudaをインストールしていきます。ここでは、Linuxでの環境整備ですので、Windows10で環境整備を行う場合には、こちらを参照してください。
CUDAライブラリのインストール方法については、NVIDIA DEVELOPERサイトに記載されています。現在のCUDA Toolkitのバージョンは、11.6になっており、インターネット経由で簡単にインストールすることができます。
ネットワーク経由でインストールする場合には、以下のように実行します。
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
$ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
$ sudo apt-get update
$ sudo apt-get -y install cuda
インストールが終われば、再起動して nvidia-smi コマンドを実行して cudaライブラリがインストールされていることを確認します。

cuDNNのインストール

次に、cuDNNのライブラリをインストールします。cuDNNは、別に配布されており、NVIDIA DEVELOPERに参加しなければダウンロードすることはできませんので、素直に登録しましょう。
NVIDIA DEVELOPERにログイン後は、cuDNNのダウンロードサイトに行くことができます。
ダウンロードサイトに移動後は、cuDNN Software License AgreementにAgreeすれば、ダウンロード用のリンクが表示されます。
現在は、Ubuntu18.04とUbuntu20.04用のライブラリ(v8.3.3)を入手することができます。以前のバージョンのライブラリが必要な場合には、 "Archived cuDNN Release"から取得することができます。
必要なdebパッケージをダウンロード後、インストールを実施します。
以上でCUDA関連のライブラリの準備完了です。

Tensorflowのインストール

深層学習のプログラムを行う場合に、様々な開発環境がありますが、今回は仕事でも使っているTensorflowをインストールしていきたいと思います。Tensorflowは、pipコマンドで簡単にインストールすることができます。
$ sudo apt install python3-pip
$ pip install tensorflow-gpu
で終了です。深層学習の経過のグラフ表示が必要な場合には、matplotlibをインストールしておく方が良いと思います。matplotlibもpipコマンドでインストールすることができます。
$ pip install matplotlib
以上で、MSI GS66 Steathへのインストールは完了です。