0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu+XenのVM構築手順

Last updated at Posted at 2024-10-05

はじめに

LPIC305の勉強をしていく中でXenをいじる機会があったのでVMの構築方法を備忘録がてら記載しておきます。

Xen+LivbirtでVMを構築している手順はQiitaで見かけますが、Libvirtを入れずにXenだけでVMを構築する手順が見当たらなかったので今回記事を作りました。

以下が今回の要件です。

  • Proxmoxを使用してホストとなるVMを立てます。
  • そのホストVMにXenをインストールします。
  • ホストVM(Dom01)は「Ubuntu Server 22.04.05 LTS」です。
  • ゲストVM(DomU1)も「Ubuntu Server 22.04.05 LTS」です。
  • GUIは入れるのが面倒なので入れません。コンソールで頑張ります。
  • XenのゲストタイプはHVMとします。

基本的には公式手順を参考にしていますが、ちょいちょいハマるポイントがあるので、このままやれば構築できるように書き直しています。

ホスト(Dom0)の構築

Ubuntu Server 22.04.05 LTSでホスト用のVMを作ります。

注意
Ubuntu server 24.04.01 LTSで本手順を進めるとsudo apt install xen-hypervisor-amd64を実施してrebootしたあとに正常にVMが起動しなくなります
そのためこの記事ではUbuntu Server 22.04.05 LTSで実施しています。
スクリーンショット 2024-10-05 21.26.18.png

Proxmoxを使ってのVM構築は他にいくらでも記事が転がっていると思うので詳細には触れません。

ただしcpuの設定ではhvmを有効化しておいてください。
(今回Proxmoxを入れているサーバがIntel N100なのでhv-evmcsになっています)

スクリーンショット 2024-10-05 15.07.38.png

今回はXenを載せるのでメモリは気持ち多めの8GB、ディスクは24GBとしています。2
(Xenのゲスト用のディスクはまたあとで払い出すので、ディスクもそこまで大きくなくてOKです)

ひとまず以下のような感じで作っています。

スクリーンショット 2024-10-05 13.13.15.png

なおProxmox 8.2.7だとhv-emvcsを有効にするとなぜかVMが正常に起動してこなくなるので
ここでProxmox自体にSSHログインをして、VMの設定ファイルを直接変更します。3

args: -cpu host,+vmxを一番上にでも追記しておいてください。
今回はProxmoxで私が作ったVMのIDが113なので113.confになっていますが、各々の環境でIDは変わるので気をつけてください。

/etc/pve/qemu-server/113.conf
args: -cpu host,+vmx
boot: order=scsi0;ide2;net0
cores: 1
cpu: x86-64-v2-AES,flags=+hv-evmcs
ide2: local:iso/ubuntu-22.04.5-live-server-amd64.iso,media=cdrom,size=2086842K
memory: 8096
meta: creation-qemu=9.0.2,ctime=1728100750
name: ubusv22
net0: virtio=BC:24:11:9B:D7:25,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
scsi0: local-lvm:vm-113-disk-0,iothread=1,size=24G
scsihw: virtio-scsi-single
smbios1: uuid=75f2d119-3a2d-4e48-ba3f-fdfa0ec64f32
sockets: 2
vmgenid: 533945e4-6ba8-4f86-87ed-0a4f2859f3c6

こうすればVMが起動するのでコンソール上で適当にインストールを進めてください。

スクリーンショット 2024-10-05 13.07.40.png

ほぼデフォルト設定でOKですが今回は他のホストからアクセスしやすいように固定IPにしました。
固定IPじゃなくてもなんとかなりますが、この記事では以下のように固定IPとして進めます。

各項目は各環境で異なると思うので参考として使ってください。

  • Subnet 192.168.3.0/24
  • Address 192.168.3.217
  • Gateway 192.168.3.1
  • Name Server 192.168.3.1
  • Search domains 設定なし

スクリーンショット 2024-10-05 20.00.07.png

今回の例ではtestというローカルアカウントを作り、サーバ名はubu22としています。
これ以降の画像でもホスト名がubu22であったらホストVMと判断してください。

スクリーンショット 2024-10-05 20.13.05.png

インストール完了したら再起動すると思うので、起動したら今作ったVMにSSHログインします。
(そのままコンソールでやってもいいですがコピペができないのでSSH推奨です)

ssh test@192.168.3.217

ログインできたらaptでインストールします。

sudo apt update
sudo apt upgrade
sudo apt install xen-hypervisor-amd64

スクリーンショット 2024-10-05 13.19.37.png

xen-hypervisor-amd64はいっぱいインストールすることになりますが気にせず入れます。

スクリーンショット 2024-10-05 13.20.51.png

インストールが終わったら再起動します。

sudo reboot

スクリーンショット 2024-10-05 13.23.38.png

立ち上がってきてxl listコマンドが正常に打てればひとまずXenのインストールは完了です。

sudo xl list

スクリーンショット 2024-10-05 13.26.11.png

Networkの設定

公式手順のDisable Network Managerについては、Ubuntu22でNetwork Managerを使っていないので飛ばします。

bridge-utilsは先ほどXenを入れた時に一緒に入ったので飛ばしてOKです。

スクリーンショット 2024-10-05 14.03.17.png

brctlは何もせずとも打てるはずです。

brctl show

スクリーンショット 2024-10-05 14.04.30.png

公式手順だと/etc/network/interfacesをいじっていますが、Ubuntu22はNetplanを使っているのでその設定ファイルを書き換えていきます。

まずは既存のファイルをバックアップしてから編集します。

sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
sudo vim /etc/netplan/00-installer-config.yaml

xenbr0を作ってens18の設定を移す形になります。STPは正直お好みです。
IF名は各々の環境で異なる可能性があるので気をつけてください。

/etc/netplan/00-installer-config.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens18:
      dhcp4: no
  bridges:
    xenbr0:
      interfaces: [ens18]
      addresses:
      - 192.168.3.217/24
      nameservers:
        addresses:
        - 192.168.3.1
      routes:
      - to: default
        via: 192.168.3.1
      parameters:
        stp: false

また50-cloud-init.yamlを読むと分かるのですが、このままだと再起動時に50-cloud-init.yamlが再生成されてしまうのでcloud-init側も編集しておきます。

sudo mv /etc/cloud/cloud.cfg.d/90-installer-network.cfg /etc/cloud/cloud.cfg.d/90-installer-network.cfg.bkup
sudo vi /etc/cloud/cloud.cfg.d/90-installer-network.cfg
/etc/cloud/cloud.cfg.d/90-installer-network.cfg
network: {config: disabled}

00-installer-config.yamlはファイルパーミッション的にまずいので制限します。
その後netplan applyしてちゃんと設定できているかを確認します。

sudo chmod 600 /etc/netplan/00-installer-config.yaml
sudo netplan apply
ip a

vSwitchのワーニングが出ていますが無視します。(エラーに書いている通りOpenVSwitch入れると多分消えると思いますが、このままでも普通に動いたのでそのままにしています)
またip aコマンドでxenbr0がちゃんと作られていることを確認します。

スクリーンショット 2024-10-05 14.16.08.png

brctl showコマンドでも問題ないことを確認しておきます。

brctl show

スクリーンショット 2024-10-05 17.29.55.png

仮想ディスクの設定

ここからはゲストOSをインストールする用のディスクを払い出します。

公式手順で言うとManually installing an HVM Guest VMのあたりです。

ひとまずUbuntu Server 22.04.5 のisoファイルをダウンロードしておきます。

wget https://releases.ubuntu.com/22.04/ubuntu-22.04.5-live-server-amd64.iso

スクリーンショット 2024-10-05 14.53.39.png

ダウンロードは時間がかかるのでwgetは放置してProxmox側の設定に移ります。

Hardware -> Add -> Hard Disk

スクリーンショット 2024-10-05 13.28.24.png

Ubuntu Serverのシステム要件的にはディスクは5GBあれば良いとのことなので、少しゆとりを持たせた8GBにしています。

スクリーンショット 2024-10-05 13.29.12.png

作成後に/dev/sdbが見えていればOKです。

ls /dev/sd*

スクリーンショット 2024-10-05 13.41.23.png

追加したディスクについてgdiskを使ってパーティションを切っていきます。画像を参考にして作成してください。

sudo gdisk /dev/sdb

スクリーンショット 2024-10-05 13.42.21.png

最終的にLinux LVMが8GBできていればOKです。

スクリーンショット 2024-10-05 13.45.54.png

ちゃんと/dev/sdb1ができていることを確認します。

ls /dev/sd*

スクリーンショット 2024-10-05 13.47.26.png

まずはPhysical Volumeを作ります。

sudo pvcreate /dev/sdb1
sudo pvs

ちゃんと/dev/sdb1で8GBできていることを確認します。

スクリーンショット 2024-10-05 13.49.20.png

次にLogical Volumeを作ります。

sudo lvcreate ubu_vol /dev/sdb1
sudo lvs

LV名はubu_volにしました。
ちゃんとubu_volができていることを確認します。

スクリーンショット 2024-10-05 13.53.23.png

最後にLogical Volumeを作ります。
LG名は公式手順に則りubuntu-hvmにしています。

sudo lvcreate -L 7.99G -n ubuntu-hvm /dev/ubu_vol
sudo lvs

写真を見るとわかる通り、サイズを8Gにすると容量が足りないと怒られるので7.99Gにしています。

スクリーンショット 2024-10-05 14.56.14.png

ゲスト(DomU)の構築

ここからゲスト用のコンフィグファイルを作ってインストールをしていきます。

sudo vi /etc/xen/ubuntu-hvm.cfg
/etc/xen/ubuntu-hvm.cfg
builder = "hvm"
name = "ubu-hvm"
memory = "2048"
vcpus = 1
vif = ['']
disk = ['/dev/ubu_vol/ubuntu-hvm,,hda,rw','/home/test/ubuntu-22.04.5-live-server-amd64.iso,,hdc,cdrom']
vnc = 1
boot = "dc"

ほぼ公式手順通りですが、以下が変更点です。

  • 名前は少し短くしてubu-hvmにしました。(何度も打つので長いと面倒)
  • メモリは気持ち多めにしました。
  • ディスクは公式手順に書いてある設定がdeprecatedになっているので少し変えていますが、ほぼ同じです(isoのパスが変わったくらい)。ディスク設定の詳細はマニュアル(man xl-disk-configuration)を読んでお好みで変えてください。
man xl-disk-configuration

コンフィグファイルの設定が終わったらxl createコマンドでゲストを作ります。

sudo xl create /etc/xen/ubuntu-hvm

スクリーンショット 2024-10-05 15.26.08.png

xl listコマンドでちゃんとDomUが作られていることを確認します。

sudo xl list

スクリーンショット 2024-10-05 15.27.11.png

コンソールに入りインストーラの起動を待ちます。

sudo xl console ubu-hvm

起動に2〜3分はかかるので気長に待つのをおすすめします。
正常に起動してくると以下のように文字が出てきます。

スクリーンショット 2024-10-05 15.30.53.png

もう少し待つとインストーラーが起動します。

スクリーンショット 2024-10-05 15.32.21.png

インストーラーが起動したらお好みで設定していってください。

スクリーンショット 2024-10-05 15.45.06.png

インストールが完了したらコンフィグファイルを書き換えたいので、インストーラーの「Reboot Now」ではなくxlコマンドを使ってシャットダウンをします4

コンソールから抜ける時はCtrl-](Ctrlキーを押しながら]キーを押す)です。
さらにCtrl-lとすると画面がリセットされると思います。

以下のコマンドでubu-hvmを落とします。

sudo xl shutdown ubu-hvm

正常に停止されるまで気長に待ちます。
ただし、あまりに落ちない時はxl destroyで強制的に落とします。ちなみにこの記事を書いている時は10分待っても落ちなかったのでxl destoryしました。5

sudo xl destroy ubu-hvm
sudo xl list

ubu-hvmがなくなったことを確認します。

スクリーンショット 2024-10-05 16.34.19.png

ubu-hvmが落ちたらコンフィグファイルを書き換えます。

sudo vi /etc/xen/ubuntu-hvm.cfg
/etc/xen/ubuntu-hvm.cfg
builder = "hvm"
name = "ubu-hvm"
memory = "2048"
vcpus = 1
vif = ['']
#disk = ['/dev/ubu_vol/ubuntu-hvm,,hda,rw','/home/test/ubuntu-22.04.5-live-server-amd64.iso,,hdc,cdrom']
disk = ['/dev/ubu_vol/ubuntu-hvm,,hda,rw']
vnc = 1
#boot="dc"
boot="d"

boot="dc"というのは先にCDROMを見て、それで起動できなければHDDを読みにいく設定なのでboot="d"として先にHDDを読むようにします。6
ここら辺のパラメータの詳細はマニュアル(man xl.cfg)に色々書いてあるのでお好みで設定してください。

man xl.cfg

設定ファイルを書き換えたら起動します。

sudo xl create /etc/xen/ubuntu-hvm.cfg -c

-cは起動と同時にコンソールに繋げるオプションです。
5分くらい経つと無事に起動してくると思います。

スクリーンショット 2024-10-05 16.13.50.png

ちゃんと起動してきてログインできればVM構築完了です!
コンソール上でも特に問題なく各種コマンドが打てますし、通信も問題なくできるかと思います。

スクリーンショット 2024-10-05 16.16.08.png

コンソールから抜ける時はCtrl-]です。

終わりに

正直おうちで仮想環境を作るならProxmoxで十分だと思いますが、LPIC305ではXenが対象なので、こんな感じでVMを立てたり壊したりで各自の勉強の役に立ててください。

  1. 「Domain 0」「Domain U」の意味がわからない人はXen Wikiを見てください。 2

  2. 今回入れるのはUbuntu Server 22.04.05ですが、Ubuntu Server 24.04.01のシステム要件はメモリ1GB、ディスク5GBのようです。

  3. だいぶ前のバージョンからのバグ?のようです。

  4. インストール中にコンフィグファイルを書き換えておき、インストーラーに従ってrebootでも良いとは思います。コマンドの説明したかったのでこの形にしています。

  5. 全体的にXen重いんですよね。パラメータチューニングなどが必要な気もするのですが勉強のために作っているだけなのでそこまで深入りはしません。

  6. 最初からboot="cd"にしておけば、はじめにディスクを見て、起動できなければCDROMを見るという動作になるのでそれが良いかと思います。もっと言うとデフォルト値がboot="cd"なのでbootの項目自体の記載が不要です。ただ、公式手順はなぜかboot="dc"なんですよね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?