前提
導入対象とするマシンは下記の通り。
- 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
- WSL2 と Ubuntu 20.04 LTS on WSL2 の導入は参考記事 "WSL2(Windows Subsystem for Linux)導入手順" のとおり。インストール作業は、特に問題となるところはなく、円滑に進む。
開発環境導入
本ページ手順 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:この手の解説の省略が結構な罠。初回構築時にかなりの進捗阻害要因となるだけでなく、試行錯誤しているときは偶然に解決してしまったりして再現性がなく後にまた苦労する。当該環境構築メモを記録するのはこうした部分を補うため。