windows:wsl

文書の過去の版を表示しています。


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 で実行する技術は KVMVMwareVirtualBoxXenHyper-VDocker… など今までもたくさんあったが、どれも起動が遅く、非常に隔離された環境に存在し、多くのコンピューターリソースを消費し、それを管理する時間が必要なものであった。それに比べて 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 ディストリビューションを選択する。
wslstore

ここでは、230 円だったので Fedora Remix を購入してみた。
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
        使用法を表示します。
  • windows/wsl.1568383795.txt.gz
  • 最終更新: 2019/09/13 23:09
  • by ともやん