「Xen」の版間の差分
細 (1版 をインポートしました) |
(同期) |
||
(2人の利用者による、間の10版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:ハイパーバイザ]] |
− | [[Category: |
+ | [[Category:カーネル]] |
[[de:Xen]] |
[[de:Xen]] |
||
[[en:Xen]] |
[[en:Xen]] |
||
[[es:Xen]] |
[[es:Xen]] |
||
[[ru:Xen]] |
[[ru:Xen]] |
||
+ | [[zh-hans:Xen]] |
||
− | {{Related articles start (日本語)}} |
||
+ | {{Related articles start}} |
||
− | {{Related2|KVM (日本語)|KVM}} |
||
+ | {{Related|KVM}} |
||
− | {{Related2|QEMU (日本語)|QEMU}} |
||
+ | {{Related|QEMU}} |
||
− | {{Related2|VirtualBox (日本語)|VirtualBox}} |
||
+ | {{Related|VirtualBox}} |
||
− | {{Related2|VMware (日本語)|VMware}} |
||
+ | {{Related|VMware}} |
||
− | {{Related2|Moving an existing install into (or out of) a virtual machine|仮想マシンに (から) 既存の環境を移動}} |
||
+ | {{Related|既存環境を仮想マシンに (から) 移動}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
[http://wiki.xen.org/wiki/Xen_Overview Xen Overview] より: |
[http://wiki.xen.org/wiki/Xen_Overview Xen Overview] より: |
||
− | :''Xen はオープンソースの type-1 またはベアメタルハイパーバイザ |
+ | :''Xen はオープンソースの type-1 またはベアメタルハイパーバイザであり、単一のマシン (ホスト) でオペレーティングシステムのインスタンスや実際の様々なオペレーティングシステムを多数同時に実行することができます。Xen はオープンソースで提供されている唯一の type-1 ハイパーバイザです。Xen は多くの商用そしてオープンソースアプリケーションの基盤として使われています、例えば: サーバー仮想化, Infrastructure as a Service (IaaS), デスクトップ仮想化, セキュリティアプリケーション, 組み込み・ハードウェアアプライアンス。'' |
− | {{Warning|Xen ハイパーバイザ |
+ | {{Warning|Xen ハイパーバイザを実行しているときに [[VirtualBox]] など他の仮想化ソフトウェアを実行しないで下さい。システムがフリーズする可能性があります。こちらの[https://www.virtualbox.org/ticket/12146 バグレポート (wontfix)] を参照。}} |
== イントロダクション == |
== イントロダクション == |
||
− | Xen ハイパーバイザ |
+ | Xen ハイパーバイザは同時に複数のオペレーティングシステムを動作できるようにコンピュータアーキテクチャをエミュレートする薄いソフトウェアレイヤーです。ハイパーバイザはインストールされているコンピュータのブートローダーによって起動します。ハイパーバイザがロードされると、[http://wiki.xen.org/wiki/Dom0 dom0] ("domain 0" の略で、ホストまたは特権ドメインとも呼ばれます) が起動して Arch Linux が走ります。''dom0'' が起動したら、''dom0'' から一つまたは複数の [http://wiki.xen.org/wiki/DomU domU] (ユーザードメインの略で、VM またはゲストとも呼ばれます) を起動・制御することができます。Xen は準仮想化 (PV) とハードウェア仮想化 (HVM) 両方の ''domU'' をサポートしています。詳しくは [http://wiki.xen.org/wiki/Xen_Overview Xen.org] を見て下さい。 |
== システム要件 == |
== システム要件 == |
||
− | Xen ハイパーバイザ |
+ | Xen ハイパーバイザは最新の Linux カーネルに含まれている、カーネルレベルのサポートを必要としており、Arch のカーネルパッケージである {{Pkg|linux}} と {{Pkg|linux-lts}} にも組み込まれています。HVM の ''domU'' を動かすには、Intel VT-x または AMD-V (SVM) どちらかの仮想化サポートが搭載された物理ハードウェアが必要です。これを確認するために、Xen ハイパーバイザが動作していないときに次のコマンドを実行してください: |
$ grep -E "(vmx|svm)" --color=always /proc/cpuinfo |
$ grep -E "(vmx|svm)" --color=always /proc/cpuinfo |
||
− | 上のコマンドで何も出力がされない場合、ハードウェア仮想化のサポートが利用できません。あなたのハードウェアでは HVM ''domU'' を実行することは不可能です (または Xen ハイパーバイザ |
+ | 上のコマンドで何も出力がされない場合、ハードウェア仮想化のサポートが利用できません。あなたのハードウェアでは HVM ''domU'' を実行することは不可能です (または Xen ハイパーバイザが実行中です)。CPU がハードウェア仮想化の機能をサポートしているという自信がある場合はブートプロセスの間にホストシステムの BIOS 設定メニューにアクセスして、仮想化サポートに関連するオプションが無効になっていないか確認してください。そのようなオプションが存在していて無効になっていたときは、有効にして、システムを再起動してからもう一度上のコマンドを実行してください。Xen ハイパーバイザは PCI パススルーもサポートしており、デバイスが ''dom0'' をサポートしていないときでも PCI デバイスを直接 ''domU'' に引き渡すことができます。PCI パススルーを使用するには、CPU が IOMMU/VT-d をサポートしていなければなりません。 |
== dom0 の設定 == |
== dom0 の設定 == |
||
− | Xen ハイパーバイザ |
+ | Xen ハイパーバイザはベースのオペレーティングシステムのフルインストールを必要とします。Xen ハイパーバイザをインストールしようとする前に、ホストマシンに完全な最新の Arch Linux をインストールする必要があります。このインストールは base パッケージだけの最小インストールでもかまわなく、[[デスクトップ環境]]や [[Xorg]] は必要とされません。新しいホストをスクラッチから作成する場合は、[[インストールガイド]]を見て Arch Linux をインストールしてください。通常のインストールを Xen ハイパーバイザの上で動作する ''dom0'' に転換するには以下の設定手順が必要です: |
− | # Xen ハイパーバイザ |
+ | # Xen ハイパーバイザのインストール |
− | # Xen ハイパーバイザ |
+ | # Xen ハイパーバイザを起動するようにブートローダーを設定 |
# ネットワークブリッジの作成 |
# ネットワークブリッジの作成 |
||
# Xen の systemd サービスのインストール |
# Xen の systemd サービスのインストール |
||
− | === Xen ハイパーバイザ |
+ | === Xen ハイパーバイザのインストール === |
− | Xen ハイパーバイザ |
+ | Xen ハイパーバイザをインストールするには {{AUR|xen}} パッケージを[[インストール]]してください。どちらのパッケージにも Xen ハイパーバイザ、最新の xl インターフェイスと設定・サポートファイル、systemd サービスが含まれています。Xen をコンパイル・インストールするには [[multilib]] リポジトリを有効にして {{Grp|multilib-devel}} パッケージグループをインストールする必要があります。man ページやドキュメントが必要なときは {{AUR|xen-docs}} パッケージをインストールしてください。 |
+ | BIOS や UEFI を使って仮想マシンを起動するにはそれぞれ {{Pkg|seabios}} または {{Pkg|ovmf}} パッケージをインストールする必要があります。 |
||
− | ==== UEFI のサポート ==== |
||
− | 最近のコンピュータに搭載されている UEFI システムを通して Xen ハイパーバイザーを起動することもできますが、binutils をリコンパイルして x86_64-pep のエミュレーションのサポートを追加する必要があります。archway でやるなら [[Arch Build System (日本語)|Arch Build System]] を使って binutils の PKGBUILD ファイルのビルドオプションに {{ic|1=--enable-targets=x86_64-pep}} を加えます: |
||
− | --disable-werror '''--enable-targets=x86_64-pep''' |
||
− | |||
− | {{warning|1=最新バージョンの bintuils では動作しないので svn から古いバージョンにダウングレードしてコンパイル・インストールする必要があります: |
||
− | svn checkout --depth empty svn://svn.archlinux.org/packages |
||
− | cd packages |
||
− | svn update -r 215066 binutils |
||
− | svn の扱い方は https://nims11.wordpress.com/2013/02/17/downgrading-packages-in-arch-linux-the-worst-case-scenario/ に載っています。}} |
||
− | |||
− | システムの binutils がアップデートされると公式バージョンによって上書きされてしまいますが、同じ変更をして UEFI に対応するように Xen ハイパーバイザーを (再) コンパイルすれば大丈夫です。起動する度、または実行時に行う必要はありません。 |
||
− | |||
− | x86_64-pep 対応の binutils を使って Xen をコンパイルすると、UEFI カーネルがデフォルトでビルドされインストールされます。UEFI カーネルは {{ic|/usr/lib/efi/xen-?.?.?.efi}} に保存されます ("?" はバージョン番号)。"xen" で始まる他のファイルはただのシンボリックリンクであり無視してかまいません。ただし、efi バイナリを手動で {{ic|/boot}} にコピーする必要があります、例: |
||
− | |||
− | # cp /usr/lib/efi/xen-4.4.0.efi /boot |
||
=== ブートローダーの修正 === |
=== ブートローダーの修正 === |
||
78行目: | 65行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | ブートの順序やその他のパラメータを設定するには [[UEFI |
+ | ブートの順序やその他のパラメータを設定するには [[UEFI#efibootmgr|efibootmgr]] を使う必要があります。ブートが失敗する場合は、内蔵の [[UEFI#UEFI シェルの起動|UEFI シェル]]を使って手動で起動してみてください。例えば: |
Shell> fs0: |
Shell> fs0: |
||
FS0:\> xen-4.4.0.efi |
FS0:\> xen-4.4.0.efi |
||
==== GRUB ==== |
==== GRUB ==== |
||
− | [[ |
+ | [[GRUB]] ユーザーのために、Xen パッケージには {{ic|/etc/grub.d/09_xen}} 生成ファイルが入っています。{{ic|/etc/xen/grub.conf}} ファイルを編集して Xen の起動コマンドをカスタマイズすることが可能です。例えば、起動時に ''dom0'' に 512 MiB のメモリを割り当てるには、{{ic|/etc/xen/grub.conf}} を編集して次の行を: |
#XEN_HYPERVISOR_CMDLINE="xsave=1" |
#XEN_HYPERVISOR_CMDLINE="xsave=1" |
||
92行目: | 79行目: | ||
# grub-mkconfig -o /boot/grub/grub.cfg |
# grub-mkconfig -o /boot/grub/grub.cfg |
||
− | GRUB ブートローダーの使用方法に関しては [[ |
+ | GRUB ブートローダーの使用方法に関しては [[GRUB]] に詳細が載っています。 |
==== Syslinux ==== |
==== Syslinux ==== |
||
− | [[ |
+ | [[Syslinux]] を使っている場合、以下のような記述を {{ic|/boot/syslinux/syslinux.cfg}} に追加してください: |
LABEL xen |
LABEL xen |
||
MENU LABEL Xen |
MENU LABEL Xen |
||
101行目: | 88行目: | ||
APPEND ../xen-X.Y.Z.gz --- ../vmlinuz-linux console=tty0 root=/dev/sdaX ro --- ../initramfs-linux.img |
APPEND ../xen-X.Y.Z.gz --- ../vmlinuz-linux console=tty0 root=/dev/sdaX ro --- ../initramfs-linux.img |
||
− | {{ic|X.Y.Z}} は使用している xen のバージョンに、{{ic|/dev/sdaX}} は [[fstab |
+ | {{ic|X.Y.Z}} は使用している xen のバージョンに、{{ic|/dev/sdaX}} は [[fstab#ファイルシステムの識別|root パーティション]]に置き換えて下さい。 |
− | また、{{ic|syslinux.cfg}} と同じディレクトリに {{ic|mboot.c32}} が必要です。{{ic|/boot/syslinux}} に {{ic|mboot.c32}} がない場合はコピーしてください: |
+ | また、{{ic|syslinux.cfg}} と同じディレクトリに {{ic|mboot.c32}} (と {{ic|libcom32.c32}}) が必要です。{{ic|/boot/syslinux}} に {{ic|mboot.c32}} がない場合はコピーしてください: |
# cp /usr/lib/syslinux/bios/mboot.c32 /boot/syslinux |
# cp /usr/lib/syslinux/bios/mboot.c32 /boot/syslinux |
||
=== ネットワークブリッジの作成 === |
=== ネットワークブリッジの作成 === |
||
− | Xen は ''domU'' と ''dom0'' の間にネットワーク接続を必要とし、手動で設定しなくてはなりません。DHCP と静的アドレスの両方が使えるので、ネットワークの接続形態にあわせて選択してください。複雑なセットアップも可能で、詳細は Xen wiki の [http://wiki.xen.org/wiki/Xen_Networking Networking] 記事を見たり、様々なネットワーク設定のスクリプトがある {{ic|/etc/xen/scripts}} を見て下さい。初歩的なブリッジネットワークは [[ |
+ | Xen は ''domU'' と ''dom0'' の間にネットワーク接続を必要とし、手動で設定しなくてはなりません。DHCP と静的アドレスの両方が使えるので、ネットワークの接続形態にあわせて選択してください。複雑なセットアップも可能で、詳細は Xen wiki の [http://wiki.xen.org/wiki/Xen_Networking Networking] 記事を見たり、様々なネットワーク設定のスクリプトがある {{ic|/etc/xen/scripts}} を見て下さい。初歩的なブリッジネットワークは [[netctl]] に入っている {{ic|etc/netctl/examples}} のサンプル設定ファイルを修正することで設定できます。全ての ''domU'' が所属する ''dom0'' に仮想スイッチを作成します。デフォルトでは、Xen はブリッジの名前を {{ic|xenbr0}} と定めています。netctl でブリッジを設定するには、以下を実行してください: |
# cd /etc/netctl |
# cd /etc/netctl |
||
117行目: | 104行目: | ||
Interface=xenbr0 |
Interface=xenbr0 |
||
Connection=bridge |
Connection=bridge |
||
− | + | BindsToInterfaces=(eth0) # Use the name of the external interface found with the 'ip link' command |
|
IP=dhcp |
IP=dhcp |
||
133行目: | 120行目: | ||
=== Xen の systemd サービスのインストール === |
=== Xen の systemd サービスのインストール === |
||
− | Xen ''dom0'' は {{ic|xenstored}}, {{ic|xenconsoled}}, {{ic|xendomains}} [[systemd |
+ | Xen ''dom0'' は {{ic|xenstored}}, {{ic|xenconsoled}}, {{ic|xendomains}}, {{ic|xen-init-dom0}} [[systemd#ユニットを使う|サービス]]の起動と有効化を必要とします。 |
=== インストールが成功したか確認 === |
=== インストールが成功したか確認 === |
||
149行目: | 136行目: | ||
=== domU "ハードディスク"の作成 === |
=== domU "ハードディスク"の作成 === |
||
− | Xen は[[LVM |
+ | Xen は[[LVM|論理ボリューム]]、[[パーティショニング|パーティション]]、イメージファイルなどを含む様々なタイプの"ハードディスク"をサポートしています。最大で 10GiB まで膨らむ[[Wikipedia:Sparse file|スパースファイル]]を作成するには、次のコマンドを使います: |
$ truncate -s 10G domU.img |
$ truncate -s 10G domU.img |
||
− | ドメインの可搬性よりもファイル IO の速度が重要な場合は、[[LVM |
+ | ドメインの可搬性よりもファイル IO の速度が重要な場合は、[[LVM|論理ボリューム]]や[[パーティショニング|パーティション]]を利用すると良いでしょう。 |
+ | Xen はホストマシンから利用できるパーティションやディスクを別の形でドメインで表示する場合があります。例えば、ホストの LVM パーティションがドメインでは (複数のパーティションが含まれた) ハードドライブとして認識されたりします。パーティションにサブパーティションを作成するとホストマシンのパーティションにアクセスするのが難しくなるので注意してください。パーティションの中のパーティションを区画する方法は kpartx の man ページを参照。 |
||
− | Xen may present any partition / disk available to the host machine to a domain as either a partition or disk. This means that, for example, an LVM partition on the host can appear as a hard drive (and hold multiple partitions) to a domain. Note that making sub-partitons on a partition will make accessing those partitions on the host machine more difficult. See the kpartx man page for information on how to map out partitions within a partition. |
||
=== domU 設定の作成 === |
=== domU 設定の作成 === |
||
174行目: | 161行目: | ||
== ハードウェア仮想化 (HVM) Arch domU の設定 == |
== ハードウェア仮想化 (HVM) Arch domU の設定 == |
||
− | HVM ''domU'' を使用するには {{Pkg|mesa |
+ | HVM ''domU'' を使用するには {{Pkg|mesa}} と {{Pkg|bluez-libs}} パッケージをインストールしてください。 |
HVM Arch ''domU'' の必要最小限の設定ファイルは: |
HVM Arch ''domU'' の必要最小限の設定ファイルは: |
||
188行目: | 175行目: | ||
vncdisplay = 1 |
vncdisplay = 1 |
||
+ | HVM マシンにはコンソールは存在しないため、接続するには [[Vncserver|vncviewer]] を使います。上記の設定ファイルは ''domU'' vncserver の未認証のリモートアクセスを許可するため、セキュアでないネットワークで使うのには適していません。vncserver はポート {{ic|590X}} から使うことができます。X は ''dom0'' の {{ic|vncdisplay}} の値に置き換えて下さい。''domU'' は次のコマンドで作成できます: |
||
− | Since HVM machines do not have a console, they can only be connected to via a [[Vncserver|vncviewer]]. The configuration file allows for unauthenticated remote access of the ''domU'' vncserver and is not suitable for unsecured networks. The vncserver will be available on port {{ic|590X}}, where X is the value of {{ic|vncdisplay}}, of the ''dom0''. The ''domU'' can be created with: |
||
# xl create /path/to/config/file |
# xl create /path/to/config/file |
||
+ | 次のコマンドで状態を確認できます: |
||
− | and its status can be checked with |
||
# xl list |
# xl list |
||
+ | ''domU'' を作成したら、vncserver で接続して[[インストールガイド]]に従って Arch Linux をインストールしてください。 |
||
− | Once the ''domU'' is created, connect to it via the vncserver and install Arch Linux as described in the [[Installation guide]]. |
||
== 準仮想化 (PV) Arch domU の設定 == |
== 準仮想化 (PV) Arch domU の設定 == |
||
207行目: | 194行目: | ||
disk = [ "phy:/path/to/partition,sda1,w", "file:/path/to/ISO,sdb,r" ] |
disk = [ "phy:/path/to/partition,sda1,w", "file:/path/to/ISO,sdb,r" ] |
||
vif = [ 'mac=00:16:3e:XX:XX:XX,bridge=xenbr0' ] |
vif = [ 'mac=00:16:3e:XX:XX:XX,bridge=xenbr0' ] |
||
− | + | 使用方法にあわせてファイルを修正する必要があります。一番重要なのは、{{ic|1=archisolabel=ARCH_201301}} 行を編集して使用する ISO のリリース年/月を使うようにすることです。32ビットの Arch をインストールしたい場合、kernel と ramdisk のパスを {{ic|x86_64}} から {{ic|i686}} に変えてください。 |
|
+ | ''domU'' を作成する前に、インストール ISO をループマウントさせる必要があります。それには、{{ic|/mnt}} ディレクトリが存在して空であることを確認してから、以下のコマンドを実行してください (適当な ISO パスを入力してください): |
||
− | Before creating the ''domU'', the installation ISO must be loop-mounted. To do this, ensure the directory {{ic|/mnt}} exists and is empty, then run the following command (being sure to fill in the correct ISO path): |
||
# mount -o loop /path/to/iso /mnt |
# mount -o loop /path/to/iso /mnt |
||
+ | ISO をマウントしたら、次のコマンドで ''domU'' を作成することができます: |
||
− | Once the ISO is mounted, the ''domU'' can be created with: |
||
# xl create -c /path/to/config/file |
# xl create -c /path/to/config/file |
||
+ | "-c" オプションは作成が完了したら ''domU'' のコンソールを起動します。[[インストールガイド]]の指示に従って Arch Linux をインストールできますが、多少修正が必要です。cfg ファイルの disks 行に記載されたブロックデバイスは {{ic|/dev/xvd*}} のように表示されます。''domU'' をパーティショニングするときはそれらのデバイスを使って下さい。インストールが完了したら ''domU'' を再起動する前に [[mkinitcpio]] に {{ic|xen-blkfront}}, {{ic|xen-fbfront}}, {{ic|xen-netfront}}, {{ic|xen-kbdfront}} モジュールを追加する必要があります。モジュールが存在しないと、''domU'' は正しく起動しません。起動するのに、Grub のインストールは必要ありません。Xen には Python ベースの grub エミュレータが付いているため、起動するのに必要なのは {{ic|grub.cfg}} ファイルだけです ({{ic|/boot/grub}} ディレクトリを作成する必要はあります): |
||
− | The "-c" option will enter the ''domU'''s console when successfully created. Then you can install Arch Linux as described in the [[Installation guide]], but with the following deviations. The block devices listed in the disks line of the cfg file will show up as {{ic|/dev/xvd*}}. Use these devices when partitioning the ''domU''. After installation and before the ''domU'' is rebooted, the {{ic|xen-blkfront}}, {{ic|xen-fbfront}}, {{ic|xen-netfront}}, {{ic|xen-kbdfront}} modules must be added to [[Mkinitcpio]]. Without these modules, the ''domU'' will not boot correctly. For booting, it is not necessary to install Grub. Xen has a Python-based grub emulator, so all that is needed to boot is a {{ic|grub.cfg}} file: (It may be necessary to create the {{ic|/boot/grub}} directory) |
||
{{hc|/boot/grub/grub.cfg|<nowiki>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__' { |
{{hc|/boot/grub/grub.cfg|<nowiki>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 gzio |
||
232行目: | 219行目: | ||
initrd /boot/initramfs-linux.img |
initrd /boot/initramfs-linux.img |
||
}</nowiki>}} |
}</nowiki>}} |
||
+ | ファイルを編集して root パーティションの UUID に合わせる必要があります。''domU'' の中から、次のコマンドを実行: |
||
− | This file must be edited to match the UUID of the root partition. From within the ''domU'', run the following command: |
||
# blkid |
# blkid |
||
+ | {{ic|__UUID__}} の例を全て root パーティション ({{ic|/}} にマウントされるパーティション) の実際の UUID に置き換えて下さい: |
||
− | Replace all instances of {{ic|__UUID__}} with the real UUID of the root partition (the one that mounts as {{ic|/}}).: |
||
# sed -i 's/__UUID__/12345678-1234-1234-1234-123456789abcd/g' /boot/grub/grub.cfg |
# sed -i 's/__UUID__/12345678-1234-1234-1234-123456789abcd/g' /boot/grub/grub.cfg |
||
+ | {{ic|poweroff}} コマンドで ''domU'' をシャットダウンしてください。ドメインが完全にシャットダウンされるとコンソールはハイパーバイザに戻ります。それで xl のドメインリストにドメインが表示されなくなります。次に ISO ファイルをアンマウントします: |
||
− | Shutdown the ''domU'' with the {{ic|poweroff}} command. The console will be returned to the hypervisor when the domain is fully shut down, and the domain will no longer appear in the xl domains list. Now the ISO file may be unmounted: |
||
# umount /mnt |
# umount /mnt |
||
− | + | ''domU'' の cfg ファイルを編集してください。{{ic|1=kernel =}}, {{ic|1=ramdisk =}}, {{ic|1=extra =}} 行を削除して以下の行で置き換えます: |
|
bootloader = "pygrub" |
bootloader = "pygrub" |
||
+ | {{ic|1=disk =}} 行から ISO ディスクも削除してください。 |
||
− | Also remove the ISO disk from the {{ic|1=disk =}} line. |
||
+ | これで Arch ''domU'' がセットアップされました。先と同じコマンドで起動できます: |
||
− | The Arch ''domU'' is now set up. It may be started with the same line as before: |
||
# xl create -c /etc/xen/archdomu.cfg |
# xl create -c /etc/xen/archdomu.cfg |
||
249行目: | 236行目: | ||
=== "xl list" で libxl に関するエラーメッセージが表示される === |
=== "xl list" で libxl に関するエラーメッセージが表示される === |
||
+ | Xen システムに起動できていないか、あるいは {{ic|xencommons}} スクリプトに記載されている xen モジュールがインストールされていません。 |
||
− | Either you have not booted into the Xen system, or xen modules listed in {{ic|xencommons}} script are not installed. |
||
=== "xl create" が失敗する === |
=== "xl create" が失敗する === |
||
+ | ゲストのカーネルが正しいことを確認してください。{{ic|pv-xxx.cfg}} ファイルにスペルのミスがないか確認してください (例えば {{ic|ramdisk}} ではなく {{ic|initrd}} が使われている)。 |
||
− | Check the guest's kernel is located correctly, check the {{ic|pv-xxx.cfg}} file for spelling mistakes (like using {{ic|initrd}} instead of {{ic|ramdisk}}). |
||
=== Arch Linux ゲストが ctrl-d メッセージでフリーズする === |
=== Arch Linux ゲストが ctrl-d メッセージでフリーズする === |
||
+ | プロンプトに戻るまで {{ic|ctrl-d}} を押して、initramfs を再生成してください。 |
||
− | Press {{ic|ctrl-d}} until you get back to a prompt, rebuild its initramfs described |
||
=== エラーメッセージ "failed to execute '/usr/lib/udev/socket:/org/xen/xend/udev_event' 'socket:/org/xen/xend/udev_event': No such file or directory" === |
=== エラーメッセージ "failed to execute '/usr/lib/udev/socket:/org/xen/xend/udev_event' 'socket:/org/xen/xend/udev_event': No such file or directory" === |
||
− | + | {{ic|/etc/udev/rules.d/xend.rules}} が原因です。Xend はすでに廃止され使われていないため、このファイルは削除しても問題ありません。 |
|
==参照== |
==参照== |
2017年10月14日 (土) 13:20時点における版
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 パッケージをインストールする必要があります。
ブートローダーの修正
通常のカーネルを起動するのに使われているブートローダーを、特殊な Xen カーネル (xen.gz
または UEFI の場合 xen.efi
) をロードするように修正しなくてはなりません。このために新しいブートローダーエントリが必要になります。
UEFI
Xen の起動に UEFI を関わらせる方法は複数存在しますが、このセクションでは EFI スタブを使って Xen を起動する、最もシンプルな方法を説明します。
#UEFI サポート に記述されていることにしたがって UEFI サポートを有効にして Xen をコンパイルしている必要があります。
EFI パーティションにカーネルを配置することで UEFI からカーネルを起動することが可能ですが、Xen は少なくともどのカーネルを dom0 として起動するのか知っておかなければならないため、最低限の設定ファイルが必要になります。システム要件にあわせて /boot/xen.cfg
ファイルを作成・編集してください、例:
/boot/xen.cfg
[global] default=xen [xen] options=console=vga loglvl=all noreboot kernel=vmlinuz-linux root=/dev/sda2 rw ignore_loglevel #earlyprintk=xen ramdisk=initramfs-linux.img
ブートの順序やその他のパラメータを設定するには efibootmgr を使う必要があります。ブートが失敗する場合は、内蔵の UEFI シェルを使って手動で起動してみてください。例えば:
Shell> fs0: FS0:\> xen-4.4.0.efi
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 は準仮想化 (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
が使われている)。
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 はすでに廃止され使われていないため、このファイルは削除しても問題ありません。