WSL2入門メモ
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のインストール (コマンドからインストール)
/mnt
にマウントされています。Cドライブなら/mnt/c
です。linux上でexplorer.exe .
とするとエクスプローラーが起動します。
linuxを起動しておき、ファイラから\\wsl$
(\\wsl$\Ubuntu
)を直接開いてもアクセスできます。
「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
を開きます。
{
"$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」というのもあるみたいでその辺りも調べたい。
Author And Source
この問題について(WSL2入門メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/kamiya-kei/items/b9e9df5386adb88a9523著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .