WSLのセットアップ
前提条件
Windows 10 Pro Version 2004+
WSLのインストールとWSL 2への切り替え
管理者権限でPowerShellを起動し、以下のコマンドを実行します。
code:enable WSL
PS > dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
code:enable Virtual Machine Platform
PS > dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
コマンドが正常終了したらマシンを再起動します。再起動完了後、WSL 2 を既定のバージョンとして設定します。
code:set default version
PS > wsl --set-default-version 2
code:Lists distributions
PS > wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop-data Running 2
docker-desktop Running 2
Ubuntu LTSのインストール
Microsoft StoreよりUbuntu LTSの最新版を入手します。起動すると初回のみアカウント設定を求められるため指示に従います。
Ubuntu LTSの初回作業
パッケージリストを最新の状態に更新後、最新バージョンにアップグレードします。
$ sudo apt update && sudo apt upgrade
(Optional) マルチバイト文字を取り扱うシェルスクリプトを正常に動作させるため、ロケールをデフォルトのC.UTF-8からen_US.UTF-8に変更します。
$ sudo update-locale LANG=en_US.UTF-8
ref:
Windows Terminalのインストール
ターミナル操作用にWindows TerminalをMicrosoft Storeから入手します。
Windows Terminalの設定
Windows Terminalを起動し、設定画面を開きます。次に、list内のUbuntuセクションを以下の例のように書き換えます。<user_name>には先ほど作成したアカウント名、Ubuntu-20.04の部分は必要に応じてインストールしたバージョンに書き換えてください。
code:settings.json
// To view the default settings, hold "alt" while clicking on the "Settings" button.
{
"defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
"copyOnSelect": true,
"profiles":
{
"defaults":
{
// Put settings here that you want to apply to all profiles
"cursorShape": "filledBox",
"fontFace": "Meslo LG S",
"fontSize": 12
},
"list":
[
{
"guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
"hidden": false,
"name": "Ubuntu-20.04",
"commandline": "wsl.exe -d Ubuntu-20.04 -u <user_name>",
"colorScheme": "One Half Dark",
"startingDirectory": "//wsl$/Ubuntu-20.04/home/<user_name>"
},
{
// Make changes here to the powershell.exe profile
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"hidden": false
},
{
// Make changes here to the cmd.exe profile
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "cmd",
"commandline": "cmd.exe",
"hidden": false
},
{
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"hidden": true,
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure"
}
]
},
// Add custom color schemes to this array
"schemes": [],
// Add any keybinding overrides to this array.
// To unbind a default keybinding, set the command to "unbound"
"keybindings": []
}
ref:
WSLの設定
デフォルトではWindows側のファイルシステムが自動でマウントされますが、そのままではパーミッションを制御できないため、メタデータ有効化オプションを指定した/etc/wsl.confを作成します。
$ sudo vim /etc/wsl.conf
code:/etc/wsl.conf
enabled = true
root = /mnt/
options = "metadata,umask=0022"
mountFsTab = true
generateHosts = true
generateResolvConf = true # /etc/resolv.conf を自動生成したくない場合は false
enabled = true
appendWindowsPath = false # Windows の PATH を引き継がない
この設定内容を反映させるため、PowerShellを起動し次のコマンドでWSLをrebootします。うまくいかない場合はホストマシンごと再起動してください。
code:reboot
# Version 2004+
PS > wsl --shutdown
# Version 1909+
PS > wsl -t Ubuntu-20.04
ターミナルを起動しなおし、メタデータが有効化された状態でマウントされていることを確認します。
code:mount -l
$ mount -l
rootfs on / type lxfs (rw,noatime)
none on /dev type tmpfs (rw,noatime,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,gid=5,mode=620)
none on /run type tmpfs (rw,nosuid,noexec,noatime,mode=755)
none on /run/lock type tmpfs (rw,nosuid,nodev,noexec,noatime)
none on /run/shm type tmpfs (rw,nosuid,nodev,noatime)
none on /run/user type tmpfs (rw,nosuid,nodev,noexec,noatime,mode=755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
cgroup on /sys/fs/cgroup type tmpfs (rw,relatime,mode=755)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,relatime,devices)
C:\ on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,metadata,case=off)
E:\ on /mnt/e type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,metadata,case=off)
ref:
umaskの変更
デフォルトではumaskの設定が0000となっているため、0022となるよう/etc/profileを編集します。/etc/wsl.confにumask=0022を指定している場合は不要です。
$ sudo sh -c 'echo "umask 0022" >> /etc/profile'
(Optional) Install peco
(Optional) Setup bash prompt
参考