差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| windows:wsl [2020/09/09 06:55] – [genie-systemd の fork] ともやん | windows:wsl [2024/02/04 13:41] (現在) – ↷ 移動操作に合わせてリンクを書き換えました。 非ログインユーザー | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | < | + | ~~CLOSETOC~~ |
| - | < | + | |
| - | #result pre, #mincode pre { | + | |
| - | overflow: hidden; | + | |
| - | font-size: 10px; | + | |
| - | } | + | |
| - | # | + | |
| - | height: 250px; | + | |
| - | overflow: scroll; | + | |
| - | overflow-x: hidden; | + | |
| - | font-size: 10px; | + | |
| - | } | + | |
| - | #mintbl table { | + | |
| - | font-size: 12px; | + | |
| - | } | + | |
| - | #mintbl td pre { | + | |
| - | margin: 0; | + | |
| - | } | + | |
| - | #img_long { | + | |
| - | height: 400px; | + | |
| - | overflow: scroll; | + | |
| - | overflow-x: hidden; | + | |
| - | } | + | |
| - | .dokuwiki .plugin_wrap table { | + | |
| - | width: auto; | + | |
| - | } | + | |
| - | #logo { | + | |
| - | background-color: | + | |
| - | padding: 10px; | + | |
| - | width: fit-content; | + | |
| - | } | + | |
| - | #logo p { | + | |
| - | margin: 0; | + | |
| - | } | + | |
| - | </ | + | |
| - | </ | + | |
| ====== Windows Subsystem for Linux 2 (WSL 2) ====== | ====== Windows Subsystem for Linux 2 (WSL 2) ====== | ||
| ソースコード: | ソースコード: | ||
| {{: | {{: | ||
| \\ | \\ | ||
| - | Windows Subsystem for Linux 2 (以下 WSL 2) は、2019/ | + | Windows Subsystem for Linux 2 (以下 WSL 2) は、2019/ |
| Linux カーネルが Windows に同梱されるのは、今回が初である。(Microsoft は過去にも 2018 年に [[https:// | Linux カーネルが Windows に同梱されるのは、今回が初である。(Microsoft は過去にも 2018 年に [[https:// | ||
| \\ | \\ | ||
| 行 50: | 行 15: | ||
| * そして何よりも VM の構成や管理が不要 | * そして何よりも VM の構成や管理が不要 | ||
| WSL は、Linux の ELF フォーマット形式のバイナリ実行ファイルを Windows でネイティブ実行できるようにするための互換レイヤーであるが、WSL 1 では一部で互換性の問題があったが、WSL 2 では Linux カーネルを Windows に内臓したことで__**完全なシステムコールの互換性**__を提供すると伴に、__**ファイルシステムのパフォーマンスが劇的に向上**__している。\\ | WSL は、Linux の ELF フォーマット形式のバイナリ実行ファイルを Windows でネイティブ実行できるようにするための互換レイヤーであるが、WSL 1 では一部で互換性の問題があったが、WSL 2 では Linux カーネルを Windows に内臓したことで__**完全なシステムコールの互換性**__を提供すると伴に、__**ファイルシステムのパフォーマンスが劇的に向上**__している。\\ | ||
| + | |||
| + | {{INLINETOC wide 1-2}} | ||
| + | \\ | ||
| ===== インストール ===== | ===== インストール ===== | ||
| + | WSL 2 で Fedora を利用するためのおすすめの方法は、[[.wsl: | ||
| + | |||
| [[.wsl: | [[.wsl: | ||
| - | [[.wsl: | + | [[.wsl: |
| - | ※**LxRunOffline** | + | <wrap em>※WSL 2 + **LxRunOffline** で利用するなら、**Fedora Remix** を購入する必要はない。</ |
| [[.wsl: | [[.wsl: | ||
| - | ===== 日本語環境に設定 | + | ===== 以下は Fedora Remix での過去の手順 ===== |
| + | |||
| + | ==== 日本語環境に設定 ==== | ||
| 標準のインストールだと日本語が **□** に文字化けする。\\ | 標準のインストールだと日本語が **□** に文字化けする。\\ | ||
| これはターミナルのフォントが日本語フォントになっていない為である。\\ | これはターミナルのフォントが日本語フォントになっていない為である。\\ | ||
| 行 154: | 行 126: | ||
| </ | </ | ||
| - | ==== WSL 2 の systemd 問題 | + | === WSL 2 の systemd 問題 === |
| システムロケール設定を **ja_JP.UTF-8** に変更する。\\ | システムロケール設定を **ja_JP.UTF-8** に変更する。\\ | ||
| < | < | ||
| 行 189: | 行 161: | ||
| 現時点 (2019/09/16 現在) の WSL 2 では、**systemd** はサポートされていない。\\ | 現時点 (2019/09/16 現在) の WSL 2 では、**systemd** はサポートされていない。\\ | ||
| + | [[https:// | ||
| [[https:// | [[https:// | ||
| 今後 Microsoft によって systemd が有効化される可能性はあると思う。\\ | 今後 Microsoft によって systemd が有効化される可能性はあると思う。\\ | ||
| 行 214: | 行 187: | ||
| </ | </ | ||
| - | ==== genie-systemd の fork ==== | + | === genie-systemd の fork === |
| 本家: [[https:// | 本家: [[https:// | ||
| 元ネタ: [[https:// | 元ネタ: [[https:// | ||
| 行 260: | 行 233: | ||
| LC_ALL= | LC_ALL= | ||
| </ | </ | ||
| - | < | + | < |
| - | === getty@tty1.service の無効化 | + | == getty@tty1.service の無効化 == |
| 本家のドキュメント [[https:// | 本家のドキュメント [[https:// | ||
| <WRAP prewrap 100%> | <WRAP prewrap 100%> | ||
| 行 295: | 行 268: | ||
| </ | </ | ||
| - | === 毎回 genie -s を実行しなくても良い方法 | + | == 毎回 genie -s を実行しなくても良い方法 == |
| WSL 2 を起動する度に systemd を有効化するのは手間である。\\ | WSL 2 を起動する度に systemd を有効化するのは手間である。\\ | ||
| そこで以下のように bash 起動時に自動で有効化することが出来る。(お好みで...)\\ | そこで以下のように bash 起動時に自動で有効化することが出来る。(お好みで...)\\ | ||
| 行 310: | 行 283: | ||
| </ | </ | ||
| - | ===== 基本的なコマンドのインストール | + | ==== 基本的なコマンドのインストール ==== |
| [[https:// | [[https:// | ||
| - | ==== キャッシュのキープ | + | === キャッシュのキープ === |
| お好みで以下の設定を行っておくと RPM パッケージがキャッシュされるようになる。\\ | お好みで以下の設定を行っておくと RPM パッケージがキャッシュされるようになる。\\ | ||
| < | < | ||
| 行 337: | 行 310: | ||
| </ | </ | ||
| - | ==== パッケージのインストール | + | === パッケージのインストール === |
| **tmux - 端末多重化ソフトウェア と htop - 高機能タスクマネージャー**\\ | **tmux - 端末多重化ソフトウェア と htop - 高機能タスクマネージャー**\\ | ||
| \\ | \\ | ||
| 行 418: | 行 391: | ||
| </ | </ | ||
| - | ===== WSL 2 ファイルシステムへのアクセス | + | ==== WSL 2 ファイルシステムへのアクセス ==== |
| WSL 2 のファイルシステムへのアクセスは PowerShell で **\\wsl$\< | WSL 2 のファイルシステムへのアクセスは PowerShell で **\\wsl$\< | ||
| これは Plan 9 Network Provider (9p と省略) を利用して提供されるネットワーク共有である。\\ | これは Plan 9 Network Provider (9p と省略) を利用して提供されるネットワーク共有である。\\ | ||
| 行 448: | 行 421: | ||
| 割り当て解除は **net use x: /delete** で行う。\\ | 割り当て解除は **net use x: /delete** で行う。\\ | ||
| - | ===== 技術情報 | + | ==== 技術情報 ==== |
| [[https:// | [[https:// | ||
| 軽量VM と Windows Sandbox\\ | 軽量VM と Windows Sandbox\\ | ||
| 行 456: | 行 429: | ||
| [[https:// | [[https:// | ||
| - | ==== WSL1 のディスクイメージの場所 | + | === WSL 1 のディスクイメージの場所 === |
| **wsl --set-version < | **wsl --set-version < | ||
| < | < | ||
| 行 462: | 行 435: | ||
| </ | </ | ||
| - | ==== WSL2 のディスクイメージの場所 | + | === WSL2 のディスクイメージの場所 === |
| **wsl --set-version < | **wsl --set-version < | ||
| < | < | ||
| 行 502: | 行 475: | ||
| </ | </ | ||
| - | ==== その他参考文献 | + | === その他参考文献 === |
| [[https:// | [[https:// | ||
| - | ===== .NET Core ===== | + | ==== .NET Core ==== |
| .NET Core を Fedora にインストールする方法は、以下を参照のこと。\\ | .NET Core を Fedora にインストールする方法は、以下を参照のこと。\\ | ||
| - | [[linux:fedora_copr# | + | [[linux:fedora:copr# |
| - | ===== Cloud9 SDK ===== | + | ==== Cloud9 SDK ==== |
| [[javascript: | [[javascript: | ||
| [[.: | [[.: | ||
| - | ===== Fedora Remix の Upgrade | + | ==== Fedora Remix の Upgrade ==== |
| **Fedora 30 → 31**\\ | **Fedora 30 → 31**\\ | ||
| <WRAP prewrap 100%> | <WRAP prewrap 100%> | ||
| 行 526: | 行 499: | ||
| </ | </ | ||
| - | ==== 参考文献 | + | === 参考文献 === |
| [[https:// | [[https:// | ||
| - | ===== トラブルシューティング | + | ==== トラブルシューティング ==== |
| - | ==== 「WSL 2 プロセスはコード 4294967295 で終了しました」が発生する場合 ==== | + | === WSL 2 に接続できない場合 === |
| - | 以下のように表示されて bash が起動しない。\\ | + | [[.:wsl:trouble_shooting|WSL トラブルシューティング]] を参照。\\ |
| - | <WRAP prewrap 100% # | + | |
| - | < | + | |
| - | WSL 2 | + | |
| - | </ | + | |
| - | </ | + | |
| - | もしくは、\\ | + | |
| - | <WRAP prewrap 100% # | + | |
| - | < | + | |
| - | WSL 2 | + | |
| - | [プロセスはコード 4294967295 で終了しました] | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | Windows バージョンは以下の通り。\\ | + | |
| - | <WRAP prewrap 100%> | + | |
| - | <code powershell> | + | |
| - | $ cmd /c ver | + | |
| - | </ | + | |
| - | </ | + | |
| - | <WRAP prewrap 100% # | + | |
| - | < | + | |
| - | + | ||
| - | Microsoft Windows [Version 10.0.19645.1] | + | |
| - | </ | + | |
| - | </ | + | |
| - | **Build 19645.mn_release.20065-1502** で **WSL 2** が動作しないことに気が付いた。\\ | + | |
| - | + | ||
| - | === このような時に試すこと === | + | |
| - | **WSL 1** のディストリビューションは動作するか?\\ | + | |
| - | <WRAP prewrap 100%> | + | |
| - | <code powershell> | + | |
| - | $ wsl -l -v | + | |
| - | </ | + | |
| - | </ | + | |
| - | <WRAP prewrap 100% # | + | |
| - | < | + | |
| - | NAME | + | |
| - | * fedoraremix | + | |
| - | Fedora | + | |
| - | Fedora-WSL1 | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | **WSL 1** のディストリビューションを起動する。\\ | + | |
| - | <WRAP prewrap 100%> | + | |
| - | <code powershell> | + | |
| - | $ wsl -d Fedora-WSL1 | + | |
| - | </ | + | |
| - | </ | + | |
| - | <WRAP prewrap 100% # | + | |
| - | < | + | |
| - | [root@Cmon tomoyan]# uname -a | + | |
| - | Linux Cmon 4.4.0-19645-Microsoft # | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | **WSL 1** のディストリビューションは問題なく動作するので、利用したいディストリビューションを **WSL 1** に戻して、不具合が解消されるまで待つことにする。\\ | + | |
| - | <WRAP prewrap 100%> | + | |
| - | <code powershell> | + | |
| - | $ wsl --set-version fedoraremix 1 | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | しかし、今回は **WSL 2** から **WSL 1** に変換しようとしても、**WSL 2** と表示されるだけで変換すらできない。\\ | + | |
| - | <WRAP prewrap 100% # | + | |
| - | < | + | |
| - | 変換中です。この処理には数分かかることがあります... | + | |
| - | WSL 2 | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | このような場合は潔く諦める。😅💦💦💦笑\\ | + | |
| - | (うそです。Windows Update を確認しましょう。)\\ | + | |
| - | + | ||
| - | === ちなみに以下の方法では解決しなかった === | + | |
| - | <WRAP prewrap 100%> | + | |
| - | <code powershell> | + | |
| - | $ sudo netsh winsock reset | + | |
| - | </ | + | |
| - | </ | + | |
| - | <WRAP prewrap 100% # | + | |
| - | < | + | |
| - | + | ||
| - | Winsock カタログをリセットしました。 | + | |
| - | リセットを完了するためにコンピューターを再起動する必要があります。 | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | === 最新の Windows Update で更新する === | + | |
| - | {{:windows:wsl2_exit_code_4294967295_windows_update_001.png? | + | |
| - | + | ||
| - | 更新後に **bash** を起動する。\\ | + | |
| - | <WRAP prewrap 100%> | + | |
| - | <code powershell> | + | |
| - | $ uname -a | + | |
| - | </ | + | |
| - | </ | + | |
| - | <WRAP prewrap 100% # | + | |
| - | < | + | |
| - | Linux Cmon-wsl 4.19.104-microsoft-standard #1 SMP Wed Feb 19 06:37:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | ==== WSL 2 で bash に接続されない場合 (build 19559.rs_prerelease.200131-1437 で発生) ==== | + | |
| - | **2020/2/21 - build 19564.rs_prerelease.200207-1438** で改善\\ | + | |
| - | < | + | |
| - | Microsoft Windows [Version 10.0.19559.1000] | + | |
| - | (c) 2020 Microsoft Corporation. All rights reserved. | + | |
| - | + | ||
| - | > bash | + | |
| - | + | ||
| - | > bash | + | |
| - | + | ||
| - | > | + | |
| - | </ | + | |
| - | **※プロンプトが $ に切り替わらない。**\\ | + | |
| - | + | ||
| - | === Windows Subsystem for Linux 1 (WSL 1) を使用するようにディストリビューションを設定してみる === | + | |
| - | **wsl –set-version < | + | |
| - | ※ここでは < | + | |
| - | \\ | + | |
| - | < | + | |
| - | > wsl -l -v | + | |
| - | NAME | + | |
| - | * fedoraremix | + | |
| - | + | ||
| - | > wsl --set-version fedoraremix 1 | + | |
| - | Conversion in progress, this may take a few minutes... | + | |
| - | Conversion complete. | + | |
| - | + | ||
| - | > wsl -l -v | + | |
| - | NAME | + | |
| - | * fedoraremix | + | |
| - | + | ||
| - | > bash | + | |
| - | $ | + | |
| - | </ | + | |
| - | **※WSL 1 だとプロンプトが $ に切り替わる。**\\ | + | |
| - | + | ||
| - | === 再び Windows Subsystem for Linux 2 (WSL 2) を使用するようにディストリビューションを設定してみる === | + | |
| - | **wsl –set-version < | + | |
| - | ※ここでは < | + | |
| - | \\ | + | |
| - | < | + | |
| - | >wsl -l -v | + | |
| - | NAME | + | |
| - | * fedoraremix | + | |
| - | + | ||
| - | > wsl --set-version fedoraremix 1 | + | |
| - | Conversion in progress, this may take a few minutes... | + | |
| - | The distribution is already the requested version. | + | |
| - | + | ||
| - | > wsl --set-version fedoraremix 2 | + | |
| - | Conversion in progress, this may take a few minutes... | + | |
| - | For information on key differences with WSL 2 please visit https:// | + | |
| - | Conversion complete. | + | |
| - | + | ||
| - | > wsl -l -v | + | |
| - | NAME | + | |
| - | * fedoraremix | + | |
| - | + | ||
| - | > bash | + | |
| - | + | ||
| - | > | + | |
| - | </ | + | |
| - | **※WLS 2 だとプロンプトが $ に切り替わらない。**\\ | + | |
| - | 原因不明なのでひとまず WSL 1 で使用することとする。\\ | + | |
| - | ==== System has not been booted with systemd as init system (PID 1). が発生する | + | === System has not been booted with systemd as init system (PID 1). が発生する === |
| < | < | ||
| System has not been booted with systemd as init system (PID 1). Can't operate. | System has not been booted with systemd as init system (PID 1). Can't operate. | ||
| 行 738: | 行 542: | ||
| </ | </ | ||
| - | === Process Monitor で WSL 2 の起動プロセスを追ってみた | + | == Process Monitor で WSL 2 の起動プロセスを追ってみた == |
| コマンドプロンプトより bash を起動すると以下のような流れで WSL 2 環境がロードされている。\\ | コマンドプロンプトより bash を起動すると以下のような流れで WSL 2 環境がロードされている。\\ | ||
| <WRAP prewrap 100%> | <WRAP prewrap 100%> | ||
| 行 761: | 行 565: | ||
| おおよそこのような流れのようである。\\ | おおよそこのような流れのようである。\\ | ||
| - | ==== genie-systemd の fork ==== | + | === genie-systemd の fork === |
| [[# | [[# | ||
| \\ | \\ | ||
| 行 808: | 行 612: | ||
| </ | </ | ||
| - | ==== genie-systemd (最初に試した時の資料です) | + | === genie-systemd (最初に試した時の資料です) === |
| [[https:// | [[https:// | ||
| <WRAP prewrap 100%> | <WRAP prewrap 100%> | ||
| 行 917: | 行 721: | ||
| [[https:// | [[https:// | ||
| - | ===== 参考文献 | + | ==== 参考文献 ==== |
| [[https:// | [[https:// | ||
| [[https:// | [[https:// | ||