同じバージョンのWSLを複数構築

この記事は、Windows Subsystem for Linux(WSL)を活用し、独自のカスタムLinuxディストリビューションを構築する方法や、Docker、NVIDIA Container Toolkitの活用手順について実践形式で解説する内容です。通常、WSLはMicrosoft Storeから手軽にLinuxディストリビューションをインストールできるため、誰でも簡単にLinux環境を利用できます。しかし、より細かなカスタマイズや特定の用途に合わせた環境構築を目指す場合、公式の方法以外にも、自作のルートファイルシステムを利用したカスタムディストリビューションの導入が有効です。

本記事では、実際の試行錯誤の経験をもとに、WSLの基本セットアップからカスタムイメージのインポート、非rootユーザーの設定、さらにDockerやNVIDIA Container Toolkitを安全かつ効率的に利用するための具体的な手順を、最新情報も踏まえながら順を追って解説していきます。なお、記事投稿から時間が経過しているため、一部の手順や方法が現在と異なる可能性もあります。その場合は、最新の公式情報と照らし合わせながらご利用いただくことをおすすめします。

WSL 2 カスタム Linux ディストリビューション アーキテクチャ Windows ホストシステム Windows ハイパーバイザープラットフォーム WSL 2 サブシステム Microsoft Store ディストリビューション Ubuntu/Debian/Fedora 事前設定されたユーザー カスタマイズの制限 カスタムディストリビューション カスタム Linux イメージ Docker + GPU サポート 完全な制御と柔軟性 Windows 統合レイヤー 標準コンポーネント カスタムコンポーネント ディストリビューション 統合ポイント

WSL2のセットアップとカスタムイメージのインポート

まずは、WSL2を有効にする手順から説明します。管理者権限でPowerShellまたはコマンドプロンプトを開き、以下のコマンドを実行してください。

wsl --install

もし手動で有効化する場合は、以下のコマンドも実行してください。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

続いて、Microsoft Store経由ではなく、自作のルートファイルシステム(rootfs)を利用したカスタムLinuxディストリビューションの構築方法について説明します。公式サイト(例:Ubuntu Cloud Images)からtarball形式のイメージ(例:rootfs.tar.gz)をダウンロードしてください。

ダウンロードが完了したら、以下のコマンドでカスタムディストリビューションをWSL2にインポートします。

wsl --import MyCustomDistro C:\WSL\MyCustomDistro C:\path\to\rootfs.tar.gz --version 2

このコマンドにより、指定したフォルダにカスタムディストリビューションが作成され、WSL2の環境として登録されます。インポート後、次のコマンドで登録状況を確認してください。

wsl -l -v

上記コマンドの実行結果にMyCustomDistroが表示され、WSL2のバージョンや状態が確認できれば、カスタムイメージが正しく反映されたことになります。

ルートファイルシステムの自作方法

WSL2でカスタムディストリビューションを構築する際、利用するルートファイルシステム(rootfs)を自作する方法はいくつかあります。以下に主要な手法とそのポイントを紹介します。

  1. Dockerコンテナのエクスポート
     ・DockerでUbuntuなどのベースイメージをコンテナとして起動し、コンテナ内のファイルシステムをtar形式でエクスポートします。
      例:
       docker run –name mydistro ubuntu
       docker export mydistro > mydistro.tar
     ・このtarファイルを、wsl –importコマンドでWSL2に取り込むことで、カスタムディストリビューションとして利用できます。
  2. Debootstrapを利用する方法
     ・Debian系のシステムでは、Debootstrapを使って最小限のシステム環境を構築できます。
     ・最初に、指定したディレクトリに必要なパッケージをインストールする形でルートファイルシステムを作成し、そのディレクトリをtarballにまとめます。
     ・公式ドキュメントなどを参考に、必要なパッケージや設定を行ってください。
  3. BusyBoxを活用した最小システムの構築
     ・BusyBoxは小規模なユーティリティ集合で、最小限のLinux環境を提供します。
     ・軽量なシステムを目指す場合に有用ですが、一般的な用途には追加のパッケージが必要になるため、他の手法と組み合わせるケースが多いです。
  4. 既存システムの移行
     ・既に構築済みのLinux環境をtar形式でエクスポートし、WSL2にインポートする方法もあります。
     ・既存環境のカスタマイズがそのまま反映されるため、迅速に移行できるメリットがありますが、不要なファイルや設定も含まれる可能性があるため、整理が必要です。

【補足】
各手法にはメリットとデメリットが存在します。たとえば、Dockerコンテナのエクスポートは手軽ですが、初期状態の不要なサービスやファイルが含まれる場合があります。一方、Debootstrapはよりクリーンな環境を構築できますが、手順が複雑になりがちです。
また、WSL2では初回起動時にルートファイルシステムが自動的に展開されるため、定期的なアップデートや不要パッケージの削除など、セキュリティ・安定性の観点からメンテナンスも重要です。

非rootユーザーの作成とデフォルトユーザーへの設定

WSL2でカスタムディストリビューションをインポートすると、初期状態ではrootユーザーでログインすることが多いため、システムへの変更が容易になりセキュリティ上のリスクが高まります。そこで、通常のユーザーアカウントを作成し、デフォルトユーザーとして設定することを強く推奨します。

■ ユーザーの作成とsudo権限の付与

まず、WSL環境内で新たなユーザー(ここでは例として「myusername」とします)を作成し、管理者権限(sudo)を付与します。

adduser myusername
gpasswd -a myusername sudo

これにより、myusernameは必要なときのみsudoコマンドを使用してroot権限で操作できるようになります。

■ デフォルトユーザーの設定

次に、WSLの起動時に自動でmyusernameとしてログインするよう、設定ファイルを編集します。
WSLの設定ファイル「/etc/wsl.conf」をテキストエディタで開き、以下の内容を追加してください。すでに[boot]セクションが存在する場合は、その下に追加してください。

[user]
default=myusername

もし、WSLでsystemdを利用する場合は、設定ファイル内に以下の記述も必要です(既存の設定があればそのままで構いません)。

[boot]
systemd=true

■ 設定の反映

設定を反映するために、WSLを再起動します。管理者権限のPowerShellまたはコマンドプロンプトで、以下のコマンドを実行してください。

wsl --shutdown

再起動後、WSLを起動し、whoamiコマンドを実行して現在のユーザーが「myusername」になっていることを確認してください。

■ 補足情報

非rootユーザーで日常的な操作を行うことで、システム全体への影響を最小限に抑え、セキュリティと安定性を向上させることができます。また、必要な操作のみsudoを使って実行することで、リスクを管理することが可能です。

DockerおよびNVIDIA Container Toolkitの利用方法

WSL2環境でDockerやNVIDIA Container Toolkitを活用することで、コンテナベースの開発環境構築やGPUを用いた高速な処理が可能になります。ここでは、最新の手順に基づいた設定方法と、セキュリティや運用面でのポイントを詳しく解説します。

■ Dockerの利用方法

  1. Dockerのインストール
     ・公式ドキュメントに沿って、Ubuntu向けDocker Engineをインストールします。
      公式URL: https://docs.docker.com/engine/install/ubuntu
     ・インストール後、通常はDockerグループが自動で作成されますが、念のため確認してください。
  2. 非rootユーザーでのDocker利用設定
     ・root権限を使わずにDockerコマンドを実行するため、以下の手順でユーザー設定を行います。
      a. Dockerグループの存在確認(なければ作成)
       sudo groupadd docker
      b. 利用ユーザー(例:myusername)をDockerグループに追加
       sudo usermod -aG docker myusername
      c. 設定反映のため、WSL環境を再起動
       wsl –shutdown
      d. Dockerの動作確認(例: docker run hello-world や docker ps)

■ NVIDIA Container Toolkitの利用方法

  1. NVIDIA Container Toolkitのインストール
     ・最新の公式手順に従い、Toolkitをインストールします。
      公式URL: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
     ・インストール時には、GPUを活用するためのドライバーや設定も確認してください。
  2. 動作確認とバージョンチェック
     ・以下のコマンドで、正常にインストールされているか確認します。
       nvidia-container-cli –version
     ・正しいバージョン情報が表示されれば、NVIDIA Container Toolkitは正常に動作しています。

■ 補足情報

・DockerとNVIDIA Container Toolkitを組み合わせることで、GPUを利用した機械学習やディープラーニングなど、負荷の高い処理がコンテナ上で効率的に実行できます。
・最新の公式ドキュメントやアップデート情報を定期的に確認し、必要に応じて設定の調整やセキュリティ対策を講じることが重要です。
・WSL2環境では、DockerやNVIDIA関連ツールの設定がOSのアップデートや環境の変化に影響される可能性があるため、運用中にトラブルシューティングの知識も備えておくと安心です。

タイトルとURLをコピーしました