🐧

WSL2: 開発環境用にカスタムディストリビューションを作成する方法

2023/05/24に公開

はじめに

WSL(Windows Subsystem for Linux)は、Windows 上で Linux ディストリビューションを実行する機能です。
WSL を使うことで、開発者は Linux 上のツールやコマンドを使用でき、Web 開発やバックエンド開発がスムーズに行えます。

ここでは、既存ディストリビューションを元に、開発環境用のカスタムディストリビューションを作成する方法を説明します。
これにより、既存の環境などに影響を受けない独自の開発環境を構築できます。

1. WSLのディストリビューション管理

1.1. WSLで使用できるディストリビューション

WSL では、以下のような Linux ディストリビューションが利用できます:

  • Ubuntu
  • Debian
  • Oracle Linux (パッケージ名 OracleLinux_9_1)

これらのディストリビューションは、Microsoft Store で提供されています。

1.2. WSLにおけるディストリビューション

WSL では、実行する Linux 環境をディストリビューションというラベルで管理しています。
通常では、WSL のディストリビューションはDebianのような Linux ディストリビューションと一致しています。

WSL のディストリビューションは、Linux ディストリビューションとは別の名前を設定できます。
たとえば、ディストリビューションDebiandev-debianという名前をつけてインポートします。
このディストリビューションはDebianのままですが、WSL はdev-debianというディストリビューションだと認識します。

1.3. 開発ディストリビューションとは

開発ディストリビューションは、既存のディストリビューションをもとに作成した開発環境専用の WSL ディストリビューションです。
既存のディストリビューションとはまったく別の環境なので、開発用にさまざまな言語や開発ツール、フレームワークを導入しても既存のディストリビューションに影響を与えません。

2. 開発ディストリビューションの作成手順

  1. wsl.conf を設定し、各ディストリビューション共通の動作を設定する

  2. 元ディストリビューションから開発ディストリビューションを複製する

  3. Windows Terminal に開発ディストリビューションの設定を追加する

  4. 開発ディストリビューション特有の設定を行なう

上記の手順で、開発ディストリビューションを作成します。

2.1. wsl.confの設定

WSL では/etc/wsl.confファイルを使用することで、ディストリビューションの動作を細かく設定できます。
/etc/wsl.confの設定を元ディストリビューションと開発ディストリビューションとで同じにすることで、設定の一貫性を保つことができます。

/etc/wsl.confの設定は下記の表のようになります。

セクション 設定項目名 設定項目設定を 適用
boot systemd true WSL 起動時にsystemdデーモンも起動
network hostname <ホスト名> WSL ディストリビューションのホスト名
interop appendWindowsPath false 通常のパスのあとに、Windows 上のパス設定を追加しない
user default <ユーザー名> WSL 起動時にログインするユーザー名

これらの設定を各ディストリビューションで同じにすることで、設定の一貫性を保つことができます。

wsl.confの設定方法

次の手順で、/etc/wsl.confを設定します。

  1. /etc/wsl.confファイルを作成する
    下記の内容で、/etc/wsl.confを作成します。#以降はコメントです。

    wsl.conf
    # Boot with systemd daemon
    [boot]
    systemd = true
    
    [network]
    # hostname changed by distribution
    hostname = <my_custom_hostname>
    
    [interop]
    # do not add Windows path
    appendWindowsPath = false
    
    [user]
    default = <defaultUserName>
    
    

    <my_custom_hostname>の部分を開発ディストリビューションのホスト名に、
    <defaultUserName>の部分を WSL 起動時のログインユーザー名に置き換えてください。

  2. WSL を再起動する
    コマンドラインでwsl --shutdownと入力し、WSL を再起動します。

    wsl --shutdown
    

以降、/etc/wsl.confが適用された状態で WSL が起動します。

2.2. ディストリビューションの複製

ディストリビューションの作成には、WSL のexportimport機能を使用します。
export で元ディストリビューションの tar アーカイブを作成後、開発ディストリビューション側で作成した tar アーカイブを import します。

ディストリビューションの複製方法

以下の手順で、ディストリビューションを複製します。

  1. 指定したディストリビューションを tar アーカイブに保存する

    wsl --export Debian debian.tar
    

    上記のコマンドで、debian.tarに元ディストリビューションがアーカイブされます

  2. 開発ディストリビューション側で、1. で作成した tar アーカイブを import する

    wsl --import <開発ディストリビューション> <仮想ディスクディレクトリ> debian.tar
    

    <開発ディストリビューション>は、dev-debianなどの開発ディストリビューション名をいれます。
    <仮想ディスクディレクトリ>は、`~/.local/share/wsl/dev-debian'のような tar アーカイブを展開するディレクトリを指定します。

以上で、ディストリビューションの複製は終了です。

2.3. Windows Terminalの設定

作成した開発ディストリビューション上で作業ができるように、windows Terminal に設定を追加します。

設定の手順は、次のようになります。

  1. Windows Terminal を開き、Ctrl+,として設定画面を開く
    設定画面

  2. [新しいプロファイルを追加]を選択し、元のプロファイル(今回はDebian)を選択して複製する
    新しいプロファイル

  3. 複製したプロファイルの名前を開発ディストリビューションの名前に変更する
    開発ディストリビューション

  4. コマンドラインを変更し、起動するプロファイルを開発ディストリビューションに変更する

    wsl.exe -D <開発ディストリビューション>
    

    <開発ディストリビューション>には、ディストリビューション複製時に入力したディストリビューションを入れる

  5. 複製したプロファイルを保存し、Windows Terminal をとじる

以上で、Windows Terminal から開発ディストリビューションを選択できるようになりなす。

2.4. 開発ディストリビューションの設定

開発プロジェクトにあわせて、プログラミング言語やフレームワークの導入などをおこない、開発環境を構築しますま。

具体的には、必要なプログラミング言語のインストール、必要なライブラリやフレームワークの導入、開発ツールのセットアップなどが含まれます。インストールやセットアップの方法は、各言語や開発ツールの公式サイトを参照してください。

さいごに

元ディストリビューションを tar アーカイブにエキスポートして、そこから開発ディストリビューションを作成する方法を説明しました。
作成した tar アーカイブからは複数の開発ディストリビューションが作成できます。
カスタムディストリビューションの利用により、各プロジェクトに特化したクリーンで使いやすい開発環境が構築できます。

それでは、Happy Hacking!

技術用語と注釈

  • WSL (Windows Subsystem for Linux):Windows 環境下で Linux ディストリビューションを動作させる機能
  • wsl.conf: WSL の各ディストリビューションの細かな動作を設定できるファイル
  • systemd: Linux システムの初期化処理やサービス管理を行なうデーモン

参考資料

Webサイト

GitHubで編集を提案

Discussion