前回 は、Ubuntu 24.04 のインストールについて書きました。今回は、KVM を入れて、Ubuntu 24.04 の上に Ubuntu 24.04 を QEMU で起動していきたいと思います。
ややこしいですね。本当は、Ubuntu のインストールされたパソコンで、Ubuntu や、ParrotOS など、いろいろな Linux を動かしたいところですが、今は、デスクトップPC として、Windows しかないので、仕方なく、VirtualBox を使って、いろいろやっているということです。
簡単に図を書きました。最近は、オンラインで Microsoft の Office が無料で使えるんですね。慣れたソフトを使うと、図の作成時間(3分?)が少なくて済みますし、少し操作に違和感はありますが、全然、許容範囲内です。

しかし、実際にやってみると、この構成はエラーが出て、うまく動きませんでした。最終的には、以下のように、余ってた SSD に Ubuntu をインストールして、そこに KVM をインストールして、そこに仮想マシンとして Ubuntu をインストールすることが出来ました。

それでは、やっていきます。
はじめに
今回は、Ubuntu 24.04 に KVM を導入していきます。以下の Ubuntu公式の KVM のページを参考にやっていきます。
ここにも書かれていますが、KVM とは、仮想化を実現するカーネルモジュールです。ユーザランド側のアプリケーションとして、libvirt/libvirtd があり、そのユーザフロントエンドに virt-manager や、virsh があるというわけです。
日立さんの HP に分かりやすい図があったので、載せます。このリンク先では、KVM について丁寧に説明されてるので、とても参考になりました。

では、実際にやってみます。
KVMのインストール
Ubuntu の KVM のページ の Installation のページ に沿ってやっていきます。
仮想化の準備
まず、VirtualBox 上で起動した Ubuntu 24.04 が、ハードウェア仮想化をサポートした状態になっているかどうかを確認します。これらは、Intel や AMD の CPU がハードウェアとして仮想化をサポートしており、それを有効に出来ているか、ということです。
まず、BIOS で Virtualization Technology という項目を有効にする必要があります。詳しくは、以下のページを参考にしてください。ただし、Hyper-V は有効にしないでください。Hyper-V とは、簡単に言うと、VirtualBox のような仮想化ソフトウェアです。これを有効にすると、VirtualBox がうまく動かなくなったりします。
BIOS で仮想化の機能が有効に出来たかどうかを Windows で確認します。タスクマネージャを起動し、パフォーマンス → CPU に移動します。すると、うまくいっていれば、「仮想化」という項目が「有効」になっていると思います。
次に、VirtualBox 上の Ubuntu が仮想化を使えるようにします。対象の仮想マシン(今回の場合は、Ubuntu 24.04)の設定を開き、システム → プロセッサー を開きます。「ネステッドVT-x/AMD-Vを有効化」にチェックを入れます。これにより、Ubuntu 上でも仮想化の支援を受けられるようにできます。

環境によっては、「ネステッドVT-x/AMD-Vを有効化」がグレーアウトされていて、チェックが入れられないようになってる場合があります。その場合、コマンドプロンプトなどから有効にすることが出来ます。具体的な方法は、コマンドプロンプトを起動して、VirtualBox のディレクトリまで移動し、以下のコマンドを実行します。
>cd "c:\Program Files\Oracle\VirtualBox\ >VBoxManage.exe modifyvm 'Ubuntu24.04.2' --nested-hw-virt on
Ubuntu を起動して、仮想化が使える状態になったかを確認します。以下を実行して、1以上の値になれば、仮想化が使える状態になっています。0 が表示された場合は、仮想化が使える状態になっていません。
この場合に有効だった対処方法があります。Windows10 の場合、Windows の設定を開き、更新とセキュリティを開きます。Windowsセキュリティを開き、デバイスセキュリティを開きます。コア分離という項目のコア分離の詳細をクリックします。メモリ整合性という項目があるので、ここをオフにします。これにより、Ubuntu で仮想化が使えるようになった場合がありました。
$ egrep -c '(vmx|svm)' /proc/cpuinfo 8
次に、KVM拡張機能が使えることを確認します。以下のように表示されれば大丈夫です。
$ sudo apt install cpu-checker $ kvm-ok INFO: /dev/kvm exists KVM acceleration can be used
KVMのインストール
Installation のページ に書かれている通りにインストールします。
$ sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
グループにユーザを追加します。無事に追加できたようです。
$ sudo adduser `id -un` libvirt info: The user `ubuntu' is already a member of `libvirt'. $ sudo adduser `id -un` kvm info: Adding user `ubuntu' to group `kvm' ...
インストールの確認をします。以下のようになれば、正常にインストールできているとのことです。
$ virsh list --all
Id Name State
--------------------
ネットワーク設定
次は、Networking のページ になります。ここは、NAT ではなく、ブリッジを使う場合に必要になります。今回は、まずは、NAT で動かしてみて、うまくいけば、ブリッジにすることも検討したいと思います。
ブリッジを設定したときに、ここは追記するようにします。
ゲストOSのインストール
次は、Create Guests のページ になります。やってることは、VirtualBox で仮想マシンを作成することと同じです。いろいろ書いてますが、ここでは、1番簡単そうな virt-manager(GUI)を使ってやっていきます。
$ sudo apt install virt-manager
インストールが出来ると、Ubuntu の GUI のアプリケーションのメニューを見ます。仮想マシンマネージャというのが増えてると思います。これが virt-manager です。

起動してみます。Installation でインストールしてから、一度も再起動してない場合は、libvirtd のエラーが出るかもしれません。その場合は、再起動してから、再度、仮想マシンマネージャを起動してください。

では、仮想マシン(ゲストOS)を作っていきます。
ツールバーの左端のアイコンをクリックします。ここでは、前回 使った、Ubuntu 24.04.2 の ISOファイルを使います。次へをクリックします。

ISOファイルを参照できるところに置き、指定します。Ubuntu 24.04 と自動認識していることを確認して、次へをクリックします。

次に、仮想マシンに割り当てるメモリと CPUコア数を指定します。次へをクリックします。

次に、仮想マシンに割り当てるディスク容量を指定します。次へをクリックします。

次に、仮想マシンのホスト名を指定します。完了をクリックします。

すると、Ubuntu のインストール(ゲストOS のインストール)が始まります。

うーん、ゲストOS のマウスがおかしいです。キーボードの Tabキーと十字キー、スペースを使いながら進めていきます。インストールの途中で止まってしまいました。
もう 1度、ゲストOS のインストールをやってみます。次は、マウスは正しく動きました。順調にインストールは進み、最後の再起動までいきました。その最後の再起動で起動中に以下のような画面になり、ホストOS ごと終了することになりました。

残念ですが、うまくいきませんでした。やはり、OS を三段重ねすることは難しいのかもしれません。Ubuntu Server など、CUI ならうまくいった例を見かけたので、何らかの原因があって失敗したのだと思います。
Rufusを使って、UbuntuをUSBからブートする
ここからは趣向を変えて、USB で、Ubuntu を起動し、その Ubuntu に KVM を入れて、やってみたいと思います。以前、ノートパソコンの SSD が遅くなったので、新しい SSD を買ってきて、入れ替えました。その古い M.2 の NVMe の SSD が余っているので、それに Ubuntu を入れてみたいと思います。その SSD の入れ替えのときに、以下の USB接続の M.2 の SSDケースを購入しました。これを使って、Windows を使わずに、直接 Ubuntu を起動していきたいと思います。
Rufusを使って、Ubuntuインストーラを作る
Rufus は、以下からダウンロードできます。無料です。Ubuntu の ISOファイルを読み込ませて、USBメモリに起動可能な Ubuntuインストーラを作ることが出来ます。この USBメモリは、あくまでインストーラを入れておき、USBドライブとして起動するもので、上のインストール先の SSD とは別のものです。
執筆時点では、バージョンは 4.6 です。ファイルサイズは 1.5MB と、とても小さいプログラムです。

Rufus はインストールする必要はなく、rufus-4.6.exe をダブルクリックすれば、起動します。まず、デバイスで、書き込み先の USBメモリ(下図では Transcend 16GB)を指定します。次に、ブートの種類というところで、Ubuntu 24.04.2 の ISOファイルを指定します。あとは、特に変更しなくていいと思います。スタートをクリックします。

ISO イメージモードで書き込むにチェックが入っていることを確認して、OK をクリックします。

USBメモリが消去される、という警告が出ますので、OK をクリックします。約15分かかりました。
この先は、PC を再起動して、作成した USBメモリから起動します。これらは、以下の YouTube を参考にさせてもらいました。
この動画の手順で進めたたところ、無事に、SSD から Ubuntu を起動することが出来ました。早速、上でやったように、KVM をインストールして、仮想マシンを作り、そこに Ubuntu 24.04.2 をインストールしました。以下のように、無事に、KVM上の Ubuntu が起動しました。
ちなみに、以下は、ノートパソコンから、xrdp を使って、リモートデスクトップで接続してキャプチャしました。

おわりに
今回は、KVM を使って、仮想マシン(Ubuntu)を動かすことが出来ました。最初に考えた構成では、うまくいきませんでしたが、余ってた SSD を USBドライブにして、そこで Ubuntu を動かすことで、KVM を動かすことが出来ました。
最後になりましたが、エンジニアグループのランキングに参加中です。
気楽にポチッとよろしくお願いいたします🙇
今回は以上です!
最後までお読みいただき、ありがとうございました。