2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Windows10環境 WSL2に普通のVMのようにUbuntuをインストールする方法

Last updated at Posted at 2020-06-04

この記事の内容

なんだか題名が長くてラノベみたいですが。

この記事では、構築済みのWSL2環境に、あたかもVMを作成するようにUbuntuを追加でインストールすることができます。

忙しい人用の結論 3手順

1. イメージダウンロード

 https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz

2. ディストリビューション イメージインポート

 wsl --import Ubuntu2 '~\AppData\Local\Ubuntu2' 'ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz'

3. 実行
 wsl -d Ubuntu2

まえおき

2020年5月 ついにWindows 10 May 2020 Update が公開され、WSL2が正式にリリースされました。

WSL2は簡単にインストールできるし、既存のWSL1でインストールしたLinuxをWSL2に変換することも容易です。また、記事もたくさんあります。

変換例
PS C:\> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         1
  docker-desktop-data    Running         2
  docker-desktop         Running         2
PS C:\> wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
PS C:\> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Stopped         2
  docker-desktop-data    Stopped         2
  docker-desktop         Stopped         2

しかし、MicrosoftのWSLのドキュメントを読んでも、ディストリビューション(同一でもよい)をインストールする方法の記載がありません。

ググると、WSLコマンドでExportしたのち、Importする方法など情報もありますが、クリーンな環境を自由に作るという目的では、今一つすっきりしません。
※試していませんが、すでに使用中の環境ですと、パッケージをインストール済みの環境がクローンされるでしょう。

そこで、試してうまくいった方法を紹介します。なお、元の情報は以下になります。

前提

WSL2インストール済みで動作確認が完了していること。

1. VMイメージダウンロード

WSL2上でLinuxを動作させるためには、WSL2用のパッチが適用されたカーネルが必要となります。
通常、Linuxはアプリなどを含んだ一つのパッケージとして、配布されています。一般的に左記のパッケージをディストリビューションと呼びます。ディストリビューションは作る会社や、組織によって、ちょっとずつ特色があります。

有名なものがUbuntuや、CentOS、Redhatなどです。

ありがたいことにUbuntuは公式でWSL用のイメージを作成してくれています。
以下からイメージをダウンロードしましょう。

※特定のバージョンが良ければ、上記フォルダの近辺をあさってください。

2. ディストリビューション イメージインポート

オプションは3つで、名前、ディスクイメージを格納するパス、先ほどダウンロードしたイメージのフルパスです。

詳細は他の情報に譲りますが、WSL2ではWSL1と違ってHyper-vのHDDイメージを作成し、それを利用します。

イメージインポート
PS C:\> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2
PS C:\> wsl --import Ubuntu2 '~\AppData\Local\Ubuntu2' 'D:\ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz'
PS C:\> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  Ubuntu2                Stopped         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2

3. 実行

上記で見たようにWSLコマンドで確認した結果StatusはStoppedになっています。
また、wslコマンドを実行すると、最初にインストールしていたディストリビューションが起動します。
で、新たに作成したUbuntu2を起動するにはどうするかというと、以下で実行できます

Linux実行
PS C:\> wsl -d Ubuntu2
root@DESKTOP-UIMJQCQ:/mnt/c#

※このコマンドオプション、わかりにくいですよね!

そのた

あとは、WSLと同じ操作になるため、exitするなり、Ctrl+Dを実行するなりでPowerShellへもどります。
このとき、しばらくはWSLが実行されているように見えますが、自動的に終了するようです。

WSLlogout後のステータス
monta@DESKTOP-UIMJQCQ:/mnt/c$ logout
PS C:\> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  Ubuntu2                Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2

新たにインストールしたUbuntu2をWSLコマンドだけで起動するためにはデフォルトを変更すればよいでしょう。

デフォルト変更
PS C:\> wsl --set-default Ubuntu2
PS C:\> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu2                Running         2
  Ubuntu                 Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2

バカバカWSLを増やさずともDockerを実行するのが良いと思います。

が、同時にクリーンな環境を欲しいなどの要件で、今回の方法を実現したい人は多いと思いまとめさせていただきました。

さて、Docker Desktopを継続するか、アンインストールするか考えよう。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?