WSL2へのUbuntu 20.04セットアップメモ

Ubuntu22.04 LTS のターミナルのレンダリングが異常に重いのでバージョンを落として運用するためのメモ
Node.js の開発環境だけ入れる

環境

環境 Version
Windows 11 Pro Build 22621.819
Ubuntu 20.04.5 LTS
zsh 5.8 (x86_64-ubuntu-linux-gnu)
MariaDB Ver 15.1 Distrib 10.3.34-MariaDB
Docker 20.10.21, build baeda1f
Git 2.25.1

初回セットアップ

適当な開発環境をサクッと

# systemdの有効化
cat <<EOF | sudo tee /etc/wsl.conf
[boot]
command=service docker start; service nginx start; service mysql start;

[user]
default=lyco
EOF

sudo apt update -y
sudo apt upgrade -y
sudo apt install -y \
    zsh \
    ssh \
    net-tools \
    unzip \
    mariadb-server \
    nginx \
    git

# Docker
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
## 依存関係のインストール
sudo apt install -y \
   apt-transport-https \
   ca-certificates \
   curl \
   gnupg \
   lsb-release
## Docker公式のGPG鍵を追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## リポジトリをパッケージマネージャーに登録
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
## docker本体のインストール
sudo apt install -y dockerdocker-ce docker-ce-cli containerd.io docker-compose-plugin
## sudo緩和
sudo usermod -aG docker $USER

## WSLをリブート

# zsh設定
git clone https://github.com/Lycolia/my-zsh-conf.git
rm -Rf my-zsh-conf/.git/
rm my-zsh-conf/LICENSE
rm my-zsh-conf/README.md
mv my-zsh-conf/.* .
rm -Rf my-zsh-conf/

# Node.js @ Volta
# .zshrc書き換えるのでzsh設定のあとにやる
curl https://get.volta.sh | bash
## シェル再起動後
volta install node@lts

cat <<'EOF' | tee -a ~/.zshrc
## volta
export PATH=$PATH:$HOME/.volta/bin
EOF

# Git周り
## ユーザー名
git config --global user.name "XXXXXXXXXXXXXXXX"
## メアド
git config --global user.email "XXXXXX@EXAMPLE.COM"
## 改行コードの LF 強制
git config --global core.autocrlf false
## UTF8 文字がエスケープされるのを防止する
## 設定してないと "\343\202\275" のような表示になる
git config --global core.quotepath false
## コードエディタ
git config --global core.editor nano
## コミット時に使う gpg 署名鍵
git config --global user.signingkey XXXXXXXXXXXXXXXX
## コミット時に gpg 署名する
git config --global commit.gpgsign true
## git init したときのメインブランチ
git config --global init.defaultbranch main
## push時のデフォルトブランチ
## 設定しておくと初回 push 時のオプションが不要になる
## もし別ブランチにpushする場合は注意が必要
git config --global push.default current

## 最後にGPG署名の設定
## https://blog.lycolia.info/github%e3%81%abgpg%e3%81%a7%e7%bd%b2%e5%90%8d%e3%82%b3%e3%83%9f%e3%83%83%e3%83%88%e3%81%99%e3%82%8b/

cat <<'EOF' | tee -a ~/.zshrc
## volta
export GPG_TTY=$(tty)
EOF

トラブルシューティング

上記手順に書いてないことをすると起きるが、一応付記しておく

<3>WSL (639) ERROR: CreateProcessEntryCommon:345: getpwnam(USER_NAME) failed 0 というエラーが出る

wsl.conf[user] セクションで default=USER_NAME が存在しないユーザーを指定していると出る

Docker や nginx のサービスが起動しない

systemd が有効になっていると起動しないので /etc/wsl.conf から systemd=true を消す