😉

ネイティブ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のインストール方法

  1. 推奨事項
  • ストレージの先頭領域にWindowsとDebianの起動用パーティションを設けるため、2台以上のストレージを使用する
  • 2台のストレージの容量もしくはインターフェース規格(例えば、NVMeとSATA)を変えて、判別しやすくする
  • Debianの場合、標準的なネットワークインストールメディアでなく、Debian 13のLIVEメディア:標準はGNOMEを使用する。
    GUIを強化したCalamaresインストーラーを使用しています。Windowsとは別のドライブに、Linux用の/boot/efiを設定可能です。通常のインストーラーではWindowsの/boot/efiにDebianのブートローラがインストールされます。
  1. インストール方法
  • 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と会話しながら、復旧しました。
  1. Windows 11 インストールメディアを準備する
    Windows 用のインストール メディアを作成するのページを参考にして、起動可能なUSBメディアを作成する。

  2. Windows 11 インストールメディアから起動
    最初の画面で Shift + F10 を押して、コマンドプロンプトを開く
    diskpartコマンドにより、EFIパーティション(100MB)を探します。

diskpart
list disk
select disk 0  ← 対象ディスクを選択
list partition
exit
  1. Partition 1 を FAT32 でフォーマット(EFI仕様に準拠)

USBメディアから起動して、Windowsの/boot/efi領域を操作します。

diskpart
select disk 1
select partition 1
format fs=fat32 quick
assign letter=S
exit
  1. ブートローダーを書き込む
    起動条件により、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