はじめに
新しい Windows 11 の作業端末を購入したのだが、前の端末(Windows 10)で VirtualBox 経由でUbuntuを利用していたため、同様にこちらの環境をセットアップした。
しかし、GUI 経由だとどうしても動作がもっさりしているように感じたため、WSL2 を利用した開発環境構築を行おうとして、色々セットアップした調査結果を記す。
今回作成する構成
今回は以下のような構成を作成する。
- Windows 11 に WSL2 と Ubuntu をインストールする
- Ubuntu のデスクトップ環境は利用しない 1
- CUI系の開発ツール (Git や Vim など)は Ubuntu にインストールする
- GUI系の開発ツール (VSCode など)は Windows にインストールする
- Windows 側からブラウザを通して開発したウェブアプリケーションを閲覧できる
- 例えば
docker run --rm -p 8080:80 nginx
とした場合、Windows 側のブラウザでhttp://localhost:8080/
としてアクセスすれば nginx にアクセスできること
- 例えば
WSL2 と Ubuntu の導入
これはコマンドプロンプト(もしくはPowerShell)を開き、wsl --install
を実行すれば完了する。 デフォルトで ubuntu がインストールされるようになっている。
コマンドの完了後、Windows を再起動するとアプリに Ubuntu がインストールされているため、これを立ち上げると初期設定が行われて、ターミナルが立ち上がる。
Docker のインストール
ターミナルは普通の Ubuntu として利用できる。 そのため、Docker のウェブページを参考にして、Docker を apt 経由でインストールする。
インストール後は sudo systemctl enable docker
としておけば、Ubuntu を立ち上げたときに Docker サービスを自動的に立ち上げるようになる。
Windows / Ubuntu 間のファイルアクセス
Windows -> Ubuntu
Windows のエクスプローラーに \\wsl$
と打ち込めば、Ubuntu のファイルシステムにアクセスできる。
もしくはエクスプローラーに Linux が追加されているので、ここからでもアクセスできる。
Ubuntu -> Windows
Ubuntu のターミナルで /mnt/c
にアクセスすると、Cドライブのルートにアクセスできる。
Windows から localhost で Ubuntu にアクセスするための設定
Windows 側のホームディレクトリに .wslconfig
(フルパスは C:\Users\<ユーザ名>\.wslconfig
) というファイルを作成して、以下の内容を記載する。
[wsl2]
localhostForwarding=True
このファイルを配置した後、wls (もしくは Windows)を再起動してこの設定を反映する。 設定ファイル内に [wsl2]
というセクションを作るようにしないと、不明なキーがありますといったエラーが出力される。
.bashrc
と .bash_profile
の読み込みについて
Ubuntu を立ち上げたとき、この2つのファイルがホームディレクトリに存在していると .bash_profile
のみが読み込まれて、.bashrc
は読み込まれないようだ。
そのため、.bash_profile
の中で .bashrc
を読みだすようにしてこの両方の設定をアクティブにしておく。
if [[ -f ~/.bashrc ]] ; then
. ~/.bashrc
fi
画面のカラー化の設定などが .bashrc に書かれているので、こちらを読みだした方が便利。
Linux 上で実行可能な GUI アプリケーションについて
WSL2では Linux GUI アプリもコマンドを入力すれば Windows 上にウインドウとして表示してくれるそうだ。
マニュアルによると GIMP すら実行できるらしい。
gitk もこれができるかと思って試したら sudo apt install gitk
を実行した後、gitk
コマンドでウインドウ表示ができた。 同様に sqlitebrower もウインドウ表示ができるなど、かなり多くの apt で入手した GUI コンテンツが実行可能な模様。
VSCode によるコンテンツ編集時の注意点
WSL上のファイルを開く場合は先述したパスを直接開くのではなく、拡張機能WSLをインストールした後 WSL に接続して編集する、という方式が推奨される。
VSCodeで直接パスを指定していると開発関連のツールのパス解決がうまくいかない。 今回の導入時は PHP のクラスが認識されないなどの問題が発生したが、WSL接続をして編集すればこれらの問題は解消された。
まとめ
上記の設定を行うことで、
- Windows の GUI で Ubuntu 上のファイルを編集可能
- Ubuntu を使って docker や python, php などのコマンドを実行可能
- ウェブアプリケーションを開発する場合 Windows 側で localhost 経由でアクセス可能
となる。
おそらく、ここまでできれば VirtualBox 上で動作させるよりはパフォーマンスがよいと思うので、実際に試していきたい。
-
厳密には1度 xrdp で接続可能なリモートデスクトップを導入してみたが、RDP経由だからか localhost 上であっても動きがややもっさりしているように感じたので、導入を見送った ↩