最新の WSL では systemd がサポートされているが、Windows 10 に標準で入っている WSL はバージョンが古く、アップデートが必要な場合がある。
`wsl --update` を打ち込む手もあるけれど、ストアアプリを入れると自動アップデートされるので楽かも。
バージョンを確認*1。
C:\>wsl --version WSL バージョン: 1.2.5.0 カーネル バージョン: 5.15.90.1 WSLg バージョン: 1.0.51 MSRDC バージョン: 1.2.3770 Direct3D バージョン: 1.608.2-61064218 DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows バージョン: 10.0.19045.2965
当該のディストリを起動し、/etc/wsl.conf に設定を追記
# /etc/wsl.conf [boot] systemd=true
WSL を再起動。
C:\> wsl --shutdown
当該のディストリを起動し、systemctl を確認。
$ systemctl | grep ssh ssh.service loaded active running OpenBSD Secure Shell server
【WSL2】systemdがサポートされたようなので試してみた | しきゆらの備忘録
https://shikiyura.com/2022/11/systemd_supported_in_wsl/
デフォルトユーザを変更したいディストリビューションのシェルで
$ cat /etc/passwd
を打ち込み、デフォルトにしたいユーザの uid を確認する。
# /etc/passwd mogamin:x:1001:1002:,,,:/home/mogamin:/bin/bash # 1001
レジストリの
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\(UUID)
から当該のディストリを探す。DistributionName キーにディストリ名があるので、これで判別する。
当該ディストリの DefaultUid キーの値を上で確認した uid に変更する。
DefaultUid (REG_DWORD): 3e9 (1001)
WSL を再起動。
C:\> wsl --shutdown
wsl --import (DIST_NAME) path\to\distro path\to\archive.tar --version 2
wsl --import (DIST_NAME) path\to\distro path\to\archive.vhd --version 2 --vhd
path\to\distro 配下に .vhdx を作成する。
WSL2 環境の場合は --version を指定する必要がある。
wsl --export (DIST_NAME) path\to\archive.tar
"archive.tar" までを指定しないと、パーミッションエラーになる。