「Linuxや仮想サーバ(Hyper-V、VMware)は使ったことがあるが、WSLは初めて」というケースを想定した、Microsoft Learn および塩田紳二氏の各所の記事をまとめ直した程度のメモ。個人的には氏にWSLの解説本を期待したい。なお、数少ない日本語書籍「WSL 構築と利用」は絶版である。
有効にする方法
「コンパネ→プログラム→Windows の機能の有効化または無効化」から、以下を有効にする。
あるいは、管理者権限で起動したPowerShell上でwsl --install
でインストールする。
PowerShellでインストールした場合、以下のアクションが実行される。
- オプションの WSL および仮想マシン プラットフォームのコンポーネントを有効にする
- 最新の Linux カーネルをダウンロードしてインストールする
- WSL2 を既定値として設定する
- Ubuntu Linux ディストリビューションをダウンロードしてインストールする (再起動が必要になる場合がある)
参考
インストール可能なディストリビューション
wsl -l -o
でリストアップされるもの(2023-08-05時点)
NAME | FRIENDLY NAME |
---|---|
Ubuntu | Ubuntu |
Debian | Debian GNU/Linux |
kali-linux | Kali Linux Rolling |
Ubuntu-18.04 | Ubuntu 18.04 LTS |
Ubuntu-20.04 | Ubuntu 20.04 LTS |
Ubuntu-22.04 | Ubuntu 22.04 LTS |
OracleLinux_7_9 | Oracle Linux 7.9 |
OracleLinux_8_7 | Oracle Linux 8.7 |
OracleLinux_9_1 | Oracle Linux 9.1 |
openSUSE-Leap-15.5 | openSUSE Leap 15.5 |
SUSE-Linux-Enterprise-Server-15-SP4 | SUSE Linux Enterprise Server 15 SP4 |
SUSE-Linux-Enterprise-15-SP5 | SUSE Linux Enterprise 15 SP5 |
openSUSE-Tumbleweed | openSUSE Tumbleweed |
- Microsoft Store から利用可能なもの
NAME | FRIENDLY NAME |
---|---|
AlmaLinux-8 | AlmaLinux 8 WSL |
AlmaLinux9 | AlmaLinux 9 |
他にも Fedora, Alpine 等があるが、ここには CentOSはない。
参考
初回起動
スタートメニューにディストリビューション名が追加されており、アクセスすると、ユーザー名とパスワード設定が要求される。
- このユーザー名およびパスワードは、インストールする Linux ディストリビューションごとに固有であり、Windows ユーザー名とは関係ない。
- ユーザー名およびパスワードを作成すると、そのアカウントがディストリビューションの既定のユーザーとなり、起動時に自動的にサインインされる。
- このアカウントは、Linux 管理者と見なされ、sudo (Super User Do) 管理コマンドを実行できる。
そのまま使えないこともないが、 Microsoft Storeより、複数タブで便利な「Windows Terminal」をインストールすることをお勧めする。
参考
設定ファイル
- .wslconfig
- %UserProfile% (例えば、C:\Users\(Username) )に格納される。
- WSL バージョン2として実行されているすべてのインストール済み Linux ディストリビューション全体で設定をグローバルに構成するために使用される。
- wsl.conf
- unix ファイルとしてディストリビューションのディレクトリ(/etc )に格納される 。
- ディストリビューションごとに設定を構成するために使用される。 このファイルで構成された設定は、このファイルが格納されているディレクトリを含む特定の Linux ディストリビューションにのみ適用される。
- systemd (systemctl)の有効化の指定はここで行う。
普通に使う分には、systemd の有効化以外で編集することはないと思う。
参考
- WSL での詳細設定の構成 | Microsoft Learn
- systemd を使用して WSL を使用して Linux サービスを管理する | Microsoft Learn
- ASCII.jp:WSL2の2つの設定ファイル「.wslconfig」と「wsl.conf」 (1/2)
仮想ディスクイメージの配置先
- %LOCALAPPDATA%\Packages\(PackageFamilyName)\LocalState\(disk).vhdx (例えば、C:\Users\Alice\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx) に格納される。
- PackageFamilyName は
Get-AppxPackage -Name *ubuntu*
で「PackageFullName」として取得できる。 - ディストリビューションのエクスポート手順は以下のとおり。
wsl --shutdown
でWSLを停止する。wsl --export <Distribution Name> <FileName>
でエクスポートできる。ファイル名は拡張子を「tar」とするのが分かりよいか。
エクスポートはスナップショットの代替手段として用いることができる。
参考
- WSL ディスク領域を管理する方法 | Microsoft Learn
- WSL の基本的なコマンド | Microsoft Learn
- ASCII.jp:WSL2で用いるルートファイルシステムの容量を拡大する方法は?
ネットワークの構成
- WSLが起動していると、WindowsとLinuxの間にクラスBの範囲のプライベートアドレスを用いた仮想ネットワークが構築される。
- Windows側からはこのネットワークアダプタとして「vEthernet (WSL)」が見えるようになる。
- WindowsからLinuxに「localhost」でアクセスできる。よって、WindowsとLinuxで同時に同じポートを使うサービスは起動できない。
- WinNAT により、Linuxから外部(物理ネットワーク)にアクセスできる(2023-08-27時点では、Windows11のWSLでは、Linuxから外部にアクセスできませんでしたが…)。
- Linuxから外部にアクセスできない場合、resolv.conf の固定化を検討する(参考サイト参照)
参考
- WSL を使用したネットワーク アプリケーションへのアクセス | Microsoft Learn
- Windows Subsystem for Linuxガイド 第10回 WSLネットワーク編 | マイナビニュース
- Linuxがほぼそのまま動くようになった「WSL2」のネットワーク機能:Windows 10 The Latest - @IT
- WSLからインターネットに接続できないときは/etc/resolv.confを変更する | Cosnomi Blog
ファイルアクセス
Windows → Linux:9protocol
9P(Plan 9 File Protocol)1により、エクスプローラから「\\WSL$」でアクセスできる。エクスプローラの左ペインの一番下にペンギンが追加される。Linuxファイルシステムに対する権限は、初回起動時に作成したユーザー権限となる。
参考
- ASCII.jp:Win32側からWindows Subsystem for LinuxのVolFsへのアクセスが可能に (1/2)
- How WSL accesses Linux files from Windows - YouTube
Linux → Windows:DrvFS
DrvFSにより、CドライブがLinux内で「/mnt/c」としてマウントされている。
参考