🗂

Distroboxにより複数のLinuxディストロを使う

に公開

要旨

Ubuntu Weekly Recipe(第899回)や Copilot とのChatを参考にしながら、Distrobox 1.8.2.5 と Podman 5.4.2 を用いて、Debian 13 上(Windows 11とのデュアルブートのネイティブ環境、Gnome 48、Wayland)で複数ディストロ環境を検証した。コンテナ内から ホストの Linux カーネルやNVIDIA 595 GPU をそのまま利用でき、Ubuntu 26.04 や Arch Linux を追加しても、ホスト環境を壊すことなく共存できることを確認した。
PATH はホスト側の ~/.bashrc の設定がそのまま有効になり、特にホスト側の ~/ が優先される。そのため、ホスト側のアプリをコンテナから見えない /opt に配置すれば PATH の衝突を避けられる。実際、/usr/bin/paraview や /usr/bin/freecad などの GUI アプリは、Distrobox 環境でも問題なく起動した。
GNOME アプリは warning が多いものの、表示はホストの GNOME と同じで違和感がない。WSL2 のようにタイトルバーが Windows 風になったり、左上のアイコンが空の四角になることもなく、普通の Linux アプリとして扱える。
Ubuntu Weekly Recipe:第899回 「Distroboxを使えば⁠⁠、他のディストリビューションの最新パッケージをUbuntuでも気軽に試せる」

Distroboxの環境構築

Distroboxのインストール

主要Linuxディストロでは、リポジトリからインストールできる。
より新しい機能を使いたい場合は、公式サイトが提供しているスクリプトを利用すると最新版を導入できる。
今回は最新版(1.8.2.5)を/usr/localにインストールした。

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install

#
#以下がダウンロードされたスクリプトの抜粋
#!/bin/sh
...
next=0
no_color=0
verbose=0
version=1.8.2.5

install --prefix /usr/local
...


Distroboxのコマンド(singularityは、SalomeMecaのsifコンテナ用)

  • distrobox-assemble:設定ファイルに基づいてコンテナを作成・破棄
  • distrobox-create:コンテナを作成
  • distrobox-enter:コンテナに入る
  • distrobox-ephemeral:一時的なコンテナを作成し、終了時に破棄
  • distrobox-list:作成済みコンテナの一覧
  • distrobox-rm:作成済みコンテナの削除
  • distrobox-stop:実行中コンテナの停止
  • distrobox-upgrade:複数コンテナをまとめてアップグレード
  • distrobox-generate:コンテナ内アプリのエントリをホスト側に作成
  • distrobox-init:コンテナの初期化(手動利用は想定されていない)
  • distrobox-export:コンテナ内アプリをホストへエクスポート
  • distrobox-host-exec:コンテナ内からホストのコマンドを実行

Podmanのインストール

DistroboxはPodmanを優先して利用する設計のため、Docker ではなく Podman を使用した。
Podman の最新版は Ver.5.8.2 であるが、Podman Installation Instructionsでは、まず「ディストロのリポジトリからのインストール」を推奨している。
そのため、今回はDebian 13のmainリポジトリにあるPodman 5.4.2を使用した。
なお、Podman をソースからビルドする場合は、コンパイルだけでなく追加の設定が必要になるため、再現性を重視するならリポジトリ版が扱いやすい。

コンテナの作成

Ubuntu 26.04 LTS と Arch Linux のコンテナを作成したが、内容が重複するため、ここでは Arch Linux の作成手順のみ紹介する。
--nvidia を付けると、コンテナ内から NVIDIA GPU を利用できる 参考: Using the GPU inside the container
但し、起動時の"Setting up host's nvidia integration"に時間がかかるため、GPU性能と起動時間のトレードオフになる。
Copilotの提案を採用し、作成時に追加パッケージを導入した。

distrobox create \
  --nvidia \
  --name arch \
  --image archlinux:latest \
  --additional-packages "sudo base-devel git cmake gcc clang mesa-utils"

参考情報

  • Ubuntu 26.04 の Distrobox イメージは snapd すら入っていない完全 snap-less だった
  • Arch Linux はユーザー設定が不要で、WSL よりもセットアップが簡単
  • 各ディストロのミラーは日本のサーバーに変更した

端末のプロンプトにコンテナ環境を追加

デフォルトではホストとコンテナで同じプロンプトが表示されるため、どの環境にいるのか分かりにくい。
そこで、~/.bashrc に以下のスクリプトを追加し、プロンプトにコンテナ名を表示するようにした。

# Detect distrobox container name
if [ -f /run/.containerenv ]; then
    cname=$(grep -oP '(?<=name=")[^"]+' /run/.containerenv)
    PS1="(distrobox:$cname) $PS1"
fi

実際の起動ログ

username@D13:~$ distrobox-enter arch
Starting container...                   	 [ OK ]
Installing basic packages...            	 [ OK ]
Setting up devpts mounts...             	 [ OK ]
Setting up read-only mounts...          	 [ OK ]
Setting up read-write mounts...         	 [ OK ]
Setting up host's sockets integration...	 [ OK ]
Setting up host's nvidia integration... 	 [ OK ]
Integrating host's themes, icons, fonts...	 [ OK ]
Setting up distrobox profile...         	 [ OK ]
Setting up sudo...                      	 [ OK ]
Setting up user's group list...         	 [ OK ]
Container Setup Complete!
(distrobox:arch) username@D13:~$ 

コンテナ内のアプリの起動

Distrobox では ホストの ~/.bashrc の PATH 設定がそのまま有効になる。
そのため、ホストの ~/bin がコンテナの /usr/bin よりも優先される。

  • コンテナから起動したくないホストアプリ
    → ~/bin から /opt に移動(コンテナから見えないため衝突しない)
  • コンテナ内のローカルアプリ
    → コンテナ内の /opt に配置
    → ファイルマネージャー thunar のダブルクリックで起動

ただし、Distrobox は systemd を使わないため、thunar 起動時に warning が多数表示された。
完全に無害なので、以下の alias をホストの ~/.bashrc に追加して抑制した。

alias thunar='thunar 2>/dev/null'

コンテナ内のArch Linuxの動作状況

Paraview

Arch Linux コンテナ内で起動した ParaView は、Python 3.14.4 を使用しており、公式サイト配布版(Python 3.12.7)とは明確に異なる。
また、OpenGL は NVIDIA 595.71.05 のドライバをそのまま利用していることが確認できた。
CAEアプリとの連携を考えると、ホスト側にインストールした公式 ParaView の方が扱いやすいため、今後もホスト版を継続利用する予定。

Client Information:
Version: 6.1.0
VTK Version: 
Qt Version: 6.11.0
vtkIdType size: 64bits
Embedded Python: On
Python Library Path: /usr/lib/python3.14
Python Library Version: 3.14.4 (main, Apr  8 2026, 17:48:49) [GCC 15.2.1 20260209]
Python Numpy Support: On
Python Numpy Path: /usr/lib/python3.14/site-packages/numpy
Python Numpy Version: 2.4.4
Python Matplotlib Support: On
Python Matplotlib Path: /usr/lib/python3.14/site-packages/matplotlib
Python Matplotlib Version: 3.10.9
Python Testing: Off
MPI Enabled: On
Disable Registry: Off
Test Directory: 
Data Directory: 
SMP Backend: TBB
SMP Max Number of Threads: 20
OpenGL Vendor: NVIDIA Corporation
OpenGL Version: 3.2.0 NVIDIA 595.71.05
OpenGL Renderer: NVIDIA GeForce RTX 3060/PCIe/SSE2
Accelerated filters overrides available: No

Connection Information:
Remote Connection: No

ポイント

  • Arch Linux の rolling release により、ParaView が最新の Python / NumPy / Matplotlib を利用
  • NVIDIA GPU がコンテナ内で正しく認識され、OpenGL もネイティブ同等
  • ただし、CAE ワークフローとの互換性はホスト版の方が高い(明快なPATH、SalomeMeca用のMEDReaderが含まれない、など)

FreeCAD

FreeCAD も Arch Linux 版であることが明確に表示され、ParaView と同様に最新のライブラリ群を使用している。
AppImage 版よりも動作が軽快で、UI の反応も良かったため、FreeCAD は Arch コンテナ版に乗り換えた。

OS: Arch Linux (GNOME/gnome/wayland)
Architecture: x86_64
Version: 1.1.1.44874 (Git)
Build date: 2026/04/14 22:09:59
Build type: Release
Branch: makepkg
Hash: 0108fd4b4850cc46e625b60e53cea7a7bbe69f8d
Python 3.14.4, Qt 6.11.0, Coin 4.0.8, Vtk 9.6.1, boost 1_91, Eigen3 5.0.1, PySide 6.11.0
shiboken 6.11.0, SMESH 7.7.1.0, xerces-c 3.3.0, OCC 7.9.3
Locale: English/United States (en_US)
Navigation Style/Orbit Style/Rotation Mode: CAD/Rounded Arcball/Window center
Stylesheet/Theme/QtStyle: FreeCAD.qss/FreeCAD Dark/
Logical DPI/Physical DPI/Pixel Ratio: 96/107.975/1

ポイント

  • Qt / VTK / OCC などの主要ライブラリが最新
  • AppImage 版よりも Wayland との相性が良く、描画が滑らか
  • Arch Linux のパッケージ管理により更新が容易
  • Distrobox 経由でも GPU アクセラレーションが効く(ただし、起動時の"Setting up host's nvidia integration"に数秒かかる)

まとめ

  • Distrobox(1.8.2.5)+ Podman(5.4.2)で GPU 対応コンテナを構築
  • Arch Linux コンテナ内で ParaView / FreeCAD が問題なく動作
  • PATH の扱いは工夫が必要だが、運用で解決可能
  • CAE ワークフローにおいて、ホスト版とコンテナ版を使い分けることで柔軟性が向上
  • GNOME アプリは warning が多いものの、普通の Linux アプリとして表示される。

Discussion