グループポリシーを利用してデバイスのインストールを制御する

Windows10のカーネルDMA保護 が有効かどうか、[ファイル名を指定して実行]から msinfo32 を使って調べたところ、[無効]だった(マザーボードが古いからしょうがないね)ので次善策としてグループポリシーによるデバイスインストール制御について設定したのでメモ。

BitLocker に対する 1394 DMA と Thunderbolt DMA の脅威を軽減するための SBP-2 ドライバーと Thunderbolt コントローラーのブロック

[Windows]+[R] で [ファイル名を指定して実行]から gpedit.msc と入力して[Enter]

グループポリシーエディターを起動します。

[コンピューターの構成]-[管理用テンプレート]-[システム]-[デバイスのインストール]-[デバイスのインストールの制限] から [他のポリシー設定で記述されていないデバイスのインストールを禁止する] を[有効]にします。

一方、[Windows]+[X] でショートカットメニューから[デバイスマネージャー]を起動して、許可するデバイスのハードウェアを右クリック、[プロパティ]から[詳細]タブの[ハードウェアID] を表示して[コピー]します。

同じくグループポリシーの[コンピューターの構成]-[管理用テンプレート]-[システム]-[デバイスのインストール]-[デバイスのインストールの制限] の中の[これらのデバイスIDと一致するデバイスのインストールを許可する]を [有効] にして、先ほどコピーした[ハードウェアID] をリストに登録します。

リストにないハードウェアドライバーをデバイスマネージャーからアンインストールしてみます。

機器を再び、取り付けるとシステムから警告が表示されドライバーのインストールが制限されているのが確認できました。

Thunderbolt のID「 PCI\CC_0C0A 」を[これらのデバイスIDと一致するデバイスのインストールを禁止する]一覧に登録して作業終了です。

参考URL: グループ ポリシーを使用してデバイスのインストールを制御するためのステップバイステップ ガイド(英語)

ESXi6.7+CentOS7+GPUパススルー+cuda11.0インストールしてみる

テーマ的には新鮮味のないエントリーですが、nvidia-xconfigするとCentOS7のXウィンドウズが起動しないという事実を突き止めることができたので備忘録としてメモ。

環境要件
ハードウェア富士通 TX1310 M3
仮想化ESXi6.7 Update3
グラフィックボードNVIDIA GTX1050Ti
ゲストOSCentOS7.8
ドライバーNVIDIA-Linux-x86_64-450.51.run
CUDACUDA 11.0.3

Yahoo!ショッピングで購入した中古のNVIDIA GeForce GTX1050Ti

補助電源を必要とせず、富士通 TX1310 M3のコンパクトな筐体に収まるショート基盤のPalit GeForce GTX1050Ti です。マザーボードに差してDisplay Portから変換ケーブルでHDMIディスプレイに接続すると何もせずに映りましたが、今回は ESXi のゲストOSにコンソールでログインしてXウィンドウを起動してnvidia-smi コマンドが通ることを目標にしました。

1.ESXi のGPUパススルー設定

グラフィックボードをVMから認識できるようにする設定をしていきます。左ペインの[ホスト]-[管理]をクリックして[ハードウェア]-[PCIデバイス]-[NVIDIA Corporation GP107[GeForce GTX 1050Ti]] を選択して[パススルーの切り替え]をクリック。同様にAudio デバイスもパススルーして再起動します。

2.VMの新規作成

「ML Server」という名前でCentOS7.isoからEFI起動オプションのVMを新規作成します。

仮想ハードウェア 要件
CPU 4
メモリ 16GB(すべてのゲストメモリを予約(すべてロック)
ハードディスク 100GB

[仮想マシンオプション]から[起動オプション]-[ファームウェア]-[EFI]を選択。

ゲストOSを起動してインストーラーを開始。今回は「サーバー(GUI使用)」をベースとします。

ここからはCentOS での作業となります。

3.nouveau を無効にする

GUI起動したらroot からCUIログインに変更して再起動します。

# systemctl set-default multi-user.target

/etc/modprobe.d/modprobe.conf と/etc/modprobe.d/blacklist-nouveau.conf ファイルでOS起動と同時に立ち上がる標準のグラフィックドライバー nouveau をブラックリストに登録します。

# vi /etc/modprobe.d/modprobe.conf

blacklist nouveau

# vi /etc/modprobe.d/blacklist-nouveau.conf

options nouveau modeset=0
blacklist nouveau

yum で最新のカーネルに更新してnouveau ドライバーを無効にした起動イメージを作ります。

# yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) 

CentOS によるdracut では明示的に–omit-drivers nouveau しないとだめでした。

# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
# dracut --force --omit-drivers nouveau /boot/initramfs-$(uname -r).img $(uname -r)

いったん、VMをシャットダウンしてPCIデバイスとしてグラフィックボードを追加します。

Audioデバイスもついでに追加して[仮想マシンオプション]-[詳細]-[構成の編集]から下記設定をします。(何故だかは分かりません。)

hypervisor.cpuid.v0 FALSE

4.VMを起動→CUDAをインストール

CUDAをインストールするため、再びのCentOSでの作業となります。nouveauがロードされていないことを確認します。

$ lsmod | grep nouveau
何も表示されなければOK
$ lspci | grep -i nvidia
13:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) 13:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)

つづいてCUDAのコンパイルに必要なgcc gcc-c++ dkms などをyum で一気に揃えます。

# yum install epel-release
epelリポジトリを導入
# yum install --enablerepo=epel dkms
# yum install pciutils gcc gcc-c++ libglvnd libglvnd-devel
# yum install centos-release-scl
scl(Software Collection) を導入
# yum install devtoolset-9
# yum install llvm-toolset-7
rhel ツールセットを導入
# scl enable devtoolset-9 bash
# scl enable llvm-toolset-7 bash

あらかじめhttps://developer.nvidia.com/cuda-toolkit からwgetでクライアントにダウンロードしたcuda_11.0.3_450.51.06_Linux.run ファイルをscp で転送して実行権限を与えて実行します。

$ wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_Linux.run
$ chmod 705 ./cuda_11.0.3_450.51.06_Linux.run
$ sudo sh ./cuda_11.0.3_450.51.06_Linux.run

cudaインストールのついでにグラフィックドライバーもインストールできる優れものなのですが、nvidia-xconfig をオプションで有効にするとXウィンドウズが 「no screens found」となり起動しません。(/var/log/Xorg.0.log を良く読む。)最終的にはnvidia-uninstallしてドライバーのアンインストールが必要でした。このあたりの細かい設定は再調査が待たれます。ここでは、drm-kernelオプションと共に無効にしてインストールしました。

パスを登録してVMを再起動します。

$ vi .bashrc
export PATH=/usr/local/cuda-11.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
$ source ~/.bashrc
$ echo $PATH
パス確認
# shutdown -r now

nvidia-smi と入力すると

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

エラーでドライバーが認識されていない模様。NVIDIA公式から単体でNVIDIA-Linux-x86_64-450.51.runをダウンロード、インストール、再起動すると良かったようです。

$ startx

# nvidia-smi が通りました。こんどは、anaconda, cuDNN, TensorFlow インストールしたいですね。

参考URL

インストールガイド CentOS 7.5 minimal with MATE & Nvidia CUDA 9.2 – 脱N00Bしたいエンジニア

ESXi6.7でGPUパススルーしてCUDA10とChainer4.4を使ってみる – Qiita

OS付属コンパイラが古すぎて困った人へ | HPCシステムズ Tech Blog

slurm+mpich+cudaの設定(CentOS7) – 株式会社バイオモデリングリサーチ

UEFI アップデート

この辺にIntel の第8世代Core のMeltdown, Spectre 脆弱性対策の UEFIアップデート、来てるらしいっすよ?

ということで早速、Asrock ホームページからInstant Flash をダウンロード。

日付は、2019/4/9 バージョンは4.00 (2019/5/7現在最新)のものをダウンロードして解凍。

エクスプローラからUSBドライブにコピーしようとしたところ、権限エラーがでました。

ドライブアイコンを右クリックの[プロパティ] からアクセス権を[フルアクセス] にしても拒否されます。

そういえば以前、グループポリシーエディタから[リムーバルディスク] の書き込み、実行を拒否設定していたことを思い出しました。設定を解除してPCを再起動、再びトライしてみると上手くコピーできました。

フラッシュROM をコピーしたUSBドライブを差してシステム再起動。

[F2] でUEFI に入りフラッシュROM を読み込むと、2回ほど自動で再起動しました。

再起動後、再び[F2] からUEFIに入りバージョンチェック。Z370 Pro4 P4.00 にアップデートされていることを確認。

作業終了。最後までお読みいただき、ありがとうございました。

SDカードを差し込む向き

デスクトップのSDカードスロットが硬くて入らないので壊れたのかと思いました。(挨拶

くだんの理由で、デスクトップ当機のSDカードの差し込みはノートパソコンの接触端子の向きとは逆なんです。金属端子は上向きが正解の不思議。

また侮れないのは、確定申告を e-TAX でするときに必要なICカードリーダライタの向きです。これも逆でしたね。

接触型 ICカードリーダライタ  ACR39-NTTCom ダウンロード

からドライバーをダウンロード、インストールしたはいいけど、ICカードを読み取ってくれない。ソフトウェアにJava が必要だとのこと。(マニュアルはちゃんと読もうね!)

JRE8をダウンロード、インストールして、カード挿入口に磁気テープを上向きにして差し込んだところ認識しました。

 

Radeon HD6450のインストール

ASUSのフルHDディスプレイをHDMIでCentOS6.9 に接続するため、先週注文したグラフィックボードが届きました。早速、開封。

まずは、AMDのサイトhttp://support.amd.com/us/gpudownload/Pages/index.aspx からamd-catalyst-15.9-linux-installer-15.201.1151-x86.x86_64.zip ドライバファイルをダウンロード、解凍してからWinSCPでサーバーに転送。

次に、/boot/grub/grub.conf の起動オプションに nouveau.modeset=0 を追加してオンボードのLinux グラフィックドライバを無効にしてシャットダウン。

 

PCI Express(x8) スロットにHD6450グラフィックボードを取り付けました。

シングルユーザーモードから init 3 でランレベル3でroot でログイン。(最初、パスワードをハネられログインできず焦りましたが、http://d.hatena.ne.jp/yohei-a/20081116/1226786415 を参考に/etc/pam.d/login に以下の行を追加して解決。)

session required /lib64/security/pam_limits.so

その他、適宜必要なパッケージをダウンロード、インストール。kernel-devel など。詳細は以下のサイトを参考にしました。(libX11.so.6, libXext.so.6 はyum からrpmインストールしておくと良いかもしれません。)

CentOS 6.0 でのマルチモニタ設定 その1 (CentOS 6.0 64bit)

以下のコマンドでドライバインストールのダイアログが始まります。

# chmod a+x AMD-Catalyst-15.9-Linux-installer-15.201.1151-x86.x86_64.run
# ./AMD-Catalyst-15.9-Linux-installer-15.201.1151-x86.x86_64.run

ダイアログを進めて、ドライバインストールが完了しました。再起動後、BIOSに入るため、[F2]キーを押してビデオドライバの設定をします。

自機のBIOSでは、[Advanced]-[Onboard Device Configuration]-[Onboard Video] の項目を[Auto] から[Enabled]に。[Primary Video] を[Onboard] から [External Video]にして設定を保存、再起動。するとフルHDで無事、Xウィンドウが起動しました。

Bluetoothドライバー更新

VAIOのWindows7でBluetoothマウスが頻繁に切れるのでドライバーを最新のバージョンに更新。 Bluetooth  Broadcom Dell Travel Mouse WM524のペアリングコードって0000だったんですね。

ついでに、Creative Inspire s2 Wireless Bluetooth スピーカーの接続の確立エラーも治りました。

NICドライバーの更新

Download Network Adapter Driver for PCI-E Gigabit Network Connections under Linux*

CentOS6 のNICドライバーの更新をIntel ホームページからダウンロード。(2015年10月4日現在最新版は、e1000e-3.2.4.2.tar.gz)

linuxでintelのギガビットイーサカードを使いたい。 ~e1000とe1000eドライバを更新する を参考に解凍。

# tar zxvf e1000e-3.2.4.2.tar.gz
# cd /home/gusachan/e1000e-3.2.4.2/src
# make install

make install したところ、Kernel header files の場所が違うと怒られました。

Makefile:67: *** Kernel header files not in any of the expected locations.
Makefile:68: *** Install the appropriate kernel development package, e.g.
Makefile:69: *** kernel-devel, for building kernel modules and try again.  中止.

kernel-develが見つからずrpmbuildがエラーになる  を参考に、カーネルバージョン確認。 Kernel-devel をインストールしてmake install

# uname -a
Linux stuffy.mydns.jp 2.6.32-573.7.1.el6.x86_64
# yum install kernel-devel-2.6.32-573.7.1.el6
# make install

して更新成功しました。