晴れた日曜日の午前中を丸々潰してしまった。
Windows Server 2022でPowerShellを起動するとwslコマンドが動くことに気づいた。
Ubuntuが使える。
PS C:\Users\Administrator> wsl -l -o
インストールできる有効なディストリビューションの一覧を次に示します。
既定の分布は ' * ' で表されます。
'wsl --install -d <Distro>'を使用してインストールします。
NAME FRIENDLY NAME
* Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
インストールしてみるとうまくいった。このタイミングでWSL(Windows Subsystem for Linux)のインストールもするのか。
PS C:\Users\Administrator> wsl --install -d Ubuntu
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
ダウンロード中: WSL カーネル
インストール中: WSL カーネル
WSL カーネル はインストールされました。
ダウンロード中: Ubuntu
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
再起動する。
なんかやってる。
しかし、エラー出てる。
検索してみる。
camedphone.com
・仮想化がBIOSの設定で有効になっているかを見てください
・古いCPUでは正常にインストールしてもWSL2を実行できない
仮想マシンだし古いCPUではないので、「仮想化が有効になってない」のほうだろう。
思い出してみる。多分コレ。
shigeo-t.hatenablog.com
shigeo-t.hatenablog.com
以前のエントリの例ではVirtualBoxだが、VMのWindows Server 2022ではHyper-Vが動けていないはず。チェックしてみる。確かにUnsupportedである。
ツールはこちら。
openlibsys.org
ということでシャットダウンしてvmxファイルを書き換える。
起動する。しかしエラーになる。
vhv.enable = "TRUE"を取り除くと起動する。
今度は仮想マシンの設定の変更でプロセッサを選び、Intel VT-x/EPTまたはAMD-V/RVIを仮想化にチェックを入れる。これでvmxファイルを見るとvhv.enable = "TRUE"が追加されている。
起動するとPlayerではネストされた仮想化はサポートしていませんになってしまう。
以前は過去エントリのように普通にネストできていたので、機能を絞ったのだろうかと思って検索してみた。これがヒット。
degitech91.com
そういえばホストOSのWindows 10ではWSL2が動くのでHyper-Vが動いている。
bcdedit /set hypervisorlaunchtype off
これでHyper-Vを止め、Intel VT-x/EPTまたはAMD-V/RVIを仮想化にチェックを入れ再起動。起動できた。
今度は全部OK。
Ubuntuを起動してみる。でも0x80370102。
どうなっているか見てみるとインストールされていないことになっている。
今度はUbuntu 20.04をインストールしてみる。
でもまた0x80370102である。一度WSLをアンインストールして最初からやり直す。再起動する。
PS C:\Users\Administrator> wsl --install -d Ubuntu-20.04
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
ダウンロード中: Ubuntu 20.04 LTS
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
でも結果は変わらず。
ということでブチ切れてWindows Server 2022を消し、クリーンインストールしてあれこれ設定してWSLを入れ直した。
PS C:\Users\Administrator> wsl -l -o
インストールできる有効なディストリビューションの一覧を次に示します。
既定の分布は ' * ' で表されます。
'wsl --install -d <Distro>'を使用してインストールします。
NAME FRIENDLY NAME
* Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
PS C:\Users\Administrator> wsl --install -d Ubuntu-20.04
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
ダウンロード中: Ubuntu 20.04 LTS
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
今度は成功した。
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: shigeo
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Welcome to Ubuntu 20.04 LTS (GNU/Linux 4.4.0-20348-Microsoft x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sun Jun 19 10:43:08 JST 2022
System load: 0.52 Processes: 7
Usage of /home: unknown Users logged in: 0
Memory usage: 12% IPv4 address for eth0: 192.168.157.129
Swap usage: 0%
0 updates can be installed immediately.
0 of these updates are security updates.
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
This message is shown once once a day. To disable it please create the
/home/shigeo/.hushlogin file.
shigeo@WIN-B66PFC0P6VO:~$
ということで、最初から仮想化が動く環境じゃないと成功しないっぽい。
で、調べてみるとWSL1である。
PS C:\Users\Administrator> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 1
そこでこのWSL2にする。
PS C:\Users\Administrator> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
展開イメージのサービスと管理ツール
バージョン: 10.0.20348.1
イメージのバージョン: 10.0.20348.587
機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
でもwsl --set-versionとか入れてもヘルプが流れる。Hyper-Vが入ってなかった。
shigeo-t.hatenablog.com
Hyper-Vをインストールする。でも状態は変わらない。statusを見てみるとWSL 2カーネルファイルが見つからないという。そこでupdateを掛けるが失敗。
PS C:\Users\Administrator> wsl --status
既定の配布: Ubuntu-20.04
既定のバージョン: 1
WSL の自動更新が有効になっています。
WSL 2 カーネル ファイルが見つかりません。カーネルを更新または復元するには、'wsl.exe --update' を実行してください。
PS C:\Users\Administrator> wsl --update
更新をチェック中...
利用できる更新はありません。
WSL 2 カーネル ファイルが見つかりません。手動での再インストールまたは修復が必要な可能性があります。
詳細については、https://aka.ms/wsl2kernel をご覧ください。
言われた通り、https://aka.ms/wsl2kernel を見る。
docs.microsoft.com
指示通り最新のパッケージをダウンロードする。起動するとこんな感じ。
どんどん進める。
一応最新になった。
PS C:\Users\Administrator> wsl --update
更新をチェック中...
利用できる更新はありません。
カーネル バージョン: 5.10.16
PS C:\Users\Administrator> wsl --status
既定の配布: Ubuntu-20.04
既定のバージョン: 1
Linux 用 Windows サブシステムの最終更新日: 2022/06/19
WSL の自動更新が有効になっています。
カーネル バージョン: 5.10.16
が、wsl --set-versionコマンドを入れるとヘルプが流れる。もうわかんないのでOS再起動。しかし変わらない。そこでUbuntu-20.04を削除。
PS C:\Users\Administrator> wsl --unregister Ubuntu-20.04
登録を解除しています...
PS C:\Users\Administrator> wsl -l -v
Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。
ディストリビューションは Microsoft Store にアクセスしてインストールすることができます:
https://aka.ms/wslstore
ここで気を静めてWindows Updateを掛けてみる。リブート入った。するとどうでしょう。
PS C:\Users\Administrator> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
この操作を正しく終了しました。
WSL2になったっぽい。確認する。
PS C:\Users\Administrator> wsl --status
既定のバージョン: 2
Linux 用 Windows サブシステムの最終更新日: 2022/06/19
Windows Subsystem for Linux カーネルは、' wsl--update ' を使用して手動で更新できますが、システム設定が原因で自動更新が発生することはありません。
カーネルの自動更新を受け取るには、 Windows Update の設定を有効にしてください:' Windowsの更新に、その他のMicrosoftの製品
の更新情報を受け取る'。
詳細については、 https://aka.ms/wsl2kernel.
を参照してください
カーネル バージョン: 5.10.16
時間掛かったがなんとか使えるところまで来た。消したUbuntu 20.04をもう一度入れる。入ってるって言われるけどWSL2で動いた。
PS C:\Users\Administrator> wsl --install -d Ubuntu-20.04
Ubuntu 20.04 LTS は既にインストールされています
Ubuntu 20.04 LTS を起動しています...
PS C:\Users\Administrator> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
あと余談だけど、前に作ったVMはメモリ8GBでなんかもっさりだなと思っていたんだけど、ブチ切れた勢いでメモリ16GBにしたらもっさりじゃなかった。Serverのくせに意外とあれこれ重くなっているのかもしれないWindows Server 2022。いや2019ももっさりだったかも。