WSL(その7:install方法)

結局3台のwindows11マシンへWSLをinstall/updateしましたが、install方法を忘れそうなので備忘のメモです。
(1) 自宅のLANは、IPv4はプライベートアドレスを固定で割り当てており、IPv6のlookupでもwindowsのIPv4設定タグで指定したDNSを使ってアクセスして欲しいが、windowsはIPv6設定タグでIPv6のDNSを無効化できず結果的にIPv4設定タグで指定したDNSは使われないようなのでIPv6設定タグのDNSアドレスにはIPv6 mapped addressを指定した。つまりDNSが10.10.10.1なら、::ffff:10.10.10.1を記述した。これはWSLとは無関係であるが、WSLではなくWindows10自体で作業を行う際にフレッツ網のおかしなDNSを見に行かせないための設定である。(今まではwindowsは補助的にしか使っていなかったのでフレッツ網のDNSを参照する設定でも特に支障はなかったがWSLで常用する場合にはちゃんと設定しておかないと不便なため記述した。)
(2) microsoft storeからubuntu on windowsとx410をinstall。またmicrosoft store appの設定でアプリの自動更新をonにした。更にx410はstartupで自動起動させる。具体的には、super-R shell:appsfolderでx410のフォルダーを開いたまま、super-R shell:startupへx410のアイコンをドラッグ&ドロップする。
(3) wslを起動してsuして普通にuser fooを作成する。作成が完了したら一旦wslを終了する。
(4) 管理者権限付きのdos shellからubuntu config --default-user fooを実行する。
(5) 再度、wslを起動すると、今度はfooで起動する。fooでの起動を確認した後は、最初のユーザは必要なければ削除して構わない。
(6) 必要に応じて以下をinstallする

# apt update
# apt install make
# apt install gcc
# apt install tcsh
# apt install xterm
# apt install libmysqlclient-dev
# cpan upgrade
# cpan DBI DBD::mysql

(7) /etc/resolv.confと/etc/hostsを修正する。ただし、これらは自動生成されてしまうため、以下を行い、自動生成を抑止する。

# echo <<EOF >/etc/wsl.conf
[network]
generateHosts = false
generateResolvConf = false
EOF

(8) sshで他のマシンに接続できないと不便なのでFreeBSDの~/.ssh配下をWSLの~/.sshへコピーする。これで普通にssh/scp -4が使用可能となる。なお、今回はwsl側ではsshdを立ち上げていないためclient専用である。
(9) windowsをmouse moveでwindowがpop upせずにfocusできるようにregeditで修正する。具体的には、HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferencesMaskの先頭バイトのLSBをsetする。私の場合は0x9e->0x9fであった。なお、この修正はログインし直さないと効かない。
(10) ~/.vimrcに:syntax offを記述した。
(11) ~/.login, ~/.cshrc, ~/.envrcを作成。私は以下の感じ。

% cat .login
set ignoreeof
set history = 100
set savehist =(100 merge)
set edit
unset autologout
stty erase '^?' flush '^o' # ^?は^Vの後にbackspaceを押す
umask 22
unset noglob
unset noclobber
set path=($path ~/bin)
stty erase '^?'
if -f ~/.envrc source ~/.envrc
xterm -rv -geometry 80x40 &
ps ax | grep $tty | grep '\-tcsh' | grep -v grep \
  | awk '{print $1}' | xargs kill -9
% cat .envrc
setenv DISPLAY :0.0
% cat .cshrc
set prompt = '%M[%h]_% '

その6へ戻る その8へ続く