[[Xen]] * FedoraXenQuickstart - Fedora Xen クィックスタート [#m316d109] はじめに、現時点で Xen が利用可能なのは Fedora Core 4 ですのでご注意ください。詳しい情報については http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html をご覧下さい。私たちは安定版ではない(近いうちに安定版 3.0 がリリースされます) Xen の構造について理解をすすめていきましょう。今のところ、時折正常な動作をしない事もありますが、一方で私たちの興味を惹き付ける存在である事に違いありません。また、Xen は現時点で NetBSD/xen および FreeBSD 5.0 ports からも Xen 2.0.x をベースとしたものが動作します。 はじめに、現時点で Xen が利用可能なのは Fedora Core 4 ですのでご注意ください。詳しい情報については [[http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html>http://www.interzq.com/bbs]] をご覧下さい。私たちは安定版ではない(近いうちに安定版 3.0 がリリースされます) Xen の構造について理解をすすめていきましょう。今のところ、時折正常な動作をしない事もありますが、一方で私たちの興味を惹き付ける存在である事に違いありません。また、Xen は現時点で NetBSD/xen および FreeBSD 5.0 ports からも Xen 2.0.x をベースとしたものが動作します。 Xen を動作させるためのセットアップ作業はごく簡単なものです。ここでは Fedora 開発システム上で Xen を単体のゲスト OS としてセットアップするための概要を述べます。 xen を実行するには、xen パッケージに加え、xen0 および xenU カーネル・パッケージも必用となります。加えて以下の条件が必要です。 - Python 言語 - Twisted フレームワーク - grub をブートローダーとして用いること((Xen システム上で Linux カーネルを読み込ませるためには grub を用いている事が必須条件です。)) - 標準のセットアップ時((実際にはメモリが少なくともなんとか動作はします。ただ、/boot/grub/grub.conf で dom0_memory で指定されている値を減らさなくてはいけなくなります。mkinitrd によって dom0 のために 130000 確保するよう固定されていますが、減らすこともできます(必要に応じて増やしても構いません)。一方で、Xen システムは最低でも 32 MB のメモリを必要とします。このメモリの中にゲスト OS の全ての情報が保存されることになります。))において、256 MB 程度のメモリ(RAM)容量 さて、まずは xen と kernel-xen パッケージ群をインストールしなくてはいけません。一度インストールしてしまえば xen0 カーネルを起動させるために grub.conf の記述を書き換えるだけです。それから xen0 カーネルでブートするようサーバを再起動します((rhgb を停止し、ランレベルは 3 に切り替える必用があります。未検証ですが、X Window の動作に支障があるという報告がありました))。 再起動後は grub で dom0 カーネル((動作確認は 'uname -r' コマンドを実行して、カーネル情報の中に xen0 が含まれているかどうかで調べられます))を動作させてください。それから、xen デーモンの起動とドメイン一覧を読み込ませます。 service xend start xm list ドメインが稼働しているかどうか確認したほうが良いです。さて、これからシンプルな Fedora システムの構築をしてみましょう。まずはじめに、kernel-xenU パッケージのインストールを行わなくてはいけません(あいにく、ゲスト・ドメインはゲスト OS の外にカーネル情報を置かなくてはいけないのです)。次に、Fedora をインストールするための基盤となるファイルを作成します。以下の例では 1 GB のファイルを作成しています。 dd if=/dev/zero of=/root/fedora.img bs=1M count=1 seek=1024 それから、このイメージ・ファイルに対して ext3 ファイルシステムを構築します。 mke2fs -F -j /root/fedora.img それから新しいファイルシステム階層を一時的に認識するために、いわゆる /mnt へ一時的にマウントさせます。 mount -o loop /root/fedora.img /mnt これで基本的な作業は終わりました。xen を正しく動作させるために、若干標準とは異なった基本的なファイル階層システムをセットアップすることになります(yum を使って chroot インストールを行うためです)。作業内容は以下の通りです。 a) initrd が使用していない /dev 配下で必用とされるデバイス・ノードを作成します for i in console null zero ; do MAKEDEV -d /mnt/dev -x $i ; done b) /etc/fstab を調整します。次のような単純な記述で動作します。 /dev/sda1 / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 その次はマウントされた /mnt の中に /proc を作成します。grupadd コマンドにはバグがあるためです(shadow-utils-4.0.7-7 では修正済みです) mkdir /mnt/proc mount -t proc none /mnt/proc さて、これで chroot された /mnt へどのような基本システムでもインストールすることができるようになりました。もしローカルなミラーサイトの利用を考えているのでしたら、[[こちらの yum.conf>http://people.redhat.com/~katzj/yum-xen.conf]] をダウンロードして、利用したいミラーサイトの情報に書き換えてください。それから、どのようなグループ群をインストールするか決めて下さい。私は Base( Base の替わりに Core を使うという方法もありますが、難しいですよ) から始めることを推奨します。次のように実行します。 yum -c http://people.redhat.com/~katzj/yum-xen.conf --installroot=/mnt -y groupinstall Base インストールには多少の時間がかかります。コーヒーを飲んだりお菓子を食べていてください :-) > ''注意:SELinux は必ず無効にしていてください。''SELinux は動作上の仕組みに於いて、たとえ chroot 環境であっても厳格にパスに対する制限(セキュリティ・コンテキスト)が適用さるため、インストールに支障を及ぼします。 再びコンソールに戻って来られたら作業は終わりです。/mnt に最小限のインストールを行いました((複数の RPM パッケージが壊れているように見える場合があります。スクリプトの記述によるものが失敗の原因ですが、chroot 環境の中で再度 yum を実行する必用があります))。 xen のゲスト OS を initrd を使わずに起動させるため、guest OS 上でも SELinux を無効にすべきです。/mnt/etc/selinux/config ファイルを編集して SELINUX の項目を permissive か disabled に変更してください。現在利用中のホストで SELinux を無効にしてあるのであれば、以下のようにする事もできます。 cp /etc/selinux/config /mnt/etc/selinux/config その他の設定を終えたらファイルシステムをアンマウントします。 umount /mnt/proc umount /mnt あとは設定ファイルの作成を終えたら、次の段階に進むことができます。自分のマシン上にある /etc/xen/rawhide を以下のように編集してください。とても単純なものです。 kernel ="/boot/vmlinuz-2.6.12-1.1369_FC4xenU" memory = 64 name = "rawhide" nics = 1 disk = ['file:/root/fedora.img,sda1,w'] root = "/dev/sda1 ro" > カーネルとして xenU パッケージでインストールした /boot/vmlinuz-2.6.12-1.1369_FC4xenU が代用されます。補足そておくと、デバイス名 sda1 と記述されているのは、先ほど上記 /etc/fstab で記述した際のものです。 実際にドメインを作成するにあたり、domain0 に対して xm balloon を使ってメモリの割り当てを行います。コマンド 'xm balloon 0 384' を実行することによって、domain0 のために RAM から 384 MB のメモリ容量が確保されます。実際の利用シーンを考えて、domain0 にはどの程度のメモリ要領が必要か・欲しいのか割り当ててください。十分検討に値するでしょう。 さて、これで 'xm create -c rawhide' コマンドを実行して新しいドメインを作成します。最後にドメイン・プロンプトが表示されるかどうか確認し、root でログインできるかどうかや自由にコマンドを使えるかなど楽しんでみてください。 > ''メモ missing shell (シェルが無い)エラーについて:'' /etc/passwd ファイルでシェルを /bin/bash (等、その他のシェルも)と指定しているのに関わらずエラーとなる場合があります。大概は SELinux によるものです。domain 0 に対して無効にしたのと同様に新しいドメインに於いても SELinux は無効にして下さい。 システムの起動時に自動的にドメインも稼働させたい場合には、xend と xendomains サービスを有効にして、xen 設定ファイルを /etc/xen/auto ディレクトリに置く必用があります。 以上が簡潔で粗々とした説明でしたが、使いこなす為にはまだまだ作業があります。次のステップはあなた自身がどのように Xen ゲスト環境で実際にインストールを行いゲスト・ファイルシステム上でカーネルを起動することが出来るかです。あなたはもう、そこまでたどり着いているのです(そう私は思います :) )。 ■ Troubleshooting - トラブルシューティング xen のシステムインストール作業にあたり、dom0 の動作状況を確認する手助けとなる2つのログファイルがあります。/var/log/xend.log は 'xm log' を実行する事で記録が開始され、基本的な動作についての情報が記録されます。あいにく、ログに記録されるメッセージの大部分が非常に短く簡単な情報しか記録されていません。以下の出力例は NetBSD/xen カーネルを実行させようとしたときの出力です。 [2005-06-27 02:23:02 xend] ERROR (SrvBase:163) op=create: Error creating domain:(0, 'Error') Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvBase.py", line 107, in _perform val = op_method(op, req) File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvDomainDir.py", line 71, in op_create raise XendError("Error creating domain: " + str(ex)) XendError: Error creating domain: (0, 'Error') もう1つのファイルは /var/log/xend-debug.log です。このファイルには詳細な情報が記録されます。NetBSD/xen カーネルを起動しようとすると、次のような出力結果になります。 ERROR: Will only load images built for Xen v3.0 ERROR: Actually saw: 'GUEST_OS=netbsd,GUEST_VER=2.0,XEN_VER=2.0,LOADER=generic,BSD_SYMTAB' ERROR: Error constructing guest OS セットアップ中にエラーがあれば、xend.log・xend-debug.log が表示する両方のログが問題解決の手助けになるでしょう。 ■ X in domain 0 若干のシステムでは domain 0 上に於いて X Window システムを起動しようとしても vm86 メモリ空間から domain 0 のためのメモリを確保することが出来ない場合があります。このような状況で X を動作させるには、vm86 を切り離してしまうこともできます。ですが、他の問題で X が落ちてしまう事もあります。 cd /usr/X11R6/lib/modules/linux/ mv libint10.a unused-libint10.a ---- :原文|http://fedoraproject.org/wiki/FedoraXenQuickstart