らんだむな記憶

blogというものを体験してみようか!的なー

WSL2 on Windows 11

基本

コントロールパネル - プログラムと機能 - Windows の機能の有効化または無効化 から「LinuxWindows サブシステム」と「仮想マシンプラットフォーム」をチェック。

Qiita の記事によると

Windows ハイパーバイザー プラットフォーム
これは大変紛らわしい名前なのだが、Hyper-V アーキテクチャを利用するというだけなら、この機能を有効化する必要はない。

ということでよく見かけるバッチファイルを実行して「Hyper-V プラットフォーム」などを使えるようにする必要はないのかも?VirtualBox を使う気持ちがいまはないので放っておいても良さそうか?

興味があるツールが Ubuntu 20.04 までしかまだ対応してなさそうなので

wsl --install -d Ubuntu-20.04

で良いはず。Ubuntu と Ubunt-20.04 の違いは ストアにある3つの「Ubuntu」の違いは? ~WLSの「Ubuntu」をアップグレードする方法 によると latest かどうかということらしい。

Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ???????????? ??????????????????????? https://aka.ms/wsl2kernel ?????????

が出た。WslRegisterDistribution failed with error: 0x800701bc によると新しい kernel component をインストールする必要があるらしい。https://aka.ms/wsl2kernel というか 手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする に行く。「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をダウンロードしてインストール。これをインストールしてスタートメニューから「Ubuntu 20.04 on Windows」を起動したら先へ進めた。Ubuntu 20.04 も起動できた。

WSL コンソール上のコピペがつらいので Linux/WSLコンソールがショートカットキーによるコピペに対応 ~Windows 10 RS5 を参考にいじって、Ctrl+Shift+C/V でのコピペを有効化すると少し幸せになれそう。


参考: Installation of Hyper-V on windows 10 home

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
pause

DNS

[/etc/wsl.conf]

[network]
generateResolvConf = false

[/etc/resolv.conf]

nameserver 8.8.8.8

但し、これだけだと毎回 /etc/resolv.conf が削除されるので WSL2でresolv.confが消える問題の解決方法 のような対策が必要と思われる。

sudo chattr +i /etc/resolv.conf

【chattr】ファイルの属性を変更する によると、「削除不可能にする」という処理。

設定前は

$ lsattr /etc/resolv.conf
--------------e----- /etc/resolv.conf

だったものが

$ lsattr /etc/resolv.conf
----i---------e----- /etc/resolv.conf

のように変化する。

ssh-agent

[~/.bashrc]

 eval `ssh-agent` > /dev/null
 ssh-add /home/xxx/.ssh/id_rsa >& /dev/null

.sshWindows と共有

でいけそう。

[/etc/wsl.conf]

[automount]
options = "metadata"

がないと permission が制御できないかも。WSL での詳細設定の構成 も参考に。

ログイン時メッセージ

Ubuntu の WSL2 イメージで

...
This message is shown once a day. To disable it please create the
/home/xxx/.hushlogin file.

と出るので、そういうファイルを作ることで抑制できる。

touch ~/.hushlogin

破損の恐怖と戦う

.wslconfig を退避

が解決策になるかもしれないことを覚えておきたい。

仮想ディスクの肥大化