「Xen」の版間の差分
(→dom0 の設定: ベストプラクティス設定を翻訳して追加) |
(→UEFI: 情報を更新) |
||
49行目: | 49行目: | ||
==== UEFI ==== |
==== UEFI ==== |
||
− | Xen の起動に UEFI を関わらせる方法は複数存在しますが、このセクションでは EFI スタブを使って Xen を起動する、最もシンプルな方法を説明します。 |
||
− | [ |
+ | Xen は、[https://xenbits.xen.org/docs/unstable/misc/efi.html Xen EFI システム] で指定されている UEFI からのブートをサポートしています。[[UEFI#efibootmgr|efibootmgr]] を使用してブート順序やその他のパラメーターを設定する必要がある場合もあります。 |
+ | まず、{{ic|xen.efi}} ファイルがカーネルファイルおよび RAM ディスク ファイルとともに [[EFI システムパーティション]] に存在することを確認します。 |
||
− | EFI パーティションにカーネルを配置することで UEFI からカーネルを起動することが可能ですが、Xen は少なくともどのカーネルを dom0 として起動するのか知っておかなければならないため、最低限の設定ファイルが必要になります。システム要件にあわせて {{ic|/boot/xen.cfg}} ファイルを作成・編集してください、例: |
||
+ | 次に、Xen には、どのカーネルを [https://wiki.xen.org/wiki/Dom0 dom0] として起動するかを指定する ASCII (UTF-8、UTC-16 などは不可) 設定ファイルが必要です。このファイルは、バイナリと同じ [[EFI システムパーティション]] に配置する必要があります。Xen はいくつかの設定ファイルを検索し、最初に見つかった設定ファイルを使用します。検索順序は、バイナリ名の拡張子 {{ic|.efi}} が {{ic|.cfg}} に置き換えられることから始まり、一致するものが見つかるまで、末尾の名前コンポーネント {{ic|.}}、{{ic|-}} および {{ic|_}} が削除されます。通常、{{ic|xen.cfg}} という名前の単一ファイルが、次のようなシステム要件とともに使用されます。 |
||
− | {{hc|/boot/xen.cfg|<nowiki> |
||
+ | |||
+ | {{hc|xen.cfg|<nowiki> |
||
[global] |
[global] |
||
default=xen |
default=xen |
||
[xen] |
[xen] |
||
− | options=console=vga loglvl=all noreboot |
+ | options=console=vga iommu=force:true,qinval:true,debug:true loglvl=all noreboot=true reboot=no vga=ask ucode=scan |
− | kernel=vmlinuz-linux root=/dev/ |
+ | kernel=vmlinuz-linux root=/dev/sdaX rw add_efi_memmap #earlyprintk=xen |
ramdisk=initramfs-linux.img |
ramdisk=initramfs-linux.img |
||
</nowiki>}} |
</nowiki>}} |
||
+ | {{Tip|このファイルの追加パラメータについては、[https://xenbits.xen.org/docs/unstable/misc/efi.html Xen efi.cfg] を参照してください。オプション行については、シリアルコンソール、dom0 vCPU の制限など、使用可能なオプションの完全なリストについては、[https://xenbits.xen.org/docs/unstable/misc/xen-command-line.html Xen コマンドラインオプション] を参照してください。メモリ、スケジューリング、Intel および AMD のマイクロコードなど。たとえば、[https://wiki.xen.org/wiki/Xen_Project_Best_Practices Xen プロジェクトのベストプラクティス] では、dom0 のメモリ バルーニングを無効にすることが指示されています。これを行うには、{{ic|xen.cfg}} の {{ic|options}} 行を編集して追加のパラメータを指定します。}} |
||
− | ブートの順序やその他のパラメータを設定するには [[UEFI#efibootmgr|efibootmgr]] を使う必要があります。ブートが失敗する場合は、内蔵の [[UEFI#UEFI シェルの起動|UEFI シェル]]を使って手動で起動してみてください。例えば: |
||
+ | |||
+ | ===== systemd-boot ===== |
||
+ | |||
+ | {{Tip|Xen をインストールして設定した後でも、[https://wiki.xen.org/wiki/Dom0 dom0] カーネルを直接起動し続けることができます。これは、Xen インストールが起動できなくなったり、設定が間違ったりした場合に役立ちます。したがって、システム上でレスキューブートオプションとして設定されている元の systemd-boot ローダーエントリを保持し、Xen 用の追加エントリのみを追加することをお勧めします。}} |
||
+ | |||
+ | {{Note|システムの [[systemd-boot]] インストール時に、ESP パーティションは {{ic|/boot}} にマウントされているはずです。これは、{{AUR|Xen}} パッケージと EFI バイナリが構成されている場所であるためです。{{ic|/boot/efi}} 用に構築されたものではありません。}} |
||
+ | |||
+ | 新しい EFI タイプのローダーエントリを追加します。詳細については、[[systemd-boot#EFI シェルや他の EFI アプリ]] を参照してください。例えば: |
||
+ | |||
+ | {{hc|/boot/loader/entries/10-xen.conf|<nowiki> |
||
+ | title Xen Hypervisor |
||
+ | efi /xen.efi |
||
+ | </nowiki>}} |
||
+ | |||
+ | {{Note|現在の [[systemd-boot]] と Xen efi バイナリの組み合わせでは、ローダーエントリの {{ic|efi}} 行でパラメータを渡すことはできません。ただし、Xen のドキュメントには、{{ic|1=-cfg=file.cfg}} を UEFI シェルパラメータとして使用できると記載されています、しかしこれは efi line オプションには当てはまりません。現時点では、Xen EFI エントリは 1 つだけ持つことができるため、設定ファイルは 1 つだけに制限されます。}} |
||
+ | |||
+ | ===== EFISTUB ===== |
||
+ | |||
+ | [[EFISTUB]] を使用して、UEFI から直接 EFI カーネルをブートすることができます。 |
||
+ | |||
+ | ビルドインの [[Unified Extensible Firmware Interface#UEFI シェルの起動|UEFI シェル]] にドロップし、EFIファイルを直接呼び出します。例えば: |
||
+ | |||
Shell> fs0: |
Shell> fs0: |
||
− | FS0:\> xen |
+ | FS0:\> xen.efi |
+ | |||
+ | 上で概説したように、[[EFI システムパーティション]] 内の {{ic|xen.cfg}} 構成ファイルが依然として必要であることに注意してください。さらに、{{ic|1=-cfg=file.cfg}} パラメータを使用して別の構成ファイルを指定することもできます。例えば: |
||
+ | |||
+ | Shell> fs0: |
||
+ | FS0:\> xen.efi -cfg=xen-rescue.cfg |
||
+ | |||
+ | これらの追加設定ファイルは、Xen EFI バイナリファイルおよび Linux スタブファイルと同じディレクトリに存在する必要があります。 |
||
==== GRUB ==== |
==== GRUB ==== |
2024年1月11日 (木) 00:57時点における版
Xen Overview より:
- Xen はオープンソースの type-1 またはベアメタルハイパーバイザであり、単一のマシン (ホスト) でオペレーティングシステムのインスタンスや実際の様々なオペレーティングシステムを多数同時に実行することができます。Xen はオープンソースで提供されている唯一の type-1 ハイパーバイザです。Xen は多くの商用そしてオープンソースアプリケーションの基盤として使われています、例えば: サーバー仮想化, Infrastructure as a Service (IaaS), デスクトップ仮想化, セキュリティアプリケーション, 組み込み・ハードウェアアプライアンス。
目次
イントロダクション
Xen ハイパーバイザは同時に複数のオペレーティングシステムを動作できるようにコンピュータアーキテクチャをエミュレートする薄いソフトウェアレイヤーです。ハイパーバイザはインストールされているコンピュータのブートローダーによって起動します。ハイパーバイザがロードされると、dom0 ("domain 0" の略で、ホストまたは特権ドメインとも呼ばれます) が起動して Arch Linux が走ります。dom0 が起動したら、dom0 から一つまたは複数の domU (ユーザードメインの略で、VM またはゲストとも呼ばれます) を起動・制御することができます。Xen は準仮想化 (PV) とハードウェア仮想化 (HVM) 両方の domU をサポートしています。詳しくは Xen.org を見て下さい。
システム要件
Xen ハイパーバイザは最新の Linux カーネルに含まれている、カーネルレベルのサポートを必要としており、Arch のカーネルパッケージである linux と linux-lts にも組み込まれています。HVM の domU を動かすには、Intel VT-x または AMD-V (SVM) どちらかの仮想化サポートが搭載された物理ハードウェアが必要です。これを確認するために、Xen ハイパーバイザが動作していないときに次のコマンドを実行してください:
$ grep -E "(vmx|svm)" --color=always /proc/cpuinfo
上のコマンドで何も出力がされない場合、ハードウェア仮想化のサポートが利用できません。あなたのハードウェアでは HVM domU を実行することは不可能です (または Xen ハイパーバイザが実行中です)。CPU がハードウェア仮想化の機能をサポートしているという自信がある場合はブートプロセスの間にホストシステムの BIOS 設定メニューにアクセスして、仮想化サポートに関連するオプションが無効になっていないか確認してください。そのようなオプションが存在していて無効になっていたときは、有効にして、システムを再起動してからもう一度上のコマンドを実行してください。Xen ハイパーバイザは PCI パススルーもサポートしており、デバイスが dom0 をサポートしていないときでも PCI デバイスを直接 domU に引き渡すことができます。PCI パススルーを使用するには、CPU が IOMMU/VT-d をサポートしていなければなりません。
dom0 の設定
Xen ハイパーバイザはベースのオペレーティングシステムのフルインストールを必要とします。Xen ハイパーバイザをインストールしようとする前に、ホストマシンに完全な最新の Arch Linux をインストールする必要があります。このインストールは base パッケージだけの最小インストールでもかまわなく、デスクトップ環境や Xorg は必要とされません。新しいホストをスクラッチから作成する場合は、インストールガイドを見て Arch Linux をインストールしてください。通常のインストールを Xen ハイパーバイザの上で動作する dom0 に転換するには以下の設定手順が必要です:
- Xen ハイパーバイザのインストール
- Xen ハイパーバイザを起動するようにブートローダーを設定
- ネットワークブリッジの作成
- Xen の systemd サービスのインストール
Xen ハイパーバイザのインストール
Xen ハイパーバイザをインストールするには xenAUR パッケージをインストールしてください。どちらのパッケージにも Xen ハイパーバイザ、最新の xl インターフェイスと設定・サポートファイル、systemd サービスが含まれています。Xen をコンパイル・インストールするには multilib リポジトリを有効にして multilib-devel パッケージグループをインストールする必要があります。man ページやドキュメントが必要なときは xen-docsAUR パッケージをインストールしてください。
BIOS や UEFI を使って仮想マシンを起動するにはそれぞれ seabios または ovmf[リンク切れ: 置換パッケージ: edk2-ovmf] パッケージをインストールする必要があります。
ブートローダーの修正
通常のカーネルを起動するのに使われているブートローダーを、特殊な Xen カーネル (xen.gz
または UEFI の場合 xen.efi
) をロードするように修正しなくてはなりません。このために新しいブートローダーエントリが必要になります。
UEFI
Xen は、Xen EFI システム で指定されている UEFI からのブートをサポートしています。efibootmgr を使用してブート順序やその他のパラメーターを設定する必要がある場合もあります。
まず、xen.efi
ファイルがカーネルファイルおよび RAM ディスク ファイルとともに EFI システムパーティション に存在することを確認します。
次に、Xen には、どのカーネルを dom0 として起動するかを指定する ASCII (UTF-8、UTC-16 などは不可) 設定ファイルが必要です。このファイルは、バイナリと同じ EFI システムパーティション に配置する必要があります。Xen はいくつかの設定ファイルを検索し、最初に見つかった設定ファイルを使用します。検索順序は、バイナリ名の拡張子 .efi
が .cfg
に置き換えられることから始まり、一致するものが見つかるまで、末尾の名前コンポーネント .
、-
および _
が削除されます。通常、xen.cfg
という名前の単一ファイルが、次のようなシステム要件とともに使用されます。
xen.cfg
[global] default=xen [xen] options=console=vga iommu=force:true,qinval:true,debug:true loglvl=all noreboot=true reboot=no vga=ask ucode=scan kernel=vmlinuz-linux root=/dev/sdaX rw add_efi_memmap #earlyprintk=xen ramdisk=initramfs-linux.img
systemd-boot
新しい EFI タイプのローダーエントリを追加します。詳細については、systemd-boot#EFI シェルや他の EFI アプリ を参照してください。例えば:
/boot/loader/entries/10-xen.conf
title Xen Hypervisor efi /xen.efi
EFISTUB
EFISTUB を使用して、UEFI から直接 EFI カーネルをブートすることができます。
ビルドインの UEFI シェル にドロップし、EFIファイルを直接呼び出します。例えば:
Shell> fs0: FS0:\> xen.efi
上で概説したように、EFI システムパーティション 内の xen.cfg
構成ファイルが依然として必要であることに注意してください。さらに、-cfg=file.cfg
パラメータを使用して別の構成ファイルを指定することもできます。例えば:
Shell> fs0: FS0:\> xen.efi -cfg=xen-rescue.cfg
これらの追加設定ファイルは、Xen EFI バイナリファイルおよび Linux スタブファイルと同じディレクトリに存在する必要があります。
GRUB
GRUB ユーザーのために、Xen パッケージには /etc/grub.d/09_xen
生成ファイルが入っています。/etc/xen/grub.conf
ファイルを編集して Xen の起動コマンドをカスタマイズすることが可能です。例えば、起動時に dom0 に 512 MiB のメモリを割り当てるには、/etc/xen/grub.conf
を編集して次の行を:
#XEN_HYPERVISOR_CMDLINE="xsave=1"
以下のように置き換えます:
XEN_HYPERVISOR_CMDLINE="dom0_mem=512M xsave=1"
オプションをカスタマイズしたら、次のコマンドでブートローダーの設定を更新してください:
# grub-mkconfig -o /boot/grub/grub.cfg
GRUB ブートローダーの使用方法に関しては GRUB に詳細が載っています。
Syslinux
Syslinux を使っている場合、以下のような記述を /boot/syslinux/syslinux.cfg
に追加してください:
LABEL xen MENU LABEL Xen KERNEL mboot.c32 APPEND ../xen-X.Y.Z.gz --- ../vmlinuz-linux console=tty0 root=/dev/sdaX ro --- ../initramfs-linux.img
X.Y.Z
は使用している xen のバージョンに、/dev/sdaX
は root パーティションに置き換えて下さい。
また、syslinux.cfg
と同じディレクトリに mboot.c32
(と libcom32.c32
) が必要です。/boot/syslinux
に mboot.c32
がない場合はコピーしてください:
# cp /usr/lib/syslinux/bios/mboot.c32 /boot/syslinux
ネットワークブリッジの作成
Xen は domU と dom0 の間にネットワーク接続を必要とし、手動で設定しなくてはなりません。DHCP と静的アドレスの両方が使えるので、ネットワークの接続形態にあわせて選択してください。複雑なセットアップも可能で、詳細は Xen wiki の Networking 記事を見たり、様々なネットワーク設定のスクリプトがある /etc/xen/scripts
を見て下さい。初歩的なブリッジネットワークは netctl に入っている etc/netctl/examples
のサンプル設定ファイルを修正することで設定できます。全ての domU が所属する dom0 に仮想スイッチを作成します。デフォルトでは、Xen はブリッジの名前を xenbr0
と定めています。netctl でブリッジを設定するには、以下を実行してください:
# cd /etc/netctl # cp examples/bridge xenbridge-dhcp
/etc/netctl/xenbridge-dhcp
に以下の変更を施して下さい (既存のネットワーク接続の名前が eth0
の場合):
Description="Xen bridge connection" Interface=xenbr0 Connection=bridge BindsToInterfaces=(eth0) # Use the name of the external interface found with the 'ip link' command IP=dhcp
次のコマンドでネットワークブリッジを起動します:
# netctl start xenbridge-dhcp
プロンプトが戻ってきたら、全てが問題ないか確認してください:
# brctl show
bridge name bridge id STP enabled interfaces xenbr0 8000.001a9206c0c0 no eth0
ブリッジに問題がないようでしたら、次のコマンドでブート時に自動的に起動するように設定することができます:
# netctl enable xenbridge-dhcp
Xen の systemd サービスのインストール
Xen dom0 は xenstored
, xenconsoled
, xendomains
, xen-init-dom0
サービスの起動と有効化を必要とします。
インストールが成功したか確認
dom0 ホストを再起動して Xen カーネルが正しく起動するか確認して、再起動を行っても全ての設定が消えないことを確認してください。dom0 を正しく設定できていれば、root で xl list
を実行すると以下のように表示されます:
# xl list
Name ID Mem VCPUs State Time(s) Domain-0 0 511 2 r----- 41652.9
もちろん Mem, VCPUs, Time カラムの値はマシンの設定や稼働時間によって変わってきます。重要なのは dom0 が記載されていることです。
上記の必須の手順に加えて、Xen を動かすときのベストプラクティス にはメモリ使用量を一定に固定したり dom0 が使用する CPU コアを指定する方法などの情報が書かれています。また、xenfs ファイルシステムのマウントポイントを /etc/fstab
に記述して作成するのも有益です:
none /proc/xen xenfs defaults 0 0
ベストプラクティス設定
Xen を使用する前に、Xen プロジェクトのベストプラクティス を確認してください。
Xen を使う
Xen は準仮想化 (PV) とハードウェア仮想化 (HVM) 両方の domU をサポートしています。以下のセクションでは HVM と PV の domU を作成して Arch Linux を走らせる手順を説明します。一般的には、HVM domU を作成する手順は domU OS とは関係なく、HVM domU は Microsoft Windows を含む幅広いオペレーティングシステムをサポートしています。HVM domU を使用するには dom0 のハードウェアが仮想化をサポートしている必要があります。準仮想化の domU では仮想化のサポートは必須ではありませんが、代わりに、オペレーティングシステムによって異なるインストール方法で、ゲストオペレーティングシステムに修正を加えなくてはなりません (Xen の wiki にある Guest Install のページを見て下さい)。オペレーティングシステムによっては PV domU としてインストールすることは不可能になっています (例: Microsoft Windows)。基本的に、HVM domU はエミュレートされたハードウェア上で動作するため PV domU よりも動作が遅いのが普通です。PV と HVM の domU のセットアップには共通しているところもありますが、ほとんどの部分で差異があります。どちらにしても、domU ごとに、"ハードディスク"を作成して設定ファイルを書き込まなければなりません。さらに、インストールのために domU は dom0 に保存されたインストール ISO のコピーにアクセスする必要があります (Arch Linux の ISO の入手方法についてはダウンロードページを参照)。
domU "ハードディスク"の作成
Xen は論理ボリューム、パーティション、イメージファイルなどを含む様々なタイプの"ハードディスク"をサポートしています。最大で 10GiB まで膨らむスパースファイルを作成するには、次のコマンドを使います:
$ truncate -s 10G domU.img
ドメインの可搬性よりもファイル IO の速度が重要な場合は、論理ボリュームやパーティションを利用すると良いでしょう。
Xen はホストマシンから利用できるパーティションやディスクを別の形でドメインで表示する場合があります。例えば、ホストの LVM パーティションがドメインでは (複数のパーティションが含まれた) ハードドライブとして認識されたりします。パーティションにサブパーティションを作成するとホストマシンのパーティションにアクセスするのが難しくなるので注意してください。パーティションの中のパーティションを区画する方法は kpartx の man ページを参照。
domU 設定の作成
各 domU には設定ファイルが必要で、それを使って仮想マシンが作られます。設定ファイルに関する詳細は Xen Wiki や xl.cfg
の man ページを見て下さい。設定ファイルのいくつかの要素は HVM と PV の両方の domU で共通しています。共通している設定は:
name = "domU" memory = 256 disk = [ "file:/path/to/ISO,sdb,r", "phy:/path/to/partition,sda1,w" ] vif = [ 'mac=00:16:3e:XX:XX:XX,bridge=xenbr0' ]
name=
は xl ツールが domU を管理するのに使用する名前で、全ての domU と被らないような名前にする必要があります。disk=
にはインストールメディア (file:
) と domU のために作成したパーティション (phy:
) の情報を記入します。物理パーティションではなくイメージファイルを使用する場合は、phy:
を file:
に変える必要があります。vif=
はネットワークコントローラを定義します。00:16:3e
MAC ブロックが Xen ドメインのために予約されており、mac=
の最後の3桁はランダムに埋める必要があります (0-9 と a-f の16進数)。
domU の管理
domU をブート時に起動させるには、/etc/xen/auto
に設定ファイルのシンボリックリンクを作成して xendomains
サービスを正しく立ち上がるようにする必要があります。domU の管理で役立つコマンド:
# xl top # xl list # xl console domUname # xl shutdown domUname # xl destroy domUname
ハードウェア仮想化 (HVM) Arch domU の設定
HVM domU を使用するには mesa と bluez-libs パッケージをインストールしてください。
HVM Arch domU の必要最小限の設定ファイルは:
name = 'HVM_domU' builder = 'hvm' memory = 256 vcpus = 2 disk = [ 'phy:/dev/mapper/vg0-hvm_arch,xvda,w', 'file:/path/to/ISO,hdc:cdrom,r' ] vif = [ 'mac=00:16:3e:00:00:00,bridge=xenbr0' ] vnc = 1 vnclisten = '0.0.0.0' vncdisplay = 1
HVM マシンにはコンソールは存在しないため、接続するには vncviewer を使います。上記の設定ファイルは domU vncserver の未認証のリモートアクセスを許可するため、セキュアでないネットワークで使うのには適していません。vncserver はポート 590X
から使うことができます。X は dom0 の vncdisplay
の値に置き換えて下さい。domU は次のコマンドで作成できます:
# xl create /path/to/config/file
次のコマンドで状態を確認できます:
# xl list
domU を作成したら、vncserver で接続してインストールガイドに従って Arch Linux をインストールしてください。
準仮想化 (PV) Arch domU の設定
PV Arch domU の必要最小限の設定ファイルは:
name = "PV_domU" kernel = "/mnt/arch/boot/x86_64/vmlinuz" ramdisk = "/mnt/arch/boot/x86_64/archiso.img" extra = "archisobasedir=arch archisolabel=ARCH_201301" memory = 256 disk = [ "phy:/path/to/partition,sda1,w", "file:/path/to/ISO,sdb,r" ] vif = [ 'mac=00:16:3e:XX:XX:XX,bridge=xenbr0' ]
使用方法にあわせてファイルを修正する必要があります。一番重要なのは、archisolabel=ARCH_201301
行を編集して使用する ISO のリリース年/月を使うようにすることです。32ビットの Arch をインストールしたい場合、kernel と ramdisk のパスを x86_64
から i686
に変えてください。
domU を作成する前に、インストール ISO をループマウントさせる必要があります。それには、/mnt
ディレクトリが存在して空であることを確認してから、以下のコマンドを実行してください (適当な ISO パスを入力してください):
# mount -o loop /path/to/iso /mnt
ISO をマウントしたら、次のコマンドで domU を作成することができます:
# xl create -c /path/to/config/file
"-c" オプションは作成が完了したら domU のコンソールを起動します。インストールガイドの指示に従って Arch Linux をインストールできますが、多少修正が必要です。cfg ファイルの disks 行に記載されたブロックデバイスは /dev/xvd*
のように表示されます。domU をパーティショニングするときはそれらのデバイスを使って下さい。インストールが完了したら domU を再起動する前に mkinitcpio に xen-blkfront
, xen-fbfront
, xen-netfront
, xen-kbdfront
モジュールを追加する必要があります。モジュールが存在しないと、domU は正しく起動しません。起動するのに、Grub のインストールは必要ありません。Xen には Python ベースの grub エミュレータが付いているため、起動するのに必要なのは grub.cfg
ファイルだけです (/boot/grub
ディレクトリを作成する必要はあります):
/boot/grub/grub.cfg
menuentry 'Arch GNU/Linux, with Linux core repo kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-__UUID__' { insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 __UUID__ else search --no-floppy --fs-uuid --set=root __UUID__ fi echo 'Loading Linux core repo kernel ...' linux /boot/vmlinuz-linux root=UUID=__UUID__ ro echo 'Loading initial ramdisk ...' initrd /boot/initramfs-linux.img }
ファイルを編集して root パーティションの UUID に合わせる必要があります。domU の中から、次のコマンドを実行:
# blkid
__UUID__
の例を全て root パーティション (/
にマウントされるパーティション) の実際の UUID に置き換えて下さい:
# sed -i 's/__UUID__/12345678-1234-1234-1234-123456789abcd/g' /boot/grub/grub.cfg
poweroff
コマンドで domU をシャットダウンしてください。ドメインが完全にシャットダウンされるとコンソールはハイパーバイザに戻ります。それで xl のドメインリストにドメインが表示されなくなります。次に ISO ファイルをアンマウントします:
# umount /mnt
domU の cfg ファイルを編集してください。kernel =
, ramdisk =
, extra =
行を削除して以下の行で置き換えます:
bootloader = "pygrub"
disk =
行から ISO ディスクも削除してください。
これで Arch domU がセットアップされました。先と同じコマンドで起動できます:
# xl create -c /etc/xen/archdomu.cfg
トラブルシューティング
"xl list" で libxl に関するエラーメッセージが表示される
Xen システムに起動できていないか、あるいは xencommons
スクリプトに記載されている xen モジュールがインストールされていません。
"xl create" が失敗する
ゲストのカーネルが正しいことを確認してください。pv-xxx.cfg
ファイルにスペルのミスがないか確認してください (例えば ramdisk
ではなく initrd
が使われている)。
HVM の作成に失敗する
HVM の作成が次のエラーで失敗する場合:
libxl: error: libxl_dm.c:3131:device_model_spawn_outcome: Domain 33:domain 33 device model: spawn failed (rc=-3) libxl: error: libxl_dm.c:3351:device_model_postconfig_done: Domain 33:Post DM startup configs failed, rc=-3 libxl: error: libxl_create.c:1837:domcreate_devmodel_started: Domain 33:device model did not start: -3 libxl: error: libxl_aoutils.c:646:libxl__kill_xs_path: Device Model already exited
numactl をインストールしていません。
Arch Linux ゲストが ctrl-d メッセージでフリーズする
プロンプトに戻るまで ctrl-d
を押して、initramfs を再生成してください。
エラーメッセージ "failed to execute '/usr/lib/udev/socket:/org/xen/xend/udev_event' 'socket:/org/xen/xend/udev_event': No such file or directory"
/etc/udev/rules.d/xend.rules
が原因です。Xend はすでに廃止され使われていないため、このファイルは削除しても問題ありません。