「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>Windows Subsystem for Linux]] * 目次 [#q374ba7d] #contents *概要 [#q58fe91d] -互換レイヤではなくなり、単に[[Hyper-V]]でホストされるLinux --[[Hyper-V]]は、WSL2専用にカスタマイズされた軽量版を使用。 --という事で、Home Editionでも利用可能になっている。 --Linuxカーネルも独自パッチで軽量化を実現している。 -UI/UXは[[WSL>Windows Subsystem for Linux]]と同じ(UXを踏襲) --ホストと異なるIPアドレスだったが、~ Build 18945で改善されたもよう。 --DrvFs → P9の影響はどうなるか? *詳細 [#n5e68ec0] **インストール [#ocd43b8b] ***システム要件 [#t4c6067d] -Windows Insider Preview Build 18917以降が動作している環境であることが必須 -「Windows 10 20H1」(バージョン 2004)で正式版がリリースされた。 -従来通りWSL1をインストールしてから、PowerShellでWSL2に変換する ***WSL1, 2 は共存可能? [#nc6658d3] -共存可能とのこと --いつでも、WSL2にアップグレード、ダウングレード可能(PowerShellで)。 --この操作は、ディストリビューション毎に行うことが出来るらしい。 -エミュレーション環境(互換レイヤ)から仮想環境に変更されたが、~ UXを踏襲(DrvFs → P9とか)するので、敢えて、WSL1, 2を共存させなくても良さそう。 ***[[Docker Desktop WSL2 Backend>Docker Desktop for Windows#a4fac57b]] [#yac68e0f] -色々な記事が出ているが、ザックリ以下のような感じ。 --WSL2 と Dockerは別物で、~ [[Docker Desktop>#yac68e0f]]で組合せて利用。 --[[Docker Desktop for Windows]]は ---WSL2上でDockerを動作することができるよう進化。 ---→ [[Docker Desktop WSL2 Backend>Docker Desktop for Windows#a4fac57b]] -以下のような特徴があり、 --WindowsのGUI操作性 --LinuxのCUI活用 --Linuxコンテナへのデプロイ -端的に言うと、 --IDEだけWindows側にあって、 --開発環境(e.g. LAMPスタックなど)は、WSL2 + Docker側にある。 ---DockerコマンドはLinux側から実行。 ---後は、リモート・デバック(IDEから?LXCから?) --故に、[[WSL2>Windows Subsystem for Linux#b08a40a8]] + [[Docker Desktop WSL2 Backend>Docker Desktop for Windows#a4fac57b]] + [[Visual Studio Code]]等を組合せた開発が可能。 ***GUIサポート([[WSLg>WSLg#q04ef05e]]) [#f4b7ee03] **試用、評価 [#d79417d2] ***WSL2本体 [#yf2b317a] Win11のリリース日程も発表された今頃(2021/09/02)、漸く、~ WSL2にアップグレードすることにした(PCも 21H1 になってるし) -前提 --WSL(1)インストール済み。 --直接はWSL2をインストールできないらしい。 -手順 --WSL2に更新 ---OSのアップデート~ [[20H1>Windowsの系統とバージョン#je3b7fc1]]以降で利用可能らしい。 ---仮想マシン プラットフォームオプション機能有効化~ (Hyper-Vは必須ではないのでHome EditionでもOKらしい) ---WSL 2 を既定のバージョンとして設定(PowerShell) >wsl --set-default-version 2 ※ 自分の場合は「この操作を正しく終了しました。」で終了。 --WSLのバージョンを確認する。 >wsl --list --verbose NAME STATE VERSION * Ubuntu-18.04 Stopped 1 --WSLのバージョンを変更する。 >wsl --set-version Ubuntu-18.04 2 変換中です。この処理には数分かかることがあります... WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください --WSLのバージョンを再確認する。 ---起動前~ >wsl --list --verbose NAME STATE VERSION * Ubuntu-18.04 Stopped 2 ---起動~ Ubuntu-18.04アイコンなどをクリックしWSLを起動。 ---起動後~ >wsl --list --verbose NAME STATE VERSION * Ubuntu-18.04 Running 2 --動作確認(相互運用) ---Linux側からWindows側のファイル・システムにアクセスしてみる。 $ dir /mnt/c ...Windows側のC:\以下のファイル・ディレクトリを参照可能。 ※ 結果:問題なくアクセスできた。 ---Linux側からWindows側にネットワーク・アクセスしてみる。 $ cat /etc/resolv.conf # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf: # [network] # generateResolvConf = false nameserver 172.29.96.1 $ curl http://172.29.96.1/iisstart.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>IIS Windows</title> <style type="text/css"> ... ※ 結果:問題なくアクセスできた。 ---Windows側からLinux側にネットワーク・アクセスしてみる。~ (WSL(1)はローカル・プロセスだったが、WSL2ではVMになったので)~ ~ ・Linux側:ncコマンド $ nc -lk 9999 hogehoge ~ ・Windows側:[[TCP/IPテストツール>https://www.vector.co.jp/soft/winnt/net/se411272.html]]~ GUIで127.0.0.1:9999に接続~ ~ ※ 結果:問題なく接続&受信できた。 --[[WSL2上での開発とデバッグ>#t061a41a]]を試してみる。~ ... -参考 --WSL2をWindows10に公式の手順でインストールする~ https://t-dilemma.info/official-install-wsl2/ --WSL2からWindowsホストで動作しているアプリケーションにアクセスする – Logico Inside~ https://logico-jp.io/2019/08/26/access-an-app-running-on-windows-host-via-wsl2/ ***LinuxOSの新規インストール [#if2f7775] -[[上記]]は、Ubuntu-18.04をWSL → WSL2と持ってきた。 -ココでは、新しいバージョンのOSを新規インストールしてみる。 -PowerShellから。 --可能なディストリビューションの一覧を表示 wsl --list --online --ディストリビューションをインストール wsl --install -d <DistroName> -Microsoft Storeから~ ディストリビューション一覧に表示されないものをインストールする場合。 --Microsoft StoreでUbuntuで検索して探し出しす。 --Ubuntu 22.04.1 LTSの「入手」ボタンをクリック。 --スタートメニューに登録されたらソコから起動。 -参考 --Windows 10におけるWSL2を用いたUbuntu 20.04 LTS環境の構築~ https://www.aise.ics.saitama-u.ac.jp/~gotoh/UbuntuOnWSL2.html --Windows11にWSLでUbuntu 22.04 LTSの導入 | OsaruSystem~ https://www.osarusystem.com/misc/windows11_wsl_ubuntu2204.html ***LinuxOSの再インストール [#i6dd4c37] -WSL2環境は簡単に再インストール的なリフレッシュができる。 -Ubuntu 22.04.1 LTSを再インストール的にリフレッシュしてみる。 -手順、 --PowerShellから。 ---確認 wsl --list --verbose ---初期化 wsl --unregister Ubuntu-XXX --GUIから ---[設定] → [アプリ] → [インストールされているアプリ] → [UbuntuXXX] ---[詳細オプション] → [リセット](でイケるらしいが、やったら失敗した。 -参考 --グチャグチャになった「Ubuntu on WSL2」のやり直し方 - Qiita~ https://qiita.com/PoodleMaster/items/b54db3608c4d343d27c4 --Windows内のLinux環境を手軽に初期化、WSL2の賢い操作法 | 日経クロステック(xTECH)~ https://xtech.nikkei.com/atcl/nxt/column/18/01863/112600004/ ***Dockerサポート1 [#t551cc69] (≒ [[Docker Desktop WSL2 Backend>Docker Desktop for Windows#a4fac57b]]) -前提 --Docker Desktop導入済み。 --WSL2へアップグレード済 -手順 --タスク・トレイ中のDocker Desktopアイコンをクリック --画面が表示されたら歯車マークから管理画面へ遷移 --User the WSL 2 based engine に~ チェックを入れ[Apply&Restart]を押下。 --再起動 ---Docker Desktopを再起動中にエラー ---次いで、PCを再起動するもエラー ---エラーメッセージからWSL2用の~ Linux Kernelを入れろと(以下にアクセス)。~ https://aka.ms/wsl2kernel ---Linux カーネル更新プログラム パッケージを~ ダウンロードして実行してインストールする。 ---その後、タスク・トレイからDocker Desktopを~ 再起動するなどして、正常に動作するようになった。 --動作確認~ 適当なDockerコマンドやDockerコンポーズを動かしてみる。 -参考 --WSL 2 対応 Docker Desktop for Windowsを使うための手順 - Qiita~ https://qiita.com/zembutsu/items/22a5cae1d13df0d04e7b ***Dockerサポート2 [#x1a53d68] [[Docker Desktop for Windows有償化>Docker Desktop for Windows#m40e5547]]対応 ...と言う事で~ WSL2自体の中にDockerコマンドやDockerコンポーズを入れる。 -手順 --前提 : [[WSL2が導入済み>#yf2b317a]]であること。 --ディストリビューション追加(Ubuntu 20.04) ---確認 >wsl --list --online ... NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling openSUSE-42 openSUSE Leap 42 SLES-12 SUSE Linux Enterprise Server v12 Ubuntu-16.04 Ubuntu 16.04 LTS Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS ---追加インストール >wsl --install -d Ubuntu-20.04 --Ubuntu上にDocker Engineをインストール ---リポジトリをセットアップ~ ・aptパッケージ・インデックスを更新 $ sudo apt-get update ・インストール・パッケージを更新 $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release ・Docker社の公式GPGキーを追加 $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ・安定したリポジトリを設定 $ echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ---Docker Engineのインストール~ ・インストール $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io ・実行~ ・手動起動 $ sudo /etc/init.d/docker start ・動作確認 $ sudo docker run hello-world --[[docker-composeでjupyter/pyspark-notebookを使ってみる。>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?PySpark#n212eaf0]] ---[[docker-composeをインストール>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?VM%E8%B5%B7%E5%8B%95%E5%BE%8C%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%EF%BC%88Linux%EF%BC%89#d2b98d57]] ---既存のdocker-compose.ymlの位置へ。 $ cd /mnt/c/... ---docker-composeを実行 $ docker-compose up ---表示されたURLにアクセスして、~ jupyter/pyspark-notebookを使用。 -参考 --Install Docker on Windows (WSL) without Docker Desktop - DEV Community~ https://dev.to/bowmanjd/install-docker-on-windows-wsl-without-docker-desktop-34m9 --Qiita ---Docker Desktopに依存しない、WindowsでのDocker環境~ https://qiita.com/ohtsuka1317/items/617a865b8a9d4fb67989 ---Windows10 HomeとWSL2でdocker-composeができるようにする~ https://qiita.com/aki4000/items/c26e3076c8cec9677415 ***Dockerサポート3 [#i67127c3] -Docker関連の手順作成時に、 --[[Docker Desktop for Windows]]上でDockerする場合と、 --WSL2(≠[[Docker Desktop WSL2 Backend>Docker Desktop for Windows#a4fac57b]])上でDockerする場合と、 >の両方が必要になるので、共存が可能か?を調査する。 -[[Dockerサポート2>#x1a53d68]]の環境に、 --[[Docker Desktop for Windows]]を再インストール --その際、[[Docker Desktop WSL2 Backend>Docker Desktop for Windows#a4fac57b]]を有効化しない。 -結果 --問題なく併用可能だった。 --また、[[Visual Studio Kubernetes Tools>Visual Studio Kubernetes Tools#kd8a305b]]でも併用可能だった。 ***Dockerサポート4 [#t0d74a1f] プロキシ環境下で使用する。 -プロキシ接続文字列 "http://<user_id>:<password>@<host>:<port>" >「<user_id>:<password>」中の"@" などのASCII文字は "%40" などとURLエンコードする。 -必要に応じて、初期化 >wsl --shutdown >wsl --unregister Ubuntu-20.04 >wsl --install -d Ubuntu-20.04 -環境変数設定 $ export http_proxy="プロキシ接続文字列" $ export https_proxy="プロキシ接続文字列" -aptコマンド --Proxy設定 ---設定ファイルを編集 $ sudo vi /etc/apt/apt.conf ---以下を記入([[i → 編集 → Esc → :wq>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?vi#ebf62194]]) ---以下を記入([[i → 編集 → esc → :wq>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?vi#ebf62194]]) Acquire::http::Proxy "プロキシ接続文字列"; Acquire::https::Proxy "プロキシ接続文字列"; --パッケージ一覧を更新 sudo apt update sudo apt upgrade -y sudo apt install curl apt-transport-https -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg -x プロキシ接続文字列 | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update -dockerコマンド --インストール sudo apt install docker-ce docker-ce-cli containerd.io -y sudo apt install docker-compose -y --Proxy設定 ---設定ファイルを編集 $ sudo vi /etc/default/docker ---以下を記入(i → 編集 → Esc → :wq) export http_proxy="プロキシ接続文字列" export https_proxy="プロキシ接続文字列" --サービス開始 $ sudo service docker start --権限関係 ---ユーザの追加 $ sudo gpasswd -a ユーザー名 docker ---ソケット読書 $ sudo chmod 666 /var/run/docker.sock --動作確認する $ sudo docker run hello-world -docker-composeコマンド~ [[Dockerサポート2の手順>#x1a53d68]]でインストールして実行~ (ただし、curlは-xオプションでプロキシ接続文字列を指定して実行) ***開発とデバッグ [#t061a41a] [[WSL(1)の手順>WSL上での.NET Core開発#fd286380]]と、何がどう変わったのか?的な話。 ... ***GUIサポート([[WSLg>WSLg#nb7f1364]]) [#qdc6ef47] *参考 [#zc93ad83] **Publickey [#u0c87fd9] -[速報]Windows上でフル互換のLinuxシステムコールを実現する~ 「WSL 2」発表、Dockerも実行可能に。Microsoft Build 2019~ https://www.publickey1.jp/blog/19/windowslinuxwsl_2dockermicrosoft_build_2019.html -WindowsにLinuxカーネルを組み込んだ「WSL 2」、~ はやくもWindows 10 Insiderプレビュー版で利用可能に~ https://www.publickey1.jp/blog/19/windowslinuxwsl_2windows_10_insider.html **窓の杜 [#s9f6cc28] -「WSL 2」を搭載した「Windows 10 20H1」Build 18917が“Fast”リングに~ https://forest.watch.impress.co.jp/docs/news/1190081.html -「WSL 2」は「Windows 10 バージョン 2004」で正式リリースへ ~Microsoftが発表~ https://forest.watch.impress.co.jp/docs/news/1240999.html -「WSL 2」が正式リリース! ~「WSL 1」とのメリットは? 「Windows Terminal」にも注目~ https://forest.watch.impress.co.jp/docs/shseri/win10may2020/1250493.html **Qiita [#v98ec515] -WSL1からWSL2に乗り換える~ https://qiita.com/rootpia/items/f49b9e903216cd6dfb51 -WSL2入れてみた~ https://qiita.com/TsuyoshiUshio@github/items/947301bd9317610572fc **@IT [#n2fddfaa] -Windows 10 The Latest --完全なLinuxがWindows 10上で稼働する?『WSL 2』とは~ https://www.atmarkit.co.jp/ait/articles/1906/14/news019.html --『WSL 2』へのバージョンアップでLinux互換環境はどう変わるのか?~ https://www.atmarkit.co.jp/ait/articles/1906/28/news034.html --Linuxがほぼそのまま動くようになった『WSL2』のネットワーク機能~ https://www.atmarkit.co.jp/ait/articles/1909/09/news020.html --【WSL 2互換性チェック】NTFSのシンボリックリンクやジャンクションは使い物になるのか?~ https://www.atmarkit.co.jp/ait/articles/1910/11/news012.html --前バージョンから大幅に性能向上した新Linux環境「WSL 2」の実力を探る~ https://www.atmarkit.co.jp/ait/articles/2005/15/news020.html **kledgeb [#d0bedb7d] -その171 - Windows Subsystem for Linuxの新アーキテクチャー、WSL 2登場~ https://kledgeb.blogspot.com/2019/05/wsl-171-windows-subsystem-for-linuxwsl-2.html -その172 - WSL 2とLinux kernel・MicrosoftがLinux kernelを提供~ https://kledgeb.blogspot.com/2019/05/wsl-172-wsl-2linux-kernelmicrosoftlinux.html -その173 - WSL 2とよく寄せられる質問~ https://kledgeb.blogspot.com/2019/05/wsl-173-wsl-2.html -その174 - WindowsからLinuxのファイルにアクセスする仕組みの詳細とWSL 2~ https://kledgeb.blogspot.com/2019/06/wsl-174-windowslinuxwsl-2.html -その175 - Build 18917でWSL 2が利用可能に・WSL 2を利用するには~ https://kledgeb.blogspot.com/2019/06/wsl-175-build-18917wsl-2wsl-2.html -その176 - WSL 1とWSL 2の使い勝手の違い~ https://kledgeb.blogspot.com/2019/06/wsl-176-wsl-1wsl-2.html --ネットワークアプリへアクセスするには --ストレージ領域の最大サイズを大きくするには -その177 - 仮想マシン内でWSL 2は利用できるのか?~ https://kledgeb.blogspot.com/2019/06/wsl-177-wsl-2.html -その181 - WSL 2でリモートからアプリに接続する時の注意事項~ https://kledgeb.blogspot.com/2019/07/wsl-181-wsl-2.html -その182 - Build 18945のWSLに関する変更点・WSL 2の大幅な改善と改良~ https://kledgeb.blogspot.com/2019/07/wsl-182-build-18945wslwsl-2.html -その183 - localhostサポート~ https://kledgeb.blogspot.com/2019/07/wsl-183-localhostwsl-2.html --WSL 2グローバル設定のサポート --カスタムカーネルのサポート **Microsoft Docs [#e3f89dd2] -WSL とは~ https://docs.microsoft.com/ja-jp/windows/wsl/about -WSL 2 の新機能~ https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-index -WSL 2 と WSL 1 の比較~ https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-faq -Windows 10 に WSL をインストールする~ https://docs.microsoft.com/ja-jp/windows/wsl/install-win10 **[[Docker Desktop WSL2 Backend>Windows Subsystem for Linux#b08a40a8]] [#g0aff376] -Docker Desktop WSL 2 backend | Docker Documentation~ https://docs.docker.com/docker-for-windows/wsl-tech-preview/ -Docker Desktop for WSL 2、7月末にプレビュー版公開 | マイナビニュース~ https://news.mynavi.jp/article/20190722-862024/ -Windows版「Docker Desktop」も「WSL 2」対応に~ ~テクニカルプレビュー版が7月公開へ - 窓の杜~ https://forest.watch.impress.co.jp/docs/news/1191014.html -[Windows WSL2] WSL2でDocker開発環境を構築してみる~ https://blog.nicopun.com/post/2019-07-02-windows-wsl2/ ***Qiita [#l9cf3db0] -Docker Desktop for WSL 2 を入れてみました~ https://qiita.com/SHIRANO/items/42616bb76630df068f33 -Docker Desktop for WSL2 を使い快適にWindowsでサーバ開発をしよう!~ https://qiita.com/YukiMiyatake/items/c7896a0fc5abfa6c2300 -Docker Desktop WSL 2 Backend を入れてみました~ ( Docker Desktop 2.2 も本記事の検証部分の結果は大体同じです )~ https://qiita.com/SHIRANO/items/ebd007ba148b4651a5df ***SIOS Tech. Lab [#ka2f76e9] -WSL2で劇的に変わるあなたのWebアプリケーション開発環境 --【その1:概要編】~ https://tech-lab.sios.jp/archives/18431 --【その2:導入編】~ https://tech-lab.sios.jp/archives/18437 --【その3:実践編】~ https://tech-lab.sios.jp/archives/18446 -【連載】WSL2、Visual Studio Code、~ DockerでグッとよくなるWindows開発環境~ --〜 その1:まずは概要 〜~ https://tech-lab.sios.jp/archives/21023 ***Developers.IO [#d7a0dd0d] -Windows Subsystem for Linux 2(WSL 2)をセットアップしてみた~ https://dev.classmethod.jp/articles/how-to-setup-wsl2/ -Windows10+WSL2環境で快適AWSサーバレス開発~ https://dev.classmethod.jp/articles/awssamcli_on_wsl2/ ***OSSコンソーシアム > 開発基盤部会 Blog [#b01cffc1] -今更ですが、WSL2(+Docker)を使い始めたりしてみました。~ https://www.osscons.jp/jowz98rg9-537/ ---- Tags: [[:Windows]], [[:Linux]], [[:Linuxサブシステム]], [[:仮想化]]