WSL2に関するメモ
[!NOTE] 改訂版があります。
参考: WSL2をインストールしてみた
参考: Vagrant + Virtualbox 6.1.16 と WSL2 を同時に動かしたメモ
sudo apt update
sudo apt upgrade
# 日本語ランゲージパック
sudo apt -y install language-pack-ja
# ロケールの設定
sudo update-locale LANG=ja_JP.UTF8
# 日本語manページのインストール
sudo apt -y install manpages-ja manpages-ja-dev
鬱陶しいのでBEEPを消しておく。
参考: Bash on Windowsでビープ音を消す方法
echo "set bell-style visible" >> ~/.inputrc
echo "set visualbell t_vb=" >> ~/.vimrc
[!NOTE] WindowsTerminalの場合、
settings.json
に各プロファイルの設定に 以下の設定を追加すればbash、vim、その他一括して変更できる。"bellStyle" : "visual",
cd /bin
sudo ln -sf bash sh
sudo apt install net-tools
sudo mkdir /proj /work
sudo chown `whoami`:`whoami` /proj /work
参考:pyenvのインストール
# プロンプトの設定
PS1="\[\e[36m\]$WSL_DISTRO_NAME\[\e[0m\]:\w\$ "
# キーバインドの設定
bind '"\C-n": history-search-forward'
bind '"\C-p": history-search-backward'
# ディレクトリスタックの表示改善
function pushd() {
command pushd $* > /dev/null
command dirs -v
}
function popd() {
command popd $* > /dev/null
command dirs -v
}
function dirs() {
command dirs -v
}
# 表示色変更
export LS_COLORS='di=01;32:ln=01;36:ex=01;31:'
export GREP_COLORS='mt=01;31:ml=:cx=:fn=01;32:ln=32:bn=32:se=36'
# lessのオプション
export LESS="-iMR"
# for pyenv
export PYENV_ROOT=/proj/.pyenv #環境に合わせて修正してね
if [ -e $PYENV_ROOT ]; then
export PATH=$PYENV_ROOT/bin:$PATH
# 仮想環境名をプロンプトに表示しない場合は以下を有効化
export VIRTUAL_ENV_DISABLE_PROMPT=1
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
export PYTHON_CONFIGURE_OPTS="\
--enable-shared\
"
fi
# for nodenv
export NODENV_ROOT=/proj/.nodenv # 環境に合わせて修正してね
if [ -e $NODENV_ROOT ]; then
export PATH=$NODENV_ROOT/bin:$PATH
eval "$(nodenv init -)"
fi
# DISPLAY変数が未定義(MobaXterm使用でない)ならDISPLAYを設定する
if [ -v $DISPLAY ]; then
export DISPLAY=192.168.78.200:0.0
fi
echo DISPLAY="$DISPLAY"
起動時の初期ディレクトリがホームディレクトリにならないので(SSHの場合は大丈夫なはず)、以下の方法で指定する。
Windows Terminal + WSLでターミナル起動時のディレクトリをホームディレクトリにする
settings.jsonで設定してない場合や設定とは別のディレクトリを指定する場合は-dオプションで指定する。
ホームディレクトリを指定する場合は以下。
C:\Users\<<ユーザ名>>\AppData\Local\Microsoft\WindowsApps\wt.exe -p "«環境登録名»" -d "\\wsl$\«仮想環境名»\home\<<ユーザ名>>"
※ -p で指定するのは仮想環境名ではなく、WindowsTerminal に登録した環境名(ドロップダウンリストに表示される名前)。 -d で指定するのは仮想環境名。同一でない場合は間違えないように注意。
使用中のターミナルを使って起動する場合はwslコマンドで起動する。
c:\WINDOWS\system32\wsl.exe ~ -d "仮想環境名"
※ wsl コマンドのパラメータに ~
を追加
仮想マシン起動語、PATHにWindows環境のPATHが引き継がれる。
便利な半面、コマンド名補完でサーチに行くと かなりの時間をくってしまい 不便。
Windowsのコマンドを仮想マシン上から起動することはあまりない(私の場合)ので、、
Windows環境のPATHを引き継がせないようにする。
設定方法は /etc/wsl.conf
に 以下の設定を追加する。
[interop]
appendWindowsPath = false
参考: WSL2でWindowsのPATH設定が引き継がれるのを解除する
参考: WSL2でGUIアプリを起動
参考:Linuxがほぼそのまま動くようになった「WSL2」のネットワーク機能
向き | 可否 |
---|---|
HOST → WSL2 | localhost でアクセスできる |
WSL2 → HOST | localhost でアクセスできない。 IPアドレス指定ならアクセスできる。 |
仮想マシンは元になる仮想マシンをエクスポートして、別のディレクトリにインポートすれば複製できる。
wsl --list --verbose
対象の仮想マシンが停止していることを確認。
停止してない場合はそれぞれのターミナルを終了するか、以下のコマンドで。
ターミナルを終了してから実際に仮想マシンが停止するまで少し時間がかかる(数十秒くらい?)。
wsl --terminate «対象の仮想環境名»
wsl --export «エクスポート元仮想環境名» «エクスポートファイル名».tar
例
wsl --export Ubuntu-20.04 F:\WSL_VMs\_Backup\Ubuntu-20.04.tar
wsl --import «新しい仮想環境名» «インストール先ディレクトリ» «エクスポートファイル名».tar
※ インストール先ディレクトリは自動で作成される
例:
wsl --import Ubuntu-20.04-1 ./Ubuntu-20.04-1 .\_Backup\Ubuntu-20.04.tar
不要になった仮想環境は削除する。
wsl --unregister «削除する仮想環境名»
wsl --unregister Ubuntu-20.04-2
インポートした環境では、デフォルトユーザがrootになっているため、自分に変更しておく。
方法は2つ。 /etc/wsl.conf
のほうがお手軽かな? エクスポート元で書いておけば逐一書かなくてもいいし。
両方設定した場合は/etc/wsl.conf
の設定が優先される(らしい)。
/etc/wsl.conf
で指定する方法。/etc/wsl.conf
を以下の内容で作成
[user]
default=«デフォルトユーザ名»
参考:github Microsoft/WSL/issues/3974 参考:wsl.conf と .wslconfig - roy-n-roy メモ
参考:WSLでCentOS/Fedoraを利用する - roy-n-roy メモ
試してないけど、メモっておく。
PS: XXXX> diskpart ← コマンド起動
Microsoft DiskPart バージョン 10.0.19041.964
Copyright (C) Microsoft Corporation.
コンピューター: XXXXXX
DISKPART> select vdisk file="f:\WSL_VMs\openvino_2021_3\ext4.vhdx" ← 圧縮したいvhdxファイル
DiskPart により、仮想ディスク ファイルが選択されました。
DISKPART> detail vdisk ← 縮小前の状態確認
デバイスの種類 ID: 0 (不明)
ベンダー ID: {00000000-0000-0000-0000-000000000000} (不明)
状態: 追加済み
仮想サイズ: 256 GB
物理サイズ: 20 GB
ファイル名: f:\WSL_VMs\openvino_2021_3\ext4.vhdx
子: いいえ
親ファイル名:
関連付けられたディスク番号: 見つかりません。
DISKPART> compact vdisk ← 縮小の実行
100% 完了しました ← ちょっと時間がかかる
DiskPart により、仮想ディスク ファイルは正常に圧縮されました。
DISKPART> detail vdisk ← 縮小前の状態確認
デバイスの種類 ID: 0 (不明)
ベンダー ID: {00000000-0000-0000-0000-000000000000} (不明)
状態: 追加済み
仮想サイズ: 256 GB
物理サイズ: 12 GB ← 小さくなった
ファイル名: f:\WSL_VMs\openvino_2021_3\ext4.vhdx
子: いいえ
親ファイル名:
関連付けられたディスク番号: 見つかりません。
DISKPART>exit ← 終了