目次
文書の過去の版を表示しています。
Windows Subsystem for Linux 2 (WSL 2)
ソースコード: GitHub - microsoft/WSL2-Linux-Kernel: The source for the Linux kernel used in Windows Subsystem for Linux 2 (WSL2)
Windows Subsystem for Linux 2 (以下 WSL 2) は、2019/05/06 にブログで発表され、2019年6月末までに Windows Insider Program を通じて Microsoft が Windows で Linux カーネルを出荷する試みである。Windows 10 Insider Previews も参照のこと。
Linux カーネルが Windows に同梱されるのは、今回が初である。(Microsoft は過去にも 2018 年に Microsoft Azure Sphere で Linux カーネル自体は出荷した事がある)
WSL 2 は Microsoft がパッチを当てた Linux カーネル (初期ビルドでは Linux Kernel Version 4.19 ベース) を lightweight utility virtual machine (軽量ユーティリティ仮想マシン) (以下 VM) 内で実行する。この Linux カーネルは WSL 2 専用に構築された小型で軽量な WSL 2 Linux カーネルである。
VM で実行する技術は KVM、VMware、VirtualBox、Xen、Hyper-V、Docker… など今までもたくさんあったが、どれも起動が遅く、非常に隔離された環境に存在し、多くのコンピューターリソースを消費し、それを管理する時間が必要なものであった。それに比べて WSL 2 が他の VM と異なる点は以下の通りである。
- Windows と Linux 間の高レベルの統合
- 非常に高速な起動時間 (2 秒以内に機能する bash シェルにアクセスできる)
- 小さなリソースフットプリント
- そして何よりも VM の構成や管理が不要
WSL は、Linux の ELF フォーマット形式のバイナリ実行ファイルを Windows でネイティブ実行できるようにするための互換レイヤーであるが、WSL 1 では一部で互換性の問題があったが、WSL 2 では Linux カーネルを Windows に内臓したことで完全なシステムコールの互換性を提供すると伴に、ファイルシステムのパフォーマンスが劇的に向上している。
インストール
コマンドプロンプトより Windows 10 ビルド 18917 以降を実行していることを確認する。
> ver Microsoft Windows [Version 10.0.18362.356]
[スタート] - [設定] - [更新とセキュリティ] - [Windows Update] の順に選択し、[更新プログラムのチェック] を実行する。
※ 2019/09/13 現在 Build 18917 以降は Windows 10 Insider Previews としてのみ公開されている。
PowerShell を管理者実行する。
> powershell start-process powershell -verb runas
管理者実行した PowerShell で Hyper-V が有効になっていることを確認する。
PS > bcdedit /enum | find `"hypervisorlaunchtype`" hypervisorlaunchtype Auto
Hyper-V が Off の場合は On にする。
PS > bcdedit /enum | find `"hypervisorlaunchtype`" hypervisorlaunchtype Off
PS > bcdedit /set hypervisorlaunchtype auto この操作を正しく終了しました。
Hyper-V を有効化した場合は PC を一旦再起動する。
PS > shutdown /r /t 0
再起動した場合は再び PowerShell を管理者として実行する。
“仮想マシン プラットフォーム” のオプション コンポーネントを有効にする。
PS > Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform Path : Online : True RestartNeeded : False
“仮想マシン プラットフォーム” を有効化したら再び PC を再起動する。
PS > shutdown /r /t 0
再起動した場合は再び PowerShell を管理者として実行する。
Windows Subsystem for Linux をインストールする。
PS > Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux この操作を完了するために、今すぐコンピューターを再起動しますか? [Y] Yes [N] No [?] ヘルプ (既定値は "Y"): <- Enter キーを入力
https://aka.ms/wslstore - Microsoft Store を開いて、自分の好きな Linux ディストリビューションを選択する。
ここでは、230 円だったので Fedora Remix を購入してみた。
ダウンロードが完了したら [スタート] - [Fedora Rimix for WSL] を起動してみる。
Unpacking Linux filesystem image, this may take a few minutes... WslRegisterDistribution failed with error: 0x80070057 Error: 0x80070057 ??????????????? Press any key to continue...
化けているが… 本当はこういうエラーらしい。
Unpacking Linux filesystem image, this may take a few minutes... WslRegisterDistribution failed with error: 0x80070057 Error: 0x80070057 The parameter is incorrect. Press any key to continue...
Windows Subsystem for Linux を一旦無効化する。
PS > Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux この操作を完了するために、今すぐコンピューターを再起動しますか? [Y] Yes [N] No [?] ヘルプ (既定値は "Y"): <- Enter キーを入力
再起動したら再び PowerShell を管理者として実行する。
Windows Subsystem for Linux を再度有効化して再起動する。
PS > Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux この操作を完了するために、今すぐコンピューターを再起動しますか? [Y] Yes [N] No [?] ヘルプ (既定値は "Y"): <- Enter キーを入力
再起動が完了したら [スタート] - [Fedora Rimix for WSL] を起動する。
すると今度はきちんと以下のような状態になる。
Unpacking Linux filesystem image, this may take a few minutes... Welcome to Fedora Remix for WSL. Powered by Pengwin Enterprise. Please create a default Linux user account. The username does not need to match your Windows username. Enter new UNIX username:
最初にデフォルト Linux ユーザーの作成を行う。
Welcome to Fedora Remix for WSL. Powered by Pengwin Enterprise. Please create a default Linux user account. The username does not need to match your Windows username. Enter new UNIX username: tomoyan <- ユーザーを入力する(Windows ユーザーと一致している必要はない) Changing password for user tomoyan. New password: <- UNIX ユーザーのパスワードを入力 Retype new password: <- UNIX ユーザーの確認用パスワードを入力 passwd: all authentication tokens updated successfully. Installation successful! [tomoyan@Cmon ~]$ exit
再び PowerShell を管理者として実行する。
wsl -l を実行して Fedora Remix が初期化済みであることを確認する。
PS > wsl -l Windows Subsystem for Linux ディストリビューション: fedoraremix (既定)
念のため再度確認!! wsl コマンドに –set-version オプションが無い場合は Windows 10 ビルド 18917 以降を実行していないので Windows を更新する。
PS > wsl --help Copyright (c) Microsoft Corporation. All rights reserved. 使用法: wsl.exe [Argument] [Options...] [CommandLine] Linux バイナリを実行するための引数: コマンド ラインを指定しないと、wsl.exe は既定のシェルを起動します。 --exec, -e <コマンド ライン> 指定したコマンドを、既定の Linux シェルを使用しないで実行します。 -- 残りのコマンド ラインをそのまま渡します。 オプション: --distribution, -d <ディストリビューション名> 指定したディストリビューションを実行します。 --user, -u <ユーザー名> 指定したユーザーとして実行します。 Windows Subsystem for Linux を管理するための引数: --export <ディストリビューション名> <ファイル名> ディストリビューションを tar ファイルにエクスポートします。 標準出力の場合は、ファイル名を - にできます。 --import <ディストリビューション名> <インストール場所> <ファイル名> 指定した tar ファイルを新しいディストリビューションとしてインポートします。 標準入力の場合は、ファイル名を - にできます。 --list, -l [Options] ディストリビューションを一覧表示します。 オプション: --all 現在インストール中またはアンインストール中のものを含めて すべてのディストリビューションを一覧表示します。 --running 現在実行中のディストリビューションのみを一覧表示します。 -setdefault, -s <ディストリビューション名> ディストリビューションを既定として設定します。 --terminate, -t <ディストリビューション名> ディストリビューションを終了します。 --unregister <ディストリビューション名> ディストリビューションの登録を解除します。 --upgrade <ディストリビューション名> ディストリビューションを WslFs ファイル システム形式にアップグレードします。 --help 使用法を表示します。