144
230

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows環境のWSL2とDockerのある開発環境構築メモ2022/04

Last updated at Posted at 2020-06-09

自分用のWindowsでの開発環境構築メモ。
Windows 10 Home対応。

何かの言語用の構築をするわけではないが、WSL2とDockerを準備するので、LinuxとWindowsのいいとこどりで大抵の開発環境構築の土台としては困らない。

他のマシンで元々使用しているWSL環境があればエクスポートしておく

PowerShellユーザーモード
wsl --export Ubuntu ./Ubuntu.tar

Ubuntuの部分はDistro名なので環境によって異なる。
Distro名はWSL環境の一覧で確認できる。

PowerShellユーザーモード
wsl -l -v --all

Windows 10 2004 May 2020 Update以上にあげる

2020年5月末にアップデートのきたWindows 10でWSL2が正式版になったのでそれ以上にアップデートする。
普通にWindows Updateを定期的にかけていれば問題ないはず。

基本Windowsアップデートをかければいいが、ローリングアップデートなので、まだ来ていなければこちらにアクセスしてアップデートツールを使う。

WSL2 を有効にする

Windows Subsystem for Linux のインストール ガイドを元にインストールを進める。

以下のコマンドでWindowsのシステム設定、Linux Kernel等を含めて一気にインストールできる。
上記のインストールガイドにも書かれている。

wsl --install

wslのバージョンを上げる前にLinux kernelをインストールする必要があるので、
こちらの手順からダウンロードしてインストールしておく。

Ubuntu をインストール

Microsoft Storeからインストール。Distroは特に何か要件がなければUbuntuを選択。
2020/06時点ではUbuntu20.04が入る。

引き継ぐ環境がある場合は、エクスポートしておいたtarファイルを ~/AppData/Local/Ubuntu に展開してインポートする。

PowerShellユーザーモード
mkdir ~/AppData/Local/Ubuntu
wsl --import Ubuntu ~/AppData/Local/Ubuntu ./Ubuntu.tar --version 2

~はそのままでは認識しないのでTABキーでフルパスに変換する。

Windows Terminal をインストール

Microsoft Storeからインストール。

設定ファイルのJSONを開いて、defaultProfileをUbuntuのGUIDで書き換える。

"defaultProfile": "{<UbuntuのGUID>}"

ssh agentのセットアップ

【2023/02/15追記】
より良いツールwsl2-ssh-agentが現れたので、そちらを使うのが良さそう。
https://zenn.dev/mametter/articles/49a2b505ec0275
Windows側にファイルを配置したり等の作業が不要になる。

Windows側のssh-agentは動作している必要があるため、WindowsのOpenSSH Client Serviceを起動。

PowerShell管理者モード
Start-Service ssh-agent
Set-Service -StartupType Automatic ssh-agent

あとはWSL側でwsl2-ssh-agentを導入する。
https://github.com/mame/wsl2-ssh-agent#1-install-wsl2-ssh-agent の手順に従ってwsl側にバイナリを配置し、~/.bashrcなどに以下を追記する。

eval $(/path/to/wsl2-ssh-agent)

WSL側でkeyfileを生成してssh-agentに追加しておく。

keyfileを生成して追加
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519
chmod 400 ~/.ssh/id_ed25519
ssh-add ~/.ssh/id_ed25519

Docker Desktop for Windowsのインストール

https://www.docker.com/products/docker-desktop からダウンロードしてインストール。

Stableチャンネルで問題ない。

VSCodeのインストール

https://code.visualstudio.com/からインストール。

WSL環境との連携のために Remote - WSLを導入。
導入しておけば、WSL側からcodeコマンドで立ち上げたときに必要なものを自動でインストールしてくれる。

メモリ枯渇問題への対処

2020/06時点ではWSLが確保したメモリが解放されずにWindows側のメモリが枯渇してしまう問題があるようなので、WSLでの利用メモリの上限を設定しておく。

対処方法も上記のリンクに記載があるので対処しておく。

WSL側にWindows側からlocalhostでアクセス出来るようにする

%USERPROFILE%\.wslconfig の設定ファイルに次の1行を追記する。

localhostForwarding=True

systemd を有効にする

Windows 11のWSL2でUbuntu 22.04 LTSまでアップデートすると、ようやくWSLユーザー待望のsystemdを起動することができる。

Windows 11 かつ WSL2の環境は既に整っている前提で始める。

WSLのバックアップ(exportをしておく)

exportコマンドでWSL全体をバックアップしておき、まずいことがあれば何時でも戻せるようにしておく。

Ubuntu 22.04にアップグレードする

ここからは、20.04 LTSから 22.04 LTSにアップグレードする手順を記載しているが、Microsoft StoreにはUbuntu 22.04 LTS が公開されているので、基本的にはそちらを新規インストールするほうがおすすめ。

Ubuntu 22.04 にアップグレードする要件は、64-bit Ubuntu 20.04 LTS/Ubuntu 21.10 であることなので、そこまでアップグレードが完了しているか確認する。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:        20.04
Codename:       focal

packageがすべて最新になっていることも必要なので、アップデートしておく。

$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt dist-upgrade -y

アップデートした場合はrebootが必要なので、Powershellからwsl -t <Distro> wsl -d <Distro> で再起動しておく。

$ sudo do-release-upgrade -c -d
Checking for a new Ubuntu release
New release '22.04' available.
Run 'do-release-upgrade' to upgrade to it.

New release '22.04' available. を確認して次を実行する。(正式リリース前にアップグレードする場合は -d オプションが必要)

$ sudo do-release-upgrade

すべてインストールが完了したら、再起動する。

/etc/wsl.conf にsystemd起動コマンドを追記

/etc/wsl.conf はDistro毎の設定を記述するもので、初期では存在していないのでなければファイルを作成する。
ファイルの仕様はこちらを参照。

/etc/wsl.conf
[boot]
command = /usr/libexec/wsl-systemd

設定を追記したら再起動する。

確認

serviceのstatusを確認してみて、cronなどがrunninngであれば成功。

systemctl list-units --type=service

謝辞

systemdが使える件についてはこちらのTweetで教えてもらいました。感謝🙌

144
230
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
144
230

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?