Ubuntu Serverインストールから KVM/QEMU + Cockpit での仮想環境構築までの道のり

概要

Ubuntu Server 24.04.01 (minimum)へCockpitをインストールして仮想環境を構築したので、備忘録としてその時のメモ。

以前はWindows10を入れてHyper-vで仮想環境を立てていたのですが、データ用のHDDが壊れて使えなくなりました。
仕方がないのでリセットするのですが、Windows10はサポート終了するためLinux系OSに変更しようと思い、
普段使っているUbuntuを入れることにしました。

参考にしたサイト

参考にしたサイトは下記です。手順はほぼ同一ですが追加でコマンド実行した部分がありました。

上記サイトからリンクされている以下のサイトも参考にしました。

ホストPCについて

スペック

かなり古いPCですが、現役で使っています。

  • 筐体: Shuttle DS61 V1.1
  • CPU: Intel Core i5-3470S
  • メモリー: 32GB
  • ディスク: 256GB

OS

Ubuntuを普段使っているので今回も採用しました。

  • OS: Ubuntu Server 24.04.01

Ubuntu Server 24.04.01 をホストPCへインストール

Ubuntu 公式 からISOイメージをダウンロードし、
Rufusなどを使用して起動可能なUSBメモリーを作成し、ホストPCへインストールします。

インストールの途中で minimum を選択してインストールしました。
この記事の説明はこの状態から開始します。

ボリュームを拡張

先の紹介したサイトでも記載されていますが、論理ボリュームはインストーラーのデフォルトだと100GBになっていたので最大まで拡張しました。

1
2
3
4
5
6
7
8
9
# 確認
df -h
lsblk
# 拡張
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
# 確認
df -h
lsblk

手順

事前準備

システムを最新の状態に更新

1
sudo apt update && sudo apt upgrade -y

vimをインストール

minimum でインストールしたら入ってなかったので入れておきます。

1
sudo apt install -y vim

KVM/QEMU + Cockpit + cockpit-machines をインストール

KVM/QEMU のインストール

1
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

libvirt の起動と自動起動設定

1
sudo systemctl enable --now libvirtd

libvirtdが起動してない場合はstartします。(自分の環境では勝手に起動してました)

1
sudo systemctl start libvirtd

KVM の有効性を確認

1
sudo kvm-ok
acceleration can be used``` と表示されれば問題なし。
1
2
3
4
5
6

### kvmグループにユーザを追加

```bash
sudo usermod -aG kvm $USER
sudo usermod -aG libvirt $USER

Cockpit のインストールと自動起動設定

1
2
sudo apt install -y cockpit cockpit-machines
sudo systemctl enable --now cockpit

Cockpit の WebUI にアクセスして確認

ここまでで Cockpit が起動しているはずなので確認します。

ブラウザで以下の URL にアクセスしてログイン:
https://<UbuntuサーバーのIP>:9090

仮想ネットワークの設定

ネットワーク管理をNetworkManagerに変更します。
※netplanとどちらを使うのが良いのか理解できていませんが、うまく動いたほうを選択しました。

現状確認

環境によって変わると思いますが、Shuttle DS61 V1.1はNICが2個あるので、

1
2
3

```bash
nmcli device

以下のように表示されます。

1
2
3
4
5
DEVICE  TYPE      STATE      CONNECTION 
virbr0 bridge unmanaged --
enp3s0 ethernet unmanaged --
enp5s0 ethernet unmanaged --
lo loopback unmanaged --

ネットワーク管理をNetworkManagerに変更

変更するファイルは環境によって変わるのかもしれませんが、以下のファイルを変更しました。

1
sudo vi /etc/netplan/50-cloud-init.yaml
1
2
3
4
5
6
network:
# ethernets:
# enp3s0:
# dhcp4: true
renderer: NetworkManager
version: 2

ネットワークインターフェースをNetworkManager管理に変更する

NetworkManagerが /etc/network/interfaces で設定されたネットワークインターフェースを
管理する設定になっていることを確認します。
managed=trueならそのまま、falseになっている場合はtrueに変更します。

1
cat /etc/NetworkManager/NetworkManager.conf

以下のように表示されます。

1
2
3
4
5
6
7
8
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

私の環境ではfalseになっていたので変更しました。

1
sudo sed -i 's/managed=false/managed=true/' /etc/NetworkManager/NetworkManager.conf

再度確認します。

1
cat /etc/NetworkManager/NetworkManager.conf

変更されました

1
2
3
4
5
6
7
8
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=true

[device]
wifi.scan-rand-mac-address=no

設定変更を反映します

1
2
3
sudo netplan apply
sudo systemctl restart NetworkManager
sudo systemctl enable --now cockpit

設定が反映されたか確認します

1
nmcli device
1
2
3
4
5
6
7

```bash
DEVICE TYPE STATE CONNECTION
enp3s0 ethernet connected Wired connection 1
lo loopback connected (externally) lo
virbr0 bridge connected (externally) virbr0
enp5s0 ethernet unavailable --

うまく反映されない場合はOSを再起動すると反映されるかもしれません。
※私の環境の場合はOSを再起動しないと反映されませんでした、なぜなのかよくわかりません。

Cockpitから仮想ブリッジを設定する

※この作業は既存のネットワークからbridgeネットワークに切り替わるため、DHCP環境ではIPアドレスが変わりますのでご注意ください。

CockpitのWebUIへログインし、ネットワーキングメニュー画面のインターフェースからブリッジの追加ボタンを選択します。

今回使用するenp3s0を選択します。

そして追加をするとネットワークが切り替わりますので、IPアドレスを確認して再度Cockpitの画面を開きなおします。

変更後のIPアドレスを確認して再度Cockpitへログインするとbr0というインターフェースが追加されました。
仮想マシンは、このbr0を使用してネットワークへ接続することになります。

仮想マシンを作成しOSをインストール

仮想マシンを作成していきます。

OSのISOイメージをダウンロード

仮想マシン用のインストールに使用するISOイメージを適当な場所に保存します。
今回は Ubuntu 22.04.01 Server をインストールしてみます。

1
2
wget https://releases.ubuntu.com/24.04.1/ubuntu-24.04.1-live-server-amd64.iso
cp ubuntu-24.04.1-live-server-amd64.iso /tmp/

CockpitのWebUIから仮想マシンを作成

以下の手順で仮想マシンを作成します

  1. Cockpit にログイン (https://<UbuntuサーバーのIP>:9090)
  2. 仮想マシンメニューを開く
  3. 仮想マシンの作成ボタンをクリック
  4. 接続Systemを選択
  5. VMの名前、メモリ、CPU、ストレージを設定
  6. インストールメディアとして ubuntu-22.04-live-server-amd64.iso を選択
  7. 作成して編集するボタンをクリック

仮想マシンが作成されました

仮想マシンの名前部分をクリックすると各仮想マシンの画面に遷移しますので、
ネットワークインターフェースを確認し、br0になっていない場合は変更してください。

仮想マシンを起動すると、画面の右側のコンソールに画面が表示されるので、画面上でOSのインストールを進めます。

仮想マシンのスナップショットを作成

仮想マシンの画面の下のほうにあるスナップショットから、スナップショットの作成をクリックして作成できます。

おわりに

KVM/QEMU と Cockpit を使用して仮想マシンを作成できました。
netplanで設定すると仮想マシンがネットワークに接続できなかったり、
仮想マシンを作成するときにSystemではなくUser sessionを選択すると、
ネットワークにbr0を選択できなかったりなど、色々と模索しながらでしたが、
なんとか仮想環境を復旧することができました。

以前の環境は突然壊れてしまったので、今後は、定期的なスナップショットの作成やNAS等への外部バックアップやリストアなどにも取り組んでいきたいと考えています。