Ubuntu 20.04 LTS on WSL2 環境構築メモ (1/4) - 開発環境導入

前提

導入対象とするマシンは下記の通り。

  • Hardware : CPU = i10900, GPU = GeForce RTX 2080Ti, Mem = 32GB, SSD 1 TB + HDD 2TB
  • ベース OS : Windows 10 Pro バージョン 20H2 (ビルド 19042.685)
  • 仮想 OS : Ubuntu 20.04 LTS on WSL2

開発環境導入

本ページ手順 Ubuntu 20.04 LTS on WSL2 環境構築メモ (1/4) では問題となるところはないが、以降の手順で参考記事の通りに進まない箇所が多々あるため、環境構築メモとして記録しておく。
Ubuntu 14.04 より apt-get, apt-chache ではなく apt コマンドの使用が推奨されているため、参考記事に旧コマンドが含まれている場合は注意。

日本語フォントのインストール

Ubuntu に日本語フォントをインストールする。後の GUI 設定におけるデスクトップ環境インストール前にやっておくとよいらしい。

 sudo apt install fonts-ipafont

Windows 10 にインストールされているフォントの参照設定

Windows 10 にインストールされているフォントを参照するように設定する。エディタに nano を用いているが何でもよい。

 sudo nano /etc/fonts/local.conf

local.conf に追記する内容は下記のとおり。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>

開発環境インストール

基礎的な開発ツール群をインストールしておく。

 sudo apt install emacs
 sudo apt install make
 sudo apt install gcc
sudo apt install meld   # including diff etc.

基礎設定

Windows 10 から Ubuntu on WSL2 へのドライブマウント

Windows から WSL2 のドライブへはネットワーク共有フォルダ \\wsl$\ として参照可能であるため、下記のようにドライブレターを割り当てておく

net use U: \\wsl$\Ubuntu-20.04 /persistent:yes

.bashrc と .bash_profile の整備

.bashrc の起動設定

.bashrc を有効にするために .bash_profile に下記の記述を追記しておく。理由は後述のとおり。
Ubuntu on WSL2 が既定で用意している .bashrc が読み込まれるとプロンプトがカラーになるため、カラーか否かをもって .bashrc が有効か否かを判定できる。

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi

bash 起動の際に読み込まれる初期化スクリプトには .profile, .bash_profile, .bashrc の 3 種類がある。が、環境設定を解説する参考記事のとおりに .bash_profile, .bashrc を編集しても .bashrc が読み込まれない。調べてみると、.profile.bashrc を読み込む記述があり、かつ、.profile.bash_profile が存在しているときは読み込まれないらしい。

WSL2 初期状態では .bash_profile がないため、参考記事に従って .bash_profile を新規作成するのみだと .bashrc の起動トリガーであった .profile が無効になってしまい、.bashrc が動作しなくなる *1。したがって、上述のとおり .profile にある .bashrc 起動ロジックを .bash_profile へ移植する。

うっかり対策

Linux を導入すると怖いのが、うっかりフォルダを全削除してしまうこと。Windows / Linux 相互運用などするときには特に注意。いちおう簡易な対策を .bashrc に入れておく。本格的には定期バックアップを仕掛けるべきか。

# rm 実行前確認を強制
alias rm="rm -i"
時刻同期

(WSL2 を立ち上げたまま) スリープから復帰する (ことを繰り返す) と時刻が狂うらしいため、WSL2 起動時に時刻補正をするように .bashrc に記述する。この処理には 2 ~ 3 秒かかる。

echo 'synchronizing hardware clock ...'
sudo hwclock -s
clear

hwclock に対する sudo をパスワード入力なしで許可するため、sudo visudo コマンドにて /etc/sudoers を下記のように編集する。

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
%sudo   ALL=(ALL) NOPASSWD: /usr/sbin/hwclock -s  #この行を追加

*1:この手の解説の省略が結構な罠。初回構築時にかなりの進捗阻害要因となるだけでなく、試行錯誤しているときは偶然に解決してしまったりして再現性がなく後にまた苦労する。当該環境構築メモを記録するのはこうした部分を補うため。