いろいろやってみるにっき

てきとーに生きている奴の日記

https化に伴い、表示できなくなっているリンクについて修復中。
2018年から遡って修正し、2015年分まで修正完了。


VMのWindows Server 2022にWSLを設定する(泥縄式)

晴れた日曜日の午前中を丸々潰してしまった。

 

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だが、VMWindows 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ももっさりだったかも。