ネイティブLinux環境(デュアルブート)を楽しむ
要旨
- VirtualBoxやWSL2などの仮想環境において、RAMやCPUについては7割程度のリソースを使用できます(計算速度はネイティブ環境より若干遅い程度)
- しかし、仮想環境でのGPUのグラフィックは、機能・速度共に大幅に制限されます
- デュアルブートにすると、マシンのハードウェアに直接アクセスできるので、上記制限を回避できます
- UEFI/GPTが標準になってから10年経過し、デュアルブートにより起動不能となるリスクが減りました(/boot/efiを壊してもWindowsのインストールメディアから修復することができます)
- 使用したハードウェア環境
デスクトップPC: Core i7-12700K, RAM 128GB, NVIDIA GeForce RTX 3060
ノートPC: Core i7-10750H, RAM 64GB, NVIDIA GeForce RTX 2060とIntel内蔵グラフィック
WindowsとDebian 13のデュアルブート
Linuxディストリビューションの選択
デスクトップ環境用Linuxディストリビューションとして、Ubuntuが最も使われていますが、商業的な姿勢(例えば:Snapの強要、Ubuntu Proの広告)への反発から除外しました。Ubuntuからもっと自由なディストロへ: Debian, Linux Mint, RHEL互換
素のGNOMEデスクトップで、比較的新しいGCCとLinux Kernelを採用したメジャーなディストリビューションはDebian 13とAlma/Rocky 10 (RHEL-10互換)があります。
リポジトリのソフトウェアの豊富さ、簡略化したコマンドが使用可能なDebian 13としました。
パッケージ | Debian 13 | Debian 12 | LinuxMint 22 | Alma/Rock 9 | Alma/Rocky 10 |
---|---|---|---|---|---|
GCC | 14 | 12 | 13 | 11 | 14 |
Linux | 6.12 | 6.1 | 6.8(22.1からのupgrade), 6.14(22.2の新規インストール) | 5.14 | 6.12 |
OSのインストール方法
- 推奨事項
- ストレージの先頭領域にWindowsとDebianの起動用パーティションを設けるため、2台以上のストレージを使用する
- 2台のストレージの容量もしくはインターフェース規格(例えば、NVMeとSATA)を変えて、判別しやすくする
- Debianの場合、標準的なネットワークインストールメディアでなく、Debian 13のLIVEメディア:標準はGNOMEを使用する。
GUIを強化したCalamaresインストーラーを使用しています。Windowsとは別のドライブに、Linux用の/boot/efiを設定可能です。通常のインストーラーではWindowsの/boot/efiにDebianのブートローラがインストールされます。
- インストール方法
-
Calamaresは汎用的なインストーラーです。手動設定でWindowsの起動ドライブとは別に/boot/efi,/boot, /, swapを設定できれば、迷うところはないと思います。
Linuxをインストールしたドライブ。後半はWindowsとLinuxの共用データ用です。
Windowsがプリインストールされていたドライブ。
- Ubuntuと若干異なりますが、ノートパソコンで”デュアルブート” Win11とUbuntuを共存 デュアルブートを解説を参考にして、インストールします。
- インストール後にDebian 13の端末にdf -h コマンドを入力し、/boot/efiがLinuxのストレージに設定されていれば、安心できます。
- /boot/efi(EFI system partition)をWindowsと共用している場合も問題なく動きましたが、Windowsの大型アップデートの時に注意が必要です。
間違えてWindows 11のefiパーティションを消去した場合の対処方法
- /boot/efiを消去し、Windowsを起動不能にしたことがあります。データやOSの入ったパーティションが無事でしたので復旧できました。
- Copilotと会話しながら、復旧しました。
-
Windows 11 インストールメディアを準備する
Windows 用のインストール メディアを作成するのページを参考にして、起動可能なUSBメディアを作成する。 -
Windows 11 インストールメディアから起動
最初の画面で Shift + F10 を押して、コマンドプロンプトを開く
diskpartコマンドにより、EFIパーティション(100MB)を探します。
diskpart
list disk
select disk 0 ← 対象ディスクを選択
list partition
exit
- Partition 1 を FAT32 でフォーマット(EFI仕様に準拠)
USBメディアから起動して、Windowsの/boot/efi領域を操作します。
diskpart
select disk 1
select partition 1
format fs=fat32 quick
assign letter=S
exit
- ブートローダーを書き込む
起動条件により、Windowsフォルダのドライブレターが変わるようです。
dir C:\Windows
dir D:\Windows
bcdboot D:\Windows /s S: /f UEFI
Debian 13でNVIDIAグラフィックを使用する
NVIDIAドライバーのDynamic Kernel Module Support (DKMS)環境整備
Debian 13用のnon-freeリポジトリのnvidiaドライバーは、古いバージョンです。
cudaやコンテナーを使うのに不具合が出そうなので、公式サイトのrun形式の最新版"Display Driver 580.82.07"を使用することにしました。
# https://wiki.debian.org/NvidiaGraphicsDrivers#Debian_13_.22Trixie.22 より
# Add "contrib", "non-free" and "non-free-firmware" components to /etc/apt/sources.list.d/debian.sources
sudo apt install linux-headers-amd64 dkms
sudo apt install firmware-misc-nonfree
# 一般的にコンパイルに使われるパッケージ
sudo apt install cmake build-essential flex bison zlib1g-dev pkg-config
# nvidiaのrunファイルのメッセージから必要なことがわかったパッケージ
sudo apt install libglvnd-dev
NVIDIAドライバーのビルド、インストール
- nvidiaの公式サイトから最新のドライバーをダウンロードします(現行のインストーラーはDKMS、Nouveauの無効化に対応しています)
- ~/binなどascii文字以外を含まないフォルダーにコピーし、chmod +xコマンドにより実行権限を与えます
- GNOMEデスクトップからログアウトし、Ctrl + Alt + F4 (F3)などのコンソールモードでログインします。
# インストーラ(NVIDIA-Linux-x86_64-580.82.07.run)は、
# modprobe.dにNouveau無効の設定ファイルを作ることができます。
# 再起動~インストーラ実行を2~3回繰り返せば、インストーラの警告表示がなくなります。
LANG=C
sudo init 3 # グラフィック環境なしのマルチユーザーモード
cd ~/bin
sudo sh ./NVIDIA-Linux-x86_64-580.82.07.run # メッセージを確認しながら、キーボードから入力します。
# 不足したPackageは、aptコマンドによりインストールできます。
CUDA Toolkit 13.0のインストール
Debian 12用のダウンロードサイトからCUDA Toolkit 13.0をインストールします。CUDA Toolkit 13.0 Update 1 Downloads
インストール後のファイルサイズが約10GBあります。CUDAの開発環境が不要な場合は、アップデートとドライバのインストールだけで良いかもしれません。
大容量の更新を防ぐため、インストール後はCUDAのリポジトリを無効にすることをお勧めします。
NVIDIA Container Toolkitのインストール
Singularityコンテナを使用するCAEソフトがあるので、インストールしました。
Installing the NVIDIA Container Toolkit
ファイルサイズが小さいので、ストレージの負担をあまり気にする必要はありません。
デスクトップPCの動作状況
Salome-mecaのSingularityコンテナは、高速かつ安定に動作させることが難しいCAEソフトでした。
GPUモードで起動でき、安定してAsterStudyからもメッシュモデルを表示できるようになりました。
~/Work/Smeca/Spring-M$ smeca
/home/XXXYYYZZZ/bin/smeca/salome_meca-lgpl-2024.1.0-1-20240327-scibian-11:433: SyntaxWarning: invalid escape sequence '\.'
regexp = re.compile("hwloc_(.*)\.so")
+ running salome_meca in GPU mode
++ using container salome_meca-lgpl-2024.1.0-1-20240327-scibian-11.sif
++ prepend system 'libGL*' libs
ソフトウェアレンダリングでは遅くて、不安定なAsterStudyの3Dメッシュ図
ノートパソコンでNVIDIA-GPUを強制的に用いる
NVIDIAのGPUを優先する設定とする
NVIDIAのドライバーをインストールしただけでは、IntelのCPU内蔵グラフィックが優先されて、NVIDIAのGPUが使用されない状態でした。
NVIDIA GPUのみを使用する方法を選択しました。バッテリー駆動時間が重要な場合は、Windowsを使用するので問題ないと考えました。
設定方法は、NVIDIA Optimusの"Using NVIDIA GPU as the primary GPU"の通りです。
NVIDIA Optimus
動作速度の比較
GravityMarkにより比較しました。
APIは、WSL2で実験的なドライバーの段階であるVulkanとしました。Status and Roadmap for Vulkan 1.3 Compliance in D3D12-based Dzn Driver for WSLg
VulkanではWindows 11よりDebian 13の方が若干高いスコアでした。
Debian 13での結果です。Geforce RTX 2060と認識されています。
Windows 11での結果です。デュアルGPUでGeforce RTX 2060での結果が表示されています。
Discussion