|
現: 2023-01-15 (日) 09:29:16 yuji  |
| + | * Windows10でWSL2を使ってみる [#u6542d96] |
| + | WSL(WSL1)では全てのLinux上のソフトウェアを動かせるわけではなかった。~ |
| | | |
| + | WSL(WSL1)ではLinux Kernelへのファンクションコールを''lxcore.sys''と''lxss.sys''いうカーネルドライバーでLinux Kernelをエミュレーションしていて,Windowsカーネルのファンクションコールに変換して動作させている。このカーネルドライバーでの変換(エミュレーション)が限定的なサポートであるので動かないソフトウェアがあった。~ |
| + | |
| + | WSL2はHyper-Vのコア機能であるHyper-Vアーキテクチャーとそれを利用したHyper-Vコンテナの上でMicrosoftが開発したWSL2専用のLinux Kernelを動作させるので,Kernelエミュレーションでの制約がほとんどなくなり多くのLinuxプログラムが動作すると思われる。~ |
| + | |
| + | WSL2はWindows10 2004(20H1)で正式にリリースされる予定のようだ。~ |
| + | 現状ではWindows Insider Program((将来リリースされる予定の現在開発中の機能を,いち早く入手して使用することが出来るプログラム。開発中の機能ということで,不具合や安定性が損なわれているOSを使用することになるためリスクがある。)) を使用している場合に,WSL2を有効化して使用する事ができる。~ |
| + | |
| + | Windows Insider Programに参加するには,設定>更新とセキュリティ>Windows Insider Programをクリックして,指示に従いPreviewプログラムを受け取れるようにして,PCを再起動する。~ |
| + | |
| + | 現在のWindows10のビルド番号を確認するには,以下のようにする。(Windows Insider Programに参加していないWindows10 1909)~ |
| + | D:\home\ueno>ver |
| + | |
| + | Microsoft Windows [Version 10.0.18363.476] |
| + | |
| + | Windows Insider Programに参加すると,Windows10のビルド番号は18917以降になる。~ |
| + | |
| + | ** WSL2の特徴 [#i48d8159] |
| + | WSL2の特徴は以下のようなものがある。~ |
| + | - WSL2専用のLinux KernelをWindowsハイパーバイザー(Hyper-V)を使用して動作させている~ |
| + | 完全な仮想化ではなく,Light-weight VM(LinuxはHyper-Vコンテナ上で動作するようだ。)だとか言っている。~ |
| + | - ネットワークコンポーネントは仮想化されている~ |
| + | ネットワークコンポーネントもWindowsハイパーバイザー(Hyper-V)上で仮想化されている。~ |
| + | - ファイルシステムは仮想ディスクを使用している~ |
| + | Windowsハイパーバイザー(Hyper-V)のストレージの仮想ハードディスクを使用している。~ |
| + | - Windowsハイパーバイザー(仮想化環境)を利用して動作するが高速である~ |
| + | WSL(WSL1)に比べても動作速度は意外と高速である。~ |
| + | - WSL(WSL1)で使えなかったnmapやtcpdumpが動く~ |
| + | - WSL(WSL1)とWSL2は併用できる~ |
| + | - WSL(WSL1)で使っていたLinuxをWSL2用に変換することが出来る~ |
| + | - 他の仮想化環境が動作しなくなる~ |
| + | 古いバージョンの''VMware Workstation PlayerやOracle VirtualBoxは動作しなくなる。''~ |
| + | VMware Workstation PlayerやOracle VirtualBoxのバージョンを新しいものに更新すると,WSL2と共存して動作するようになるようだ。~ |
| + | |
| + | ** WSL2を利用する準備 [#hadfc99d] |
| + | WSL2を利用するには, |
| + | - コントロールパネルの''プログラムと機能''を開く~ |
| + | - ''Windowsの機能の有効化または無効化''をクリックする~ |
| + | - ''Windows Subsystem for Linux''をマークを入れて有効にする~ |
| + | これはWSL(WSL1)を使えるようにする。~ |
| + | 既にWSLを使っている場合はマークされていて,このコンポーネントはインストールされている。~ |
| + | どのバージョンからかは不明だが,''Linux用 Windows サブシステム''に名前が変わっている。~ |
| + | - ''Hyper-V''もしくは''仮想マシンプラットフォーム''にマークを付けてOKを押す~ |
| + | Windows 10 2004やそれ以前のWindows 10の場合は,''Hyper-V''にマークをする。~ |
| + | それ以後のWindows 10の場合は,''仮想マシンプラットフォーム''にマークする。~ |
| + | これにより,Hyper-Vのコア機能であるHyper-Vアーキテクチャーとそれを利用したHyper-Vコンテナーを動作させるためのコンポーネントが使用できるようになる。~ |
| + | ''仮想マシンプラットフォーム''をマークした場合,バージョン更新したVMware Workstation PlayerやOracle VirtualBoxが動作する。~ |
| + | また''Windowsサンドボックス''もこのコンポーネント機能を使用している。~ |
| + | - OKを押す~ |
| + | |
| + | のように,WSLと仮想マシンプラットフォームを利用する設定が必要。設定後,PCを再起動する。~ |
| + | |
| + | また,BIOSまたはUEFIの設定で''仮想化機能が有効''にすることも必要。~ |
| + | |
| + | ** WSL1と同様にLnuxをMicrosoftストアからインストールする [#b9f39f1e] |
| + | WSL1と同様にしてLinuxをMicrosoftストアからインストールする。インストールしたLinuxは,この状態ではWSL1で動作する。~ |
| + | いくつかのLinuxディストリビューションが選択できる。~ |
| + | またコマンドプロンプトでも確認できる。~ |
| + | > wsl --list --online |
| + | インストールできる有効なディストリビューションの一覧を次に示します。 |
| + | 'wsl.exe --install <Distro>' を使用してインストールします。 |
| + | |
| + | NAME FRIENDLY NAME |
| + | Ubuntu Ubuntu |
| + | Ubuntu-18.04 Ubuntu 18.04 LTS |
| + | Ubuntu-20.04 Ubuntu 20.04 LTS |
| + | Ubuntu-22.04 Ubuntu 22.04 LTS |
| + | : |
| + | : |
| + | |
| + | 既にWSL1を使用してLinuxをインストールしている場合は,そのまま使用できるので新たにLinuxをインストールする必要はない。~ |
| + | |
| + | インストールしたLinux(例:Ubuntu 18.04 LTS)もしくは現在使用中のLinuxを,WSL2用に変換する。~ |
| + | |
| + | まず,Powershellかコマンドプロンプトを起動して,インストールしたLinuxを確認する。 |
| + | PS C:\Users\yueno> wsl -l |
| + | Windows Subsystem for Linux ディストリビューション: |
| + | Ubuntu-18.04 (既定) |
| + | |
| + | 以下のようにして,Powershellかコマンドプロンプトを使用して,WSL2用に変換する。 |
| + | PS C:\Users\yueno> wsl --set-version Ubuntu-18.04 2 |
| + | |
| + | 変換されたか確認してみる。 |
| + | PS C:\Users\yueno> wsl -l -v |
| + | NAME STATE VERSION |
| + | * Ubuntu-18.04 Running 2 |
| + | VERSIONが2になっていればWSL2用になっている。~ |
| + | |
| + | * 他の仮想化環境との共存 [#xe0d22a8] |
| + | WSL2を利用できるようにすると(WSL2だけでなくWindows サンドボックス等でも),古いバージョンのVMware Workstation PlayerやOracle VirtualBoxなどの他のゲストOS型仮想化環境が動作しなくなってしまう。~ |
| + | |
| + | この場合はWSL2の利用を諦めて,Hyper-V関連機能を削除する。~ |
| + | または,VMware Workstation PlayerやOracle VirtualBoxなどのゲストOS型仮想化環境をバージョンアップして,Hyper-V環境と他の仮想化環境を共存できるようにする。~ |
| + | - VMware Workstation Pro/Player~ |
| + | Ver.15.5以降でWSL2と共存できる。(Windows 10 2004以降)~ |
| + | - Oracle VirtualBox~ |
| + | Ver.4.0以降でWSL2と共存できる。(Windows 10 1803以降)~ |
| + | |
| + | ** 他の仮想化環境をバージョンアップして共存 [#o072e090] |
| + | 新しいバージョンのVMware Workstation PlayerやOracle VirtualBoxでは,Hyper-V関連機能と共存できるようになった。~ |
| + | |
| + | しかしこの場合は,''コントロールパネル>プログラムと機能>Windowsの機能の有効化または無効化''で,以下の機能を有効にする。~ |
| + | - ''仮想マシンプラットフォーム''にマークする。~ |
| + | - ''Windows ハイパーバイザー プラットフォーム''にマークする。~ |
| + | |
| + | ** Hyper-V関連機能の削除 [#b4e51b5e] |
| + | ''古いバージョンのVMware Workstation PlayerやOracle VirtualBoxを再度使用できるようにするためにWSL2の使用を諦める場合は,Hyper-V関連機能を削除する必要がある。''~ |
| + | |
| + | Hyper-V関連機能を削除するには,''コントロールパネル>プログラムと機能>Windowsの機能の有効化または無効化''を開いて, |
| + | - Hyper-V~ |
| + | - Windows Subsystem for Linux(WSL2)~ |
| + | - Windows サンドボックス~ |
| + | - Windows ハイパーバイザー プラットフォーム~ |
| + | - 仮想マシンプラットフォーム |
| + | - インターネットインフォメーションサービスのホスト可能なWebコア~ |
| + | |
| + | などのマークが入っているもののマークを外す。~ |
| + | PCの再起動が必要。 |
| + | |
| + | または,管理者権限でPowerShellを起動し, |
| + | > Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All |
| + | を実行すること,Hyper-V関連サービスを全て削除できる。 |
| + | |
| + | * WSL2の感想 [#i42cce34] |
| + | WSL2のメリットはWSL1で動作しなかったLinuxプログラムも動作するようになったところだと思う。~ |
| + | |
| + | WSL1での良いところのいくつかは継承されていて,また改善されている点も多い。~ |
| + | - 複数のPCで構成されていた環境を1台のPCで実現できる~ |
| + | - Windowsマシンで不得意だった作業も,Linux環境が使えるので効率よく作業ができる。~ |
| + | - WindowsのExplorerでファイルを操作できる。~ |
| + | - 他の仮想マシンで動作させるよりも手軽に起動でき使用できる。~ |
| + | - 多くのプログラムが動作するようになった。~ |
| + | Microsoft製のWSL2専用Linux Kernelを使うことで多くのプログラムが動作する。~ |
| + | GUIのアプリケーションやsystemdやnetworkなどもサポートされている。~ |
| + | |
| + | 問題点: |
| + | - ネットワークの動作。~ |
| + | 仮想環境で仮想ネットワークが動作しているので,ルーティングが必要となりWSL1のように手軽ではない。ホストOSのNICへのブリッジ接続は利用できない。~ |
| + | また複数のOSをWSL2で動かした場合,すべて同じIP Addressを持ったネットワーク環境になってしまう。~ |
| + | - USB機器の利用~ |
| + | USB機器をPCに接続してWSL2で利用することが簡単ではない。~ |
| + | 限定的なWindowsハイパーバイザー(仮想化環境)を使っているので,ハードウェアの仮想化が十分ではないため。~ |
| + | - WindowsファイルシステムへのアクセスはWSL1より遅い。~ |
| + | WSL2はWindowsのファイルシステムとの接続にリモートファイルシステムを使っているようだ。~ |
| + | このためLinuxとWindowsのファイル連携をする場合,アクセス速度が遅くなる。~ |
| + | - PCのリソースを多く使う。~ |
| + | Windowsハイパーバイザー(Hyper-V)を使用して動作させているので,特にMemoryリソースが多く必要になってしまい,WSL1と違い手軽に使うといったことができなくなった。~ |
| + | |
| + | 普段Linuxを利用する場合は,VMware Workstationを使った仮想マシン上のLinuxを利用している。~ |
| + | また手軽にPosix環境を使いたい場合には,MSYS2/MinGW-w64をメインに使い,たまにWSL1を使うということで事足りている。~ |
| + | |
| + | このような理由から,試した後はWSL2を使用していない。~ |