Arduino
WSL2
Windows Terminal
public
Windows Subsystem for Linux (WSL)
>
で始まるコマンドは PowerShell でのコマンドを表す。
$
で始まるコマンドは Linux でのコマンドを表す。
インストールする
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 # WSL2を使う
> wsl --set-default-version 2
# インストールできるディストリビューション一覧を表示する
> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。
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
# Debianのインストール
> wsl --install -d Debian
# 必要なパッケージのインストール
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install git
$ sudo apt install python3 python3-venv
$ sudo ln -s /usr/bin/python3 /usr/bin/python
# WSLにインストールしているディストリビューション一覧を確認する
> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Debian (既定)
# WSLのディストリビューションをアンインストールする
> wsl --unregister Debian
# インストール済みのディストリビューションと状態を確認する
> wsl -l -v
NAME STATE VERSION
* Debian Running 2
ディストリビューションを起動するときに0x80370114
のエラーが出る
Windows の機能の有効化または無効化
から仮想マシン プラットフォーム
を有効にする。
これで駄目だったらHyper-V
とかLinux 用 Windows サブシステム
あたりも有効にすればいいかもしれない。
シャットダウンする・起動する
# シャットダウンする
> wsl --shutdown
# 起動する
> wsl -d {distributionName}
環境をバックアップする
> wsl --export Debian "C:\path\to\debian.tar"
ホスト名を変更する
/etc/hostname
を変更しても WSL を再起動すると戻ってしまう。
以下のように適用する。
# wsl.confを作成する
$ sudo touch /etc/wsl.conf
$ sudo nano /etc/wsl.conf
[ network]
hostname = debian
# WSLをシャットダウンさせたあと、再度起動する
> wsl --shutdown
systemctl を使う
sudo nano /etc/wsl.conf
# 以下を追加する
[ boot]
systemd = true
Windows Terminal を設定する
ディストリビューションを複数使用するならcommandline
は"C:\\Windows\\system32\\wsl.exe -d {ディストリビューション名}"
の方が良いかもしれない。
ネットワークドライブを自動マウントさせる
# ディレクトリを作っておく
$ sudo mkdir /mnt/archives01
# 設定ファイルを編集する。以下を記載する
$ sudo nano /etc/fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM
//xxx.xxx.xxx.xxx/archives01 /mnt/archives01 drvfs defaults 0 0
# /etc/fstabに記載した設定を反映させる
$ sudo mount -a
git push できなくなったとき
Windows の資格情報マネージャー
で git に関係する項目を削除してコマンド プロンプトからwsl --shutdown
する。
VSCode+WSL の Git で "Missing or invalid credentials" エラーの対処法 - Qiita
WSL2 接続時にcygpath: not found
やexec: cmd: not found
が出る
/mnt/c/Users/{ユーザー名}/.pyenv/pyenv-win/bin/pyenv: 3: cygpath: not found
/mnt/c/Users/{ユーザー名}/.pyenv/pyenv-win/bin/pyenv: 3: exec: cmd: not found
Windows でのパスと WSL でのパスが衝突するのを回避する方法 #Windows - Qiita
Windows 側の環境変数と競合するかららしい。WSL では Windows 側の環境変数を参照しないように/etc/wsl.conf
に以下をマージする。
/etc/wsl.conf [interop]
appendWindowsPath=false
Windows 側で以下のコマンドを実行し、WSL を再起動する。