windows:wsl

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
windows:wsl [2020/09/13 04:02] ともやんwindows:wsl [2024/02/04 13:41] (現在) – ↷ 移動操作に合わせてリンクを書き換えました。 非ログインユーザー
行 4: 行 4:
 {{:windows:wsl_tmux.png?470|WSL 2 Terminal}} {{:windows:wsl_tmux.png?470|WSL 2 Terminal}}
 \\ \\
- Windows Subsystem for Linux 2 (以下 WSL 2) は、2019/05/06 に[[https://devblogs.microsoft.com/commandline/announcing-wsl-2/|ブログ]]で発表され、2019年6月末までに [[https://insider.windows.com/ja-jp/|Windows Insider Program]] を通じて Microsoft が Windows で Linux カーネルを出荷する試みである。[[windows:windows_10_insider_previews|Windows 10 Insider Previews]] も参照のこと。\\+ Windows Subsystem for Linux 2 (以下 WSL 2) は、2019/05/06 に[[https://devblogs.microsoft.com/commandline/announcing-wsl-2/|ブログ WSL2の発表|Windows コマンドライン]]で発表され、2019年6月末までに [[https://insider.windows.com/ja-jp/|Windows Insider Program]] を通じて Microsoft が Windows で Linux カーネルを出荷する試みである。[[windows:windows_10_insider_previews|Windows 10 Insider Previews]] も参照のこと。\\
  Linux カーネルが Windows に同梱されるのは、今回が初である。(Microsoft は過去にも 2018 年に [[https://azure.microsoft.com/en-us/blog/introducing-microsoft-azure-sphere-secure-and-power-the-intelligent-edge/|Microsoft Azure Sphere]] で Linux カーネル自体は出荷した事がある)\\  Linux カーネルが Windows に同梱されるのは、今回が初である。(Microsoft は過去にも 2018 年に [[https://azure.microsoft.com/en-us/blog/introducing-microsoft-azure-sphere-secure-and-power-the-intelligent-edge/|Microsoft Azure Sphere]] で Linux カーネル自体は出荷した事がある)\\
 \\ \\
行 15: 行 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:lxrunoffline|LxRunOffline]] を利用してインストールする方法です。\\
 +
 [[.wsl:install|Windows Subsystem for Linux (WSL) Version 2 のインストール]]\\ [[.wsl:install|Windows Subsystem for Linux (WSL) Version 2 のインストール]]\\
-[[.wsl:lxrunoffline|LxRunOffline - システムドライブ外に WSL 環境を構築する方法]]\\ +[[.wsl:lxrunoffline|LxRunOffline - システムドライブ外に WSL 環境を構築する方法]] **__(こちらの手順は最新化されています)__**\\ 
-※**LxRunOffline** を WSL 2 で利用するなら、**Fedora Remix** を購入する必要はない。\\+<wrap em>WSL 2 + **LxRunOffline** で利用するなら、**Fedora Remix** を購入する必要はない。</wrap>\\
  
 [[.wsl:install_wsl1|Windows Subsystem for Linux (WSL) Version 1 のインストール]](WSL 2 ではなく WSL 1 を導入する場合)\\ [[.wsl:install_wsl1|Windows Subsystem for Linux (WSL) Version 1 のインストール]](WSL 2 ではなく WSL 1 を導入する場合)\\
  
-===== 日本語環境に設定 =====+===== 以下は Fedora Remix での過去の手順 ===== 
 + 
 +==== 日本語環境に設定 ====
 標準のインストールだと日本語が **□** に文字化けする。\\ 標準のインストールだと日本語が **□** に文字化けする。\\
 これはターミナルのフォントが日本語フォントになっていない為である。\\ これはターミナルのフォントが日本語フォントになっていない為である。\\
行 119: 行 126:
 </WRAP> </WRAP>
  
-==== WSL 2 の systemd 問題 ====+=== WSL 2 の systemd 問題 ===
 システムロケール設定を **ja_JP.UTF-8** に変更する。\\ システムロケール設定を **ja_JP.UTF-8** に変更する。\\
 <code> <code>
行 154: 行 161:
  
 現時点 (2019/09/16 現在) の WSL 2 では、**systemd** はサポートされていない。\\ 現時点 (2019/09/16 現在) の WSL 2 では、**systemd** はサポートされていない。\\
 +[[https://github.com/microsoft/WSL/issues/1579|]]\\
 [[https://github.com/systemd/systemd/issues/8036|Systemd support for Windows Subsystem for Linux (WSL) · Issue #8036 · systemd/systemd · GitHub]]\\ [[https://github.com/systemd/systemd/issues/8036|Systemd support for Windows Subsystem for Linux (WSL) · Issue #8036 · systemd/systemd · GitHub]]\\
 今後 Microsoft によって systemd が有効化される可能性はあると思う。\\ 今後 Microsoft によって systemd が有効化される可能性はあると思う。\\
行 179: 行 187:
 </code> </code>
  
-==== genie-systemd の fork ====+=== genie-systemd の fork ===
 本家: [[https://github.com/arkane-systems/genie|arkane-systems/genie]]\\ 本家: [[https://github.com/arkane-systems/genie|arkane-systems/genie]]\\
 元ネタ: [[https://gist.github.com/therealkenc/f5109716abd885b2334f6bdaf8848b29|wsltub leftovers]]\\ 元ネタ: [[https://gist.github.com/therealkenc/f5109716abd885b2334f6bdaf8848b29|wsltub leftovers]]\\
行 225: 行 233:
 LC_ALL= LC_ALL=
 </code> </code>
-<html><span style="color: blue; font-size: 48px;"><b>genie 素晴らしい!!</b></span></html>\\+<html><span style="color: blue; font-size: 48px;"><b>genie🧚‍♂️ 素晴らしい!!😍</b></span></html>\\
  
-=== getty@tty1.service の無効化 ===+== getty@tty1.service の無効化 ==
 本家のドキュメント [[https://github.com/arkane-systems/genie|arkane-systems/genie]] にあるように、**getty@tty1.service** を無効にする。\\ 本家のドキュメント [[https://github.com/arkane-systems/genie|arkane-systems/genie]] にあるように、**getty@tty1.service** を無効にする。\\
 <WRAP prewrap 100%> <WRAP prewrap 100%>
行 260: 行 268:
 </WRAP> </WRAP>
  
-=== 毎回 genie -s を実行しなくても良い方法 ===+== 毎回 genie -s を実行しなくても良い方法 ==
 WSL 2 を起動する度に systemd を有効化するのは手間である。\\ WSL 2 を起動する度に systemd を有効化するのは手間である。\\
 そこで以下のように bash 起動時に自動で有効化することが出来る。(お好みで...)\\ そこで以下のように bash 起動時に自動で有効化することが出来る。(お好みで...)\\
行 275: 行 283:
 </WRAP> </WRAP>
  
-===== 基本的なコマンドのインストール =====+==== 基本的なコマンドのインストール ====
 [[https://www.tomoyan.net/linux/fedora_minimal_install#%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB|Fedora minimal インストール - 基本的なコマンドのインストール]] を参考に基本的なコマンドをインストールする。\\ [[https://www.tomoyan.net/linux/fedora_minimal_install#%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB|Fedora minimal インストール - 基本的なコマンドのインストール]] を参考に基本的なコマンドをインストールする。\\
  
-==== キャッシュのキープ ====+=== キャッシュのキープ ===
 お好みで以下の設定を行っておくと RPM パッケージがキャッシュされるようになる。\\ お好みで以下の設定を行っておくと RPM パッケージがキャッシュされるようになる。\\
 <code> <code>
行 302: 行 310:
 </code> </code>
  
-==== パッケージのインストール ====+=== パッケージのインストール ===
 **tmux - 端末多重化ソフトウェア と htop - 高機能タスクマネージャー**\\ **tmux - 端末多重化ソフトウェア と htop - 高機能タスクマネージャー**\\
 \\ \\
行 383: 行 391:
 </code> </code>
  
-===== WSL 2 ファイルシステムへのアクセス =====+==== WSL 2 ファイルシステムへのアクセス ====
 WSL 2 のファイルシステムへのアクセスは PowerShell で **\\wsl$\<distro>** の形式で行うことができる。\\ WSL 2 のファイルシステムへのアクセスは PowerShell で **\\wsl$\<distro>** の形式で行うことができる。\\
 これは Plan 9 Network Provider (9p と省略) を利用して提供されるネットワーク共有である。\\ これは Plan 9 Network Provider (9p と省略) を利用して提供されるネットワーク共有である。\\
行 413: 行 421:
 割り当て解除は **net use x: /delete** で行う。\\ 割り当て解除は **net use x: /delete** で行う。\\
  
-===== 技術情報 =====+==== 技術情報 ====
 [[https://aka.ms/wsl2|WSL 2 | Microsoft Docs]]\\ [[https://aka.ms/wsl2|WSL 2 | Microsoft Docs]]\\
 軽量VM と Windows Sandbox\\ 軽量VM と Windows Sandbox\\
行 421: 行 429:
 [[https://www.atmarkit.co.jp/ait/articles/1710/24/news010_2.html|図解で理解できる(はず)Microsoftの仮想化技術――Windows上で稼働するLinux、動かしているのはどのテクノロジー?(その2) (2/2):その知識、ホントに正しい? Windowsにまつわる都市伝説(95) - @IT]]\\ [[https://www.atmarkit.co.jp/ait/articles/1710/24/news010_2.html|図解で理解できる(はず)Microsoftの仮想化技術――Windows上で稼働するLinux、動かしているのはどのテクノロジー?(その2) (2/2):その知識、ホントに正しい? Windowsにまつわる都市伝説(95) - @IT]]\\
  
-==== WSL1 のディスクイメージの場所 ====+=== WSL 1 のディスクイメージの場所 ===
 **wsl --set-version <distro> 1** で変換処理を行うと、**rootfs** フォルダーにディスクイメージが存在する。\\ **wsl --set-version <distro> 1** で変換処理を行うと、**rootfs** フォルダーにディスクイメージが存在する。\\
 <code> <code>
行 427: 行 435:
 </code> </code>
  
-==== WSL2 のディスクイメージの場所 ====+=== WSL2 のディスクイメージの場所 ===
 **wsl --set-version <distro> 2** で変換処理を行うと、**ext4.vhdx** にディスクイメージが存在する。\\ **wsl --set-version <distro> 2** で変換処理を行うと、**ext4.vhdx** にディスクイメージが存在する。\\
 <html> <html>
行 467: 行 475:
 </html> </html>
  
-==== その他参考文献 ====+=== その他参考文献 ===
 [[https://www.slideshare.net/SatoshiMimura/inside-wsl-180215871|Inside-WSL]]\\ [[https://www.slideshare.net/SatoshiMimura/inside-wsl-180215871|Inside-WSL]]\\
  
-===== .NET Core =====+==== .NET Core ====
 .NET Core を Fedora にインストールする方法は、以下を参照のこと。\\ .NET Core を Fedora にインストールする方法は、以下を参照のこと。\\
-[[linux:fedora_copr#net_core|Fedora Copr リポジトリ - .NET Core]]\\+[[linux:fedora:copr#net_core|Fedora Copr リポジトリ - .NET Core]]\\
  
-===== Cloud9 SDK =====+==== Cloud9 SDK ====
 [[javascript:cloud9_sdk|Cloud9 SDK]] を元にインストールしてみる。\\ [[javascript:cloud9_sdk|Cloud9 SDK]] を元にインストールしてみる。\\
 [[.:wsl:c9sdk|Cloud9 SDK on WSL2]]\\ [[.:wsl:c9sdk|Cloud9 SDK on WSL2]]\\
  
-===== Fedora Remix の Upgrade =====+==== Fedora Remix の Upgrade ====
 **Fedora 30 → 31**\\ **Fedora 30 → 31**\\
 <WRAP prewrap 100%> <WRAP prewrap 100%>
行 491: 行 499:
 </WRAP> </WRAP>
  
-==== 参考文献 ====+=== 参考文献 ===
 [[https://www.whitewaterfoundry.com/blog/2019/11/3/upgrade-fedora-remix-for-wsl-to-31|Upgrade Fedora Remix for WSL to 31 — Pengwin by Whitewater Foundry]]\\ [[https://www.whitewaterfoundry.com/blog/2019/11/3/upgrade-fedora-remix-for-wsl-to-31|Upgrade Fedora Remix for WSL to 31 — Pengwin by Whitewater Foundry]]\\
  
-===== トラブルシューティング =====+==== トラブルシューティング ==== 
 + 
 +=== WSL 2 に接続できない場合 === 
 +[[.:wsl:trouble_shooting|WSL トラブルシューティング]] を参照。\\
  
-==== System has not been booted with systemd as init system (PID 1). が発生する ====+=== System has not been booted with systemd as init system (PID 1). が発生する ===
 <code> <code>
 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.
行 531: 行 542:
 </WRAP> </WRAP>
  
-=== Process Monitor で WSL 2 の起動プロセスを追ってみた ===+== Process Monitor で WSL 2 の起動プロセスを追ってみた ==
 コマンドプロンプトより bash を起動すると以下のような流れで WSL 2 環境がロードされている。\\ コマンドプロンプトより bash を起動すると以下のような流れで WSL 2 環境がロードされている。\\
 <WRAP prewrap 100%> <WRAP prewrap 100%>
行 554: 行 565:
 おおよそこのような流れのようである。\\ おおよそこのような流れのようである。\\
  
-==== genie-systemd の fork ====+=== genie-systemd の fork ===
 [[#genie-systemd_の_fork|genie-systemd の fork]] を参照。\\ [[#genie-systemd_の_fork|genie-systemd の fork]] を参照。\\
 \\ \\
行 601: 行 612:
 </WRAP> </WRAP>
  
-==== genie-systemd (最初に試した時の資料です) ====+=== genie-systemd (最初に試した時の資料です) ===
 [[https://github.com/arkane-systems/genie|arkane-systems/genie: A quick way into a systemd "bottle" for WSL]] を使用してみたいと思う。\\ [[https://github.com/arkane-systems/genie|arkane-systems/genie: A quick way into a systemd "bottle" for WSL]] を使用してみたいと思う。\\
 <WRAP prewrap 100%> <WRAP prewrap 100%>
行 710: 行 721:
 [[https://github.com/dotnet/sdk/issues/2989|Error running self-contained Linux EXE: "This executable is not bound to a managed DLL to execute. The binding value is: 'c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2'" · Issue #2989 · dotnet/sdk]]\\ [[https://github.com/dotnet/sdk/issues/2989|Error running self-contained Linux EXE: "This executable is not bound to a managed DLL to execute. The binding value is: 'c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2'" · Issue #2989 · dotnet/sdk]]\\
  
-===== 参考文献 =====+==== 参考文献 ====
 [[https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-index|WSL 2 | Microsoft Docs]]\\ [[https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-index|WSL 2 | Microsoft Docs]]\\
 [[https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-install|WSL 2 のインストール | Microsoft Docs]]\\ [[https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-install|WSL 2 のインストール | Microsoft Docs]]\\
  • windows/wsl.1599937347.txt.gz
  • 最終更新: 2020/09/13 04:02
  • by ともやん