-
Notifications
You must be signed in to change notification settings - Fork 0
MS_WSL
- 戻る(Linuxサブシステム)
- Windows Subsystem for Linux
- WSL → WSL2
- コンテナ技術
-
Windows Subsystem for Linux(以下、WSL と略す。)
-
旧称:Bash on Ubuntu on Windows / Bash on Windows
-
仮想環境ではなく、エミュレーション環境(互換レイヤ)なので、
Hyper-Vの機能は使用せず、
新しいサブシステムとして Linux を動作させることができる。 -
これは、Linux 系の開発環境をサポートすることが主目的と予想されている。
-
Docker for Windowsと同様に、
Bash on Windows から、ひたすら進化を続けている。
移行メモ(重要な前提の変化): 概要の「仮想環境ではなく、
エミュレーション環境(互換レイヤ)なので、Hyper-V の機能は使用せず」
という記述は WSL 1 についてのみ正しい。WSL 2 では前提が逆転している。
WSL 1 WSL 2 方式 システム コールを Windows カーネルに翻訳 本物の Linux カーネルを軽量 VM で実行 Hyper-V 使わない 使う(仮想マシン プラットフォームが必須) Linux 側の I/O 遅い 速い(ext4 ネイティブ) /mnt/c越しの Windows ファイル速い 遅い(9P プロトコル経由) Docker 実質動かない 動く 完全な syscall互換×(一部未実装) ○ 現在の既定は WSL 2 であり、本ページの記述の多くは WSL 1 前提である
点に注意して読む必要がある。
「ライブラリ OS」・「ピコプロセス」というテクノロジを土台にしている。
-
Linux 互換環境を提供する Pico プロバイダードライバー
(lxss.sysとlxcore.sysという 2 つのカーネルドライバー)で実装されている。 -
リダイレクタ的なアーキテクチャによって、
Windows クライアントと Linux サーバを Pico 経由で接続して動作する。Microsoft Bash Launcher(bash.exe) ---> LX Session manager service ---> Pico <---> Linux -
これにより、ほぼネイティブに(?)Linux の機能(バイナリ)が
Windows から呼び出せる。
補足: この Pico プロセス方式は WSL 1 の実装である。
WSL 2 ではこの仕組みは使われず、
実際の Linux カーネル(Microsoft がビルドしたlinux-msft-wsl)が
軽量ユーティリティ VM 上で動作する。
WSL 1 も引き続き選択でき、wsl --set-version <distro> 1で戻せる。
厳密には以下の Linux ディストリビューションの上で動作可能なツール
- Ubuntu
- openSUSE
- SUSE Linux Enterprise Server
- WLinux Enterprise
- Fedora Remix for WSL
補足(現在): Microsoft Store 経由のほか、
wsl --list --onlineで導入可能なディストリビューションを一覧でき、
wsl --install -d Ubuntu-24.04のように直接インストールできる。
Debian / Kali / Oracle Linux / AlmaLinux 等も提供されている。
任意のtarからのインポート(wsl --import)も可能である。
WSL が β 版だった頃。
- Microsoft Store からインストール、
- 「⚙」の[アプリと機能]からアンインストール
補足(最新化:現在は 1 コマンドで入る): Windows 10 バージョン 2004 以降、
管理者権限の PowerShell で次の 1 行だけで済む。wsl --installこれで「仮想マシン プラットフォーム」「WSL 機能」の有効化、
Linux カーネルの導入、既定ディストリビューション(Ubuntu)の
インストールまでが一括で行われる。
Store から個別に入れる手順やdismでの機能有効化は、
現在では不要である。なお、WSL 自体も Microsoft Store アプリとして配布されるようになり
(wsl --update)、OS のリリース サイクルと切り離して更新される。
-
wsl --set-default <名前>で既定を切り替える。 - 複数のディストリビューションを並存させられる。
サーバにもインストール可能
- Windows Server に Linux サブシステムをインストールする | Microsoft Learn
https://learn.microsoft.com/windows/wsl/install-on-server
- WSL (Windows Subsystem for Linux) の基本メモ - Qiita
https://qiita.com/rubytomato@github/items/fdfc0a76e848442f374e
Dockerとの関係
-
裏技を除き、WSL(1) 上で Docker を動かすことはできない。
-
Linux スタイルのスニペットを動かすために、
Docker のクライアント(Docker コマンド)のみを WSL(1) から
利用するケースが多い。
- WSL 2 では、Docker Desktop WSL2 Backend で Docker をサポートする。
- また、Docker Desktop なしでも内部で Docker を動かせるらしい。
補足: 「Docker Desktop なしでも動かせる」は現在では確立した手法で、
WSL 2 のディストリビューション内にdocker-ceを直接インストールすればよい。
Docker Desktop の有償化(コンテナ技術を参照)
以降、この構成を採る例が増えている。
補足: WSLg(WSL GUI)は Windows 11 および
Windows 10 の一部ビルドで標準機能として提供済みである。
別途 X サーバ(VcXsrv 等)を入れなくても、
WSL 内の GUI アプリがそのまま Windows のウィンドウとして表示される。
音声(PulseAudio)と GPU アクセラレーションにも対応する。
移行メモ(正誤・最新化): この見出しは Android アプリの話であり、
WSL ではなく WSA(Windows Subsystem for Android) の機能である。
混同しやすいので分けて理解したい。
なお WSA は 2025年3月5日にサポートが終了しており、
Microsoft Store からの Amazon アプリストア提供も終了している。
Linux と違い Windows はファイルシステムへのアクセスが必須で、
大量のフィルター(ドライバ)が登録されているため遅いらしい。
- Major performance (I/O?) issue in /mnt/* and in ~ (home) · Issue #873 · microsoft/WSL
https://github.com/microsoft/WSL/issues/873
補足(WSL 2 での性能の勘所): WSL 2 で性能を出す条件は明快である。
ソースコードは Linux 側のファイルシステム(
~/配下)に置く。
置き場所 速度 /home/user/project(ext4)速い(ネイティブ) /mnt/c/Users/...(Windows 側)遅い(9P 経由。数倍〜十数倍の差)
npm installやgit statusが異様に遅い場合、
ほぼ/mnt/cにリポジトリを置いていることが原因である。
Windows 側から Linux 側のファイルには
\\wsl$\Ubuntu\home\user\...でアクセスできる。
-
WSL2正式リリース WindowsでLinuxが必要とされる複雑な背景 - orangeitems’s diary
https://www.orangeitems.com/entry/2020/05/20/102112
- 「Bash on Windows」という名称は非推奨に。
正式名称「Windows Subsystem for Linux」(WSL)としてベータを卒業、正式リリースに
https://www.publickey1.jp/blog/17/bash_on_windowswindows_subsystem_for_linuxwsl.html
- Windows Subsystem for Linuxとは? そのインストールと使い方
http://www.buildinsider.net/enterprise/wsl/01
- Tech TIPS:Windows 10のLinux/Ubuntu互換環境でbashを使う
http://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
-
Windows Subsystem for Linux のドキュメント
https://learn.microsoft.com/windows/wsl/ -
microsoft/WSL
https://github.com/microsoft/WSL
Tags: 移行, Windows, Linux, Linuxサブシステム, 仮想化
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。