Ubuntu Weekly Recipe

第844回Windows 11のHyper-VにUbuntu24.04 LTSをインストールする

今回は、Windows 11 Pro以上のエディションで使用できるHyper-Vにおいて、Ubuntu 24.04 LTSをゲストOSとして使用する方法を紹介します。第549回のアップデート版です。

仮想マシン悲喜交々

仮想マシンは、本連載では第832回のようにVirtualBoxの紹介が多いのですが、他にUbuntuではlibvirtとそのフロントエンドvirt-managerなど)が使われることが多いでしょう。

一方Windowsでは、やりたいことによってはVirtualBoxがそぐわない場合もあります。そしてHyper-VはPro以上のエディションで使用できるのですが、Homeでは使用できません。

Home/Pro両方で使用できるVMwareはどうなのかというと、今更述べるまでもなくなかなかにカオスな状況です。VMware Workstationは無償で使用できるようになりましたが、5年後もサポートが継続しているのでしょうか。

そう考えると、Hyper-Vをもう一度見直す機会ではないかと考えます。Homeでも、差額を払ってProにアップデートするという手も使えます。

ただし、マイクロソフトはどう考えているのかというのはまた違った話で、第549回で紹介したHyper-Vの「クイック作成」では、24.04 LTSはサポートされていません。自力でセットアップする必要があります。

というわけで、今回はその方法を紹介します。

Hyper-Vの有効化

Hyper-Vを有効にするには、⁠Windowsの機能の有効化または無効化」でHyper-Vにチェックを入れます図1⁠。コントロールパネルの「プログラムと機能」から起動するほか、検索すればスタートメニューからも起動できるようです。

図1 Windowsの機能の有効化または無効化

有効にできないこともありえますが、本記事はWindowsの使用方法を紹介するためのものではないため詳細を割愛します。

初期設定

Hyper-Vを有効にして再起動したら、⁠Hyper-Vマネージャー」を起動します図2⁠。

図2 Hyper-V マネージャ

ブリッジネットワークを作成するため、⁠仮想スイッチマネージャー」をクリックします図3⁠。

図3 仮想スイッチマネージャー

「どの種類の仮想スイッチを作成しますか」では「外部」を選択し、⁠仮想スイッチの作成」をクリックします。

「名前」を任意に決定し(今回はDefault Switch2⁠⁠、⁠外部ネットワーク」で使用するNICを選択します図4⁠。

図4 仮想スイッチのプロパティ

「適用」をクリックするとダイアログが表示されます図5⁠。問題なければ「はい」をクリックしてください。

図5 ネットワークが中断する旨のダイアログ

仮想マシンの作成

Ubuntu ServerとUbuntuの仮想マシンの作り方をそれぞれ説明します。

Ubuntu Server

Hyper-Vの機能をうまく使うと、Windowsの起動とともに仮想マシンも起動し、シャットダウンとともに仮想マシンもシャットダウンできるようになります。これを活かすのはサーバーというわけで、最初のUbuntu Serverのセットアップ方法を紹介します。

事前にUbuntu Server 24.04 LTSのisoイメージをダウンロードしておいてください。

Hyper-Vマネージャーの「新規」をクリックし、サブメニューの「仮想マシン」をクリックします。するとウィザードが起動します図6⁠。

図6 仮想マシンの新規作成ウィザードが起動する

「次へ」をクリックすると、仮想マシンの名前と場所を決定する項目になります図7⁠。

図7 名前と場所の決定

「次へ」をクリックすると、世代の指定になります。よほどの理由(とても古いUbuntuをインストールするなど)がない場合は「第2世代」にしてください図8⁠。

図8 世代の指定

「次へ」をクリックすると、メモリの割り当てになります図9⁠。サーバーなので4GBを割り当てていますが、必要に応じて増減してください。⁠この仮想マシンに動的メモリを使用する」はチェックを入れたままにするのをおすすめします。というのも、仮想マシンで起動時点に割り当てた量よりも使用量が少ない場合は、その分減らして使用します。いわゆるバルーニング機能です。

図9 メモリの割り当て

「次へ」をクリックすると、ネットワークの構成になります図10⁠。先ほど作成した仮想スイッチを割り当てます。サーバーであればブリッジネットワークでないと魅力が半減します。

図10 ネットワークの構成

「次へ」をクリックすると、⁠仮想ハードディスクの接続」になります図11⁠。通常はサイズだけを変更すればいいでしょう。

図11 仮想ハードディスクの接続

「次へ」をクリックすると、⁠インストールオプション」になります図12⁠。ここでISOイメージを選択しておくと便利です。

図12 インストールオプション

「次へ」をクリックすると、⁠仮想マシンの新規作成ウィザードの完了」になります図13⁠。今までに設定した内容で差し支えなければ「完了」をクリックしてウィザードを完了します。

図13 仮想マシンの新規作成ウィザードの完了

続けてHyper-Vマネージャーの作成した仮想マシンにある「設定」をクリックします。まずは「ファームウェア」を選択し、ブート順を変更します図14⁠。今回ネットワークブートは使用しないので、一番下に移動します。

図14 ブート順の変更

「セキュリティ」では、不要な場合は「セキュアブートを有効にする」のチェックを外します図15⁠。

図15 ここではセキュアブートは使用しないことにする

「管理」「統合サービス」では、⁠ゲストサービス」にチェックを入れます図16⁠。

図16 統合サービス

「自動開始アクション」では、⁠常にこの仮想マシンを自動的に起動する」に変更します図17⁠。

図17 自動開始アクション

「自動停止アクション」では、⁠ゲストオペレーティングシステムをシャットダウンする」に変更します図18⁠。まさにこの3つが今回の設定のキモです。

あとは仮想マシンを起動し、通常どおりインストールをしてください。インストール完了後、linux-cloud-tools-genericパッケージインストールし、再起動した後にゲストサービスが有効になります。これをもってWindowsの起動とともに仮想マシンも起動し、シャットダウンとともに仮想マシンもシャットダウンできるようになります。

Ubuntu

Ubuntuは、当然ですがおおむねUbuntu Serverと同じです。割り当てるメモリーと仮想ハードディスクの容量はサーバーよりも多くしたほうがいいとか、その程度の違いはあります。またWindowsのシャットダウン時にUbuntuもシャットダウンするのではなく、状態を保存したい場合は「自動停止アクション」「仮想マシンの状態を保存する」に変更するくらいでしょうか。

なお、Ubuntuでは拡張セッションを有効にし、RDP経由でアクセスできます。こちらのスクリプトを取得して実行すればいいのですが、筆者が試した限りでは正しく動作しなかったので次の差分を適用してください。

--- install.sh.orig	2024-12-14 23:16:59.000000000 +0900
+++ install.sh	2024-12-15 00:41:58.000000000 +0900
@@ -85,14 +85,17 @@
 fi
 
 # Configure the policy xrdp session
-mkdir -p /etc/polkit-1/localauthority/50-local.d/
-cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla <<EOF
-[Allow Colord all Users]
-Identity=unix-user:*
-Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
-ResultAny=no
-ResultInactive=no
-ResultActive=yes
+cat > /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf <<EOF
+polkit.addRule(function(action, subject) {
+    if (action.id == "org.freedesktop.color-manager.create-device" ||
+        action.id == "org.freedesktop.color-manager.create-profile" ||
+        action.id == "org.freedesktop.color-manager.delete-device" ||
+        action.id == "org.freedesktop.color-manager.delete-profile" ||
+        action.id == "org.freedesktop.color-manager.modify-device" ||
+        action.id == "org.freedesktop.color-manager.modify-profile") {
+        return polkit.Result.YES;
+    }
+});
 EOF
 
 # reconfigure the service

要するにPolicyKitの設定方法が古いので、更新しています。

変更したinstall.shを実行し、一旦仮想マシンをシャットダウンしたあとに管理者権限でPowerShellを起動し、次のコマンドを実行します図18⁠。

Set-VM -VMName "(仮想マシン名)" -EnhancedSessionTransportType HvSocket
図18 コマンドの実行例。エラーなく実行されている

Windows自体を再起動した後に拡張セッションが有効になり、リモートデスクトップ経由での接続ができるようになります。

おすすめ記事

記事・ニュース一覧