4
16

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.

WSL2入門メモ

Posted at

windows上で超軽量なLinuxが動くようになったみたいなのでその入門メモです。
wsl2を導入してUbutuとCentOS7やCentOS8(無料)を入れて起動したり、エクスポートしたり削除したりするとこまで。
wsl1からwsl2への移行の話はありません。環境はWindows 10 Homeです。

WSL2 (Windows Subsystem for Linux 2)とは

Linux 用 Windows サブシステムとは
要するに超軽量な仮想PCを利用してwindowsからLinuxが動かせるという感じみたいです。正直ハイパーバイザー(Hyper-v)とかはまだよく分からない...
ターミナルから数秒でLinuxが起動して使える、ターミナルを閉じてしばらくするとLinuxが自動で終了する、とコマンドプロンプト開いてコマンド打つくらいの気軽さでLinuxが使えるようになったみたいです、凄い!
dockerとかも動くみたいなので、windowsでの開発が捗りそう。

WSL2導入

まずWindowsをアップデートします。WSL2を使うにはWindows May Update 2020 (2004ビルド19041)以上が必要。
(私が導入した時点ではまだWindows Updateに来てなかったのでWindows 10 のダウンロードからアップデートしました。)

Windows 10 用 Windows Subsystem for Linux のインストール ガイドに従ってWSL2をインストールしていきます。
PowerShellを管理者として実行し、以下を実行します。

# "Linux 用 Windows サブシステム" オプション機能を有効にする
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# "仮想マシン プラットフォーム" のオプション コンポーネントを有効にする
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

ここで一旦PCを再起動して以下コマンドを実行します。ここからはPowerShellを管理者として実行する必要はありません。

# WSL 2 を既定のバージョンとして設定する
wsl --set-default-version 2

私は上記導入で上手く行かず、途中でWSL 2 Linux カーネルの更新から最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロードしてインストール後再起動して進めたらいけました。

Ubuntuのインストール

「Windows Store」から「Ubuntu」を検索してインストールします。終わり!簡単!
以下コマンドでインストール済みのディストリビューションの一覧が表示できます。

wsl -l -v # wsl --list --verbose

起動

wsl -d Ubuntu # wsl --distribution Ubuntu

初回起動時はLinux用アカウントとパスワードの設定を求められるので設定します。

双方向のアクセス

linux側からwindows上のファイルシステムにアクセスする方法

  • 最初から/mntにマウントされています。Cドライブなら/mnt/cです。

windows側からlinux上のファイルシステムにアクセスする方法

  • linux上でexplorer.exe .とするとエクスプローラーが起動します。

  • linuxを起動しておき、ファイラから\\wsl$ (\\wsl$\Ubuntu)を直接開いてもアクセスできます。

CentOSのインストール (コマンドからインストール)

「Windows Store」から「CentOS」を検索すると有料のものが出てきますが、githubでもWSL2用CentOSが配布されていてそちらなら無料で入れれるみたいです。

https://github.com/yuk7/CentWSL/releasesでCentOS7もCentOS8も配布されています。
今回はCentOS8を入れてみます。もちろん両方入れることも可能です。

Assetsのところにzipファイルがあるのでダウンロードして解凍します。
中のCentOS8.exeを実行してもインストールできますが、コマンドからインポートすれば任意の登録名でインストールでき、保存先も好きに指定できるので、せっかくなのでコマンドからインポートしてみます。
コマンドからのインポートなら同一ディストリビューションを複数インストールすることも可能です。

rootfs.tar.gzが入ってますがインポートするにはtar.gz形式からtar形式に変換しないと駄目?みたいです。
windowsで変換する方法を調べましたが、すぐにもうそんなことを調べる必要は無いことに気づきました!
さっき入れたUbuntu上から変換してみます。以下例ではE:\wls2\images\CentOS8下にrootfs.tar.gzを解凍した場合です。

wsl -d Ubuntu
cd /mnt/e/wsl2/images/CentOS8
gzip -d rootfs.tar.gz

予め保存先ディレクトリを作ってからインポートします。
以下の例ではE:\wsl2\testディレクトリを作りそこにインポートしています。

# wsl --import <任意の登録名> "<保存先パス>" "<rootfs.tarのパス>" --version 2
wsl --import test-centos8 "E:\wsl2\test" "E:\wsl2\images\CentOS8\rootfs.tar" --version 2

これでインストール完了です。E:\wsl2\test内にext4.vhdxファイルが生成されています。

インストールしたLinuxの削除・エクスポート等

Windows Subsystem for Linux のコマンド リファレンス

エクスポートは以下コマンドでできます。インポートの方法は上のCentOSのインストールのところに記載してます。

wsl --export <登録名> <保存先パス/ファイル名.tar>

削除は以下コマンドでできます。データ(ext4.vhdx)も削除されます。

wsl --unregister <登録名>

おまけ:Windows TerminalでWSL2をより便利に使う

いちいちPowerShellからコマンドでLinuxを起動するのも面倒なので「Windows Store」から「Windows Terminal」をインストールして設定していきます。
Windows Terminalを起動するとタブ横の「∨」をクリックするとインストール済みのディストリビューションの一覧が出てくるのでそこから開くだけでWSL2を起動できます。
また、Windows Terminal起動時にデフォルトでUbuntuを起動するようにしたり、起動時のディレクトリを設定することも可能です。
設定方法は「∨」→「設定」からsetting.jsonを開きます。

setting.json
{
  "$schema": "https://aka.ms/terminal-profiles-schema",

  "defaultProfile": "{********-****-****-****-************}",
~

  "profiles": {
    "defaults": {
      // Put settings here that you want to apply to all profiles.
    },
    "list": [
~
      {
        "guid": "{********-****-****-****-************}",
        "hidden": false,
        "name": "Ubuntu",
        "source": "Windows.Terminal.Wsl",
        "startingDirectory": "//wsl$/Ubuntu/usr/local"
      },
~
    ]
  },
~
}
  • "profiles""list"からデフォルトにしたいディストリビューションを探し、その"guid"の値を"defaultProfile"に設定するとWindows Terminal起動時のデフォルトに設定できます。
  • "profiles""list"からデフォルトにしたいディストリビューションを探し、"startingDirectory"を上の様に追記すれば起動時の開始ディレクトリを設定できます。

docker

次はdockerを入れてみてる予定。
普通にlinuxに直接dockerを入れれば良い様な気がするけど、「Docker Desktop WSL 2」というのもあるみたいでその辺りも調べたい。

4
16
2

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
4
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?