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

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

古いエントリのサムネイル画像がリンク切れになってたりするけど、チマチマ修正中


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

お時間あったら、他のエントリもクリックして頂ければ幸いです。