WSL で使用する Linux ディストリビューションをインポートする

Microsoft Store にない場合でも、tar ファイルと一緒にインポートすることで、Linux 用 Windows サブシステム (WSL) 内で任意の Linux ディストリビューションを使用できます。

この記事では、Linux ディストリビューション CentOS を、Docker コンテナーを使用してその tar ファイルを取得することで、WSL で使用するためにインポートする方法について説明します。 このプロセスは、あらゆる Linux ディストリビューションのインポートに適用できます。

ディストリビューションの tar ファイルを取得する

まずは、そのディストリビューションのすべての Linux バイナリが含まれる tar ファイルを取得する必要があります。

tar ファイルは、さまざまな方法で取得できます。そのうちの 2 つは次のとおりです。

  • 提供されている tar ファイルをダウンロードする。 Alpine Linux のダウンロード サイトの「MINI ROOT FILESYSTEM」セクションで、Alpine に関する例を確認できます。
  • Linux ディストリビューション コンテナーを探し、インスタンスを tar ファイルとしてエクスポートする。 以下の例は、CentOS コンテナーを使用したこのプロセスを示します。

CentOS 用の tar ファイルを取得する例

この例では、WSL ディストリビューション内の Docker を使用して、CentOS 用の tar ファイルを取得します。

前提条件

コンテナーから tar をエクスポートする

  1. Microsot Store から既にインストールしている Linux ディストリビューション (この例では Ubuntu) のコマンド ライン (Bash) を開きます。

  2. Docker サービスを開始します。

    sudo service docker start
    
  3. Docker 内で CentOS コンテナーを実行します。

    docker run -t centos bash ls /
    
  4. grep と awk を使用して CentOS コンテナー ID を取得します。

    dockerContainerID=$(docker container ls -a | grep -i centos | awk '{print $1}')
    
  5. そのコンテナー ID を、マウントされた C ドライブにある tar ファイルにエクスポートします。

    docker export $dockerContainerID > /mnt/c/temp/centos.tar
    

Example of running the commands above

このプロセスにより、Docker コンテナーから CentOS の tar ファイルがエクスポートされます。これにより、ローカルで WSL と使用するためにインポートできるようになります。

tar ファイルを WSL にインポートする

tar ファイルの準備ができたら、コマンド wsl --import <Distro> <InstallLocation> <FileName> を使用してインポートできます。

CentOS のインポートの例

CentOS ディストリビューションの tar ファイルを WSL にインポートするには、次のようにします。

  1. PowerShell を開き、ディストリビューションを格納するフォルダーが作成されていることを確認します。

    cd C:\temp
    mkdir E:\wslDistroStorage\CentOS
    
  2. コマンド wsl --import <DistroName> <InstallLocation> <InstallTarFile> を使用して、tar ファイルをインポートします。

    wsl --import CentOS E:\wslDistroStorage\CentOS .\centos.tar
    
  3. コマンド wsl -l -v を使用して、インストールしたディストリビューションを確認します。

    Example of the above commands running in WSL

  4. 最後に、wsl -d CentOS コマンドを使用して、新しくインポートした CentOS Linux ディストリビューションを実行します。

WSL 固有のコンポーネントを既定のユーザーのように追加する

既定では、--import を使用する場合は、常にルート ユーザーとして開始されます。 独自のユーザー アカウントを設定することもできますが、セットアップ プロセスは、各 Linux ディストリビューションによって若干異なることに注意してください。

先ほどインポートした CentOS ディストリビューションでユーザー アカウントを設定するには、まず PowerShell を開き、次のコマンドを使用して CentOS を起動します。

wsl -d CentOS

次に、CentOS コマンド ラインを開きます。 このコマンドを使用して、sudo とパスワード設定ツールを CentOS にインストールし、ユーザー アカウントを作成して、既定のユーザーとして設定します。 この例では、ユーザー名は "caloewen" になります。

Note

ユーザーが sudo を使用できるように、sudoers ファイルにユーザー名を追加します。 このコマンド adduser -G wheel $myUsername は、ユーザー myUsername をホイールグループに追加します。 Wheel グループのユーザーには自動的に sudo 特権が与えられ、昇格された権限を必要とするタスクを実行できます。

yum update -y && yum install passwd sudo -y
myUsername=caloewen
adduser -G wheel $myUsername
echo -e "[user]\ndefault=$myUsername" >> /etc/wsl.conf
passwd $myUsername

ここでそのインスタンスを終了し、すべての WSL インスタンスが終了していることを確認する必要があります。 PowerShell で次のコマンドを実行してディストリビューションを再起動し、新しい既定のユーザーを確認します。

wsl --terminate CentOS
wsl -d CentOS

これで、この例に基づいて [caloewen@loewen-dev]$ が出力として表示されるようになります。

Example of the code above running in WSL

WSL の設定の構成の詳細については、「.wslconfig と wsl.conf を使用して設定を構成する」を参照してください。

カスタム Linux ディストリビューションを使用する

UWP アプリとしてパッケージ化された、独自のカスタマイズされた Linux ディストリビューションを作成できます。これは、Microsoft Store にある WSL ディストリビューションと同じように動作します。 詳細については、「WSL 用のカスタム Linux ディストリビューションの作成」を参照してください。