WSL+Ubuntuの環境を設定する機会があったためメモを残します。
タスク
- WSL2のインストール&ディストリビューション導入
- WSL2の設定追加
- ディストリビューションの設定
作業環境
- Windows11 pro 23H2 (OSビルド : 22631.3880)
WSL2のインストール&ディストリビューション導入
1. WSL2をインストール
powershellを管理者で開き、下記コマンドを実行。
-d
オプションをつけてディストリビューションを明示することで、任意のディストリビューションをインストールすることも可。デフォルトはUbuntu
wsl --install
wsl --install -d <distro>
下記のようなメッセージが出力されればOK。
インストール中:仮想マシンプラットフォーム
仮想マシンプラットフォームはインストールされました。
インストール中:Linux 用 Windows サブシステム
Linux 用 Windows サブシステムはインストールされました
インストール中:Ubuntu
Ubuntu はインストールされました
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
2. 再起動
メッセージに従ってPC再起動。
3. ユーザー名とパスワードの設定
ユーザー名とパスワードはディストリビューション固有のもの(windowsのアカウントではない)。それぞれお好みのユーザー名とパスワードを設定する。今回は、testUserで設定。
Ubuntu は既にインストールされています。
Ubuntuを起動しています..
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: testUser
New password:
Retype new password: passwd: password updated successfully
ちなみにrootはダメ。rootユーザーは既に存在しているので当然ではある。
Enter new UNIX username: root adduser: The user root' already exists.
4. その他確認
Windows Terminalからexitして画面を閉じる。
powershellから下記コマンドを実行して、wslとディストリビューションが正しくインストールされているか確認。
wsl -v
wsl -l -v
WSL2の設定追加
wslのConfigファイルは2種類存在する。
- .wslconfig(グローバル設定)
- wsl.conf(ローカル設定)
1. .wslconfigの設定
C:\Users\%UserProfile%
に.wslconfig
という名前でファイルを作成。
.wslconfig
内に下記の設定を追加。
# wslが利用できるメモリ量の設定
# メモリ量は環境に合わせて調整
[wsl2]
memory=4GB
swap=0
2. wsl.confの設定
Windows Terminalからubuntuのコンソールを開く。
wsl.conf
ファイルは/etc配下にあるのでそこまで移動。
cd /etc
次に、下記コマンドでwsl.confに設定を追加。
ホスト名は各自自由に設定する。(今回は例でTEST01と命名)
sudo vim ./wsl.conf
# windowsファイルに対してLinuxのファイルメタデータをサポート
[automount]
options="metadata"
# windowsパスの引継ぎ無効化
[interop]
appendWindowsPath=false
# systemdの有効化
[boot]
systemd=true
# hosts, resolv.confの初期化を無効化
[network]
hostname="TEST01"
generateHosts=false
generateResolvConf=false
# ディストリビューションにログインする時のデフォルトユーザー
[user]
default="testUser"
デフォルトユーザーはwsl.conf
ではなく下記のように設定することも可。
powershellから下記コマンドを実行して変更できる。
※ubuntu
の部分は各々がインストールしたディストリビューション名
ubuntu config --default-user <username>
ubuntu config --default-user testUser
3. 再起動
設定を追加したら一度情報を反映させるために再起動する。
powershellで下記コマンドを実行。
構成変更の8秒ルール
ディストリビューションを実行中のサブシステムが完全に停止して設定が反映されるまで再起動を待つ必要がある。ディストリビューションシェルの全てのインスタンスを閉じてから約8秒程度。
wsl -l --running
を実行すると、実行中のディストリビューションが存在するか確認できる。
# t:tarminate, l:list, d:distribution
wsl -l -v
wsl -t ubuntu
wsl -l --running
wsl -d ubuntu
ディストリビューションの設定
1. resolv.confの作成と設定
wsl.conf
でgenerateResolvConf=false
の設定を入れているので、resolv.confを作成して名前解決を行えるようにする。下記コマンドでresolv.conf
を作成して、作成したファイルに以下の設定を追記する。
cd /etc/
ls | grep resolv.conf
sudo touch resolv.conf
sudo vim ./resolv.conf
# 優先DNS
nameserver <自ネットワークのDNSのIP>
# 代替DNS
nameserver <自ネットワークのDNSのIP>
# ドメインは書かなくてもOK
domain <自ネットワークのドメイン名>
# 優先DNS
nameserver 8.8.8.8
# 代替DNS
nameserver 8.8.4.4
2. hostsの設定
この設定はホスト名を変更している場合のみ実施。hostsの中に下記の設定を追記する。
sudo vim /etc/hosts
127.0.1.1 <ホスト名>
127.0.1.1 TEST01
3. proxyの設定
Proxy環境で環境構築する場合は実施。.bashrc
の最終行にProxy URLの環境変数を追記。
ユーザー名とパスワードが必要な場合はURLにそれぞれ追加する。
ユーザー名とパスワードはProxyのもの。
cd ~
vim ./.bashrc
export HTTP_PROXY=http(s)://<proxy-host>:<proxy-port>
export HTTPS_PROXY=$(HTTP_PROXY)
#もしくは
export HTTP_PROXY=http://‹username>:<password>@<proxy-host>:<proxy-port>
export HTTPS_PROXY=$(HTTP_PROXY)
4. apt.confの設定
認証Proxy環境でsudo apt update
を実行するとプロキシの影響でエラーになるため、/etc/apt/apt.conf
に下記設定を追加する。
ユーザー名やパスワードに特殊文字が入っている場合はパーセントエンコードする。特に@
マークなどはエラーの原因になるため、%40
などでエンコード。
Acquire::http::Proxy "http://<username>:<password>@<proxyhost>:<port>/":
Acquire::https::Proxy "https://<username>:<password>@<proxyhost>:<port>/";
Acquire::ftp::Proxy "ftp://<username>:<password>@<proxyhost>:<port>/";
5. /HOME/~にWindowsデスクトップのシンボリックリンクを作成
ユーザーディレクトリからWindows上のDesktopへ簡単にアクセスできるよう設定。
この設定が不要な方はスキップ。
cd ~
ln -s /mnt/c/Users/<Windowsのユーザー名>/Desktop
6. aliasの設定
下記コマンドを実行し、.bashrc
の最終行に設定を追加する。
これでディストリビューション上からWindowsのソフトを実行できる。
今回はエクスプローラ
とvscode
のエイリアスを設定。
cd ~
vim ./.bashrc
# エクスプローラ
alias explorer="/mnt/c/WINDOWS/explorer.exe"
# vscode
alias code="/mnt/c/Users/<ユーザー名>/AppData/Local/Programs/Microsoft\ VS\ Code/bin/code"
全ての設定が終わったら再起動して設定を反映させる。
# t:tarminate, l:list, d:distribution
wsl -t ubuntu
wsl -l --running
wsl -d ubuntu
7. 最後に
パッケージを細心に更新
sudo apt update
おまけ
設定を終えたらエクスポートしておくと、あとで設定がグチャった時にすぐリストアできる。
wsl --export <ディストリビューション名> <書き出したいファイル名>
wsl --export ubuntu C:\wsl\ubuntu\backup-ubuntu.tar