2009年09月03日

ubuntu9.04にVMware tools

ubuntu9.04にはVMware ESXi 4のVMware toolsがうまい事入りません。
代わりに公式リポジトリからオープンソース版を導入します。
sudo apt-get install open-vm-source open-vm-toolbox open-vm-tools open-vm-tools-dbg

参考サイトはこちら。(ありがとうございます!)

VMware/LinuxにVMware Toolsをインストールする(Ubuntu 9.04編) - 俺の基地
http://yakinikunotare.boo.jp/orebase/index.php?VMware%2FLinux%A4%CBVMware%20Tools%A4%F2%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%A4%B9%A4%EB%A1%CAUbuntu%209.04%CA%D4%A1%CB
posted by 月水和尚 (とも) at 17:50 | Comment(0) | TrackBack(0) | Xen/仮想化全般

DomainUで時刻設定

Xenでは通常、DomainUの時刻はDomain0と同期されています。
…と言うと聞こえはいいんですが、裏を返すとDomainUでは独自に時刻設定が出来ません。
私はDomainUにシステム全体のNTPサーバをやらせたかったので、これは非常に都合が悪い。

この同期を解除するためには、DomainU側で以下のコマンドを実行します。
echo 1 > /proc/sys/xen/independent_wallclock

恒常的に解除するためには、/etc/sysctl.confに以下の1行を追加します。
xen.independent_wallclock = 1

以下のサイトを参考にさせていただきました。
(参考と言うか、そのまんまですね…すいません)

BitWalker Xen の時刻同期
http://bitwalker.dtiblog.com/blog-entry-16.html
posted by 月水和尚 (とも) at 17:38 | Comment(0) | TrackBack(0) | Xen/仮想化全般

2009年07月16日

CentOS / Xen Domain0 でシリアルコンソール

XenDom0として構築したCentOS 5.3でシリアルコンソールを使う方法。
時間がないので端折り気味で。

/boot/grup/menu.lst に太字部分を追加。
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 console serial

#splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.2.1.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-128.2.1.el5 com1=115200
module /vmlinuz-2.6.18-128.2.1.el5xen ro root=/dev/VolGroup00/LogVol00 console=tty0 console=ttyS0,115200n8
module /initrd-2.6.18-128.2.1.el5xen.img

あとは /etc/inittab にも以下の行を追加。
# Serial console
sc:12345:respawn:/sbin/agetty -L ttyS0 115200 vt100

最後に /etc/securetty に以下の1行を追加。
ttyS0

以下のサイトを参考にさせていただきました。
ありがとうございます!

Server « blog.shimazu.org
http://blog.shimazu.org/archives/category/server

ふかふかの部屋 - TSR - Xen 関連
http://www1.plala.or.jp/fukafuka/trouble/xen.html
posted by 月水和尚 (とも) at 15:20 | Comment(0) | TrackBack(0) | Xen/仮想化全般

2009年07月09日

DomUのディスクイメージをDom0から参照する方法

Gentooubuntuと違い、CentOSではDomUの構築にvirt-installを使用する必要があります。virt-installではDom0で確保したLVを独自形式でフォーマットしてしまうため、DomU停止時に該当LVをDom0からmountして中身を確認したり、LVMの利点を生かして割り当てディスク量を変更する(=LVのサイズを変更する)ことが出来ませんでした。

後者は諦めるとしても、せめて前者が出来れば…と思っていたのですが、通常のmountコマンドではなく、lomountというコマンドを使えば実現できることが分かりました。(CentOSではXenパッケージに含まれています)

DomU用に作成したLVを /dev/VolGroup00/domU01_root 、マウントポイントを /mnt とした場合、マウントするためのコマンドは以下のとおりです。
lomount -t ext3 -diskimage /dev/VolGroup00/domU01_root -partition 1 /mnt

これで設定ミスってDomUが上がらなくなってしまった場合などの対応がだいぶ楽になりました。

元ネタは以下のサイトです。
有用な情報をありがとうございました!

Stray Penguin - Linux Memo (Xen-4)
http://www.asahi-net.or.jp/~AA4T-NNGK/xen4.html
posted by 月水和尚 (とも) at 17:42 | Comment(0) | TrackBack(0) | Xen/仮想化全般

2009年07月07日

CentOS on CentOS

今までずっとXenの取り扱いはDom0Gentooを使っていたんですが、ここ最近全然カーネルがアップデートされない(どころか2.6.21はMASKされてしまった)状況にがっかりして、Dom0に使うディストリビューションの入れ替えを決意。

真っ先に考えたのはデスクトップでずっと使っているubuntuだったんですが、これまたXenサポートは非常に弱い感じ。9.04になってDom0サポートはなくなったっぽいし、DomUも公式カーネルだとネットワークに不具合があるし。(これは9.04で直ったのかな…チェックしてないな)

んで、どうせ使い道はサーバ用途。鉄板のCentOSで試してみるか…とやってみたら、これがものすごい簡単に構築できてびっくりしました。CentOSってDom0DomUもしっかりサポートされてるんですね。と言うわけで、構築手順のメモ。

まずはDom0側。普通にCentOSをインストールすればいいんですが、DomU用にディスクを残しておきたいので、パーティションの設定時に / が使うLVのサイズを小さくしておいてください。(デフォルトだと残りサイズ全部割り当ててしまう) アップデートなど行った後、Dom0に必要な xenkernel-xen をインストールします。
yum install xen kernel-xen

続いて起動時に xenblk が読み込まれるよう、以下のコマンドを入力します。(modprobe.confxenblkモジュールを読み込むためのエントリを追加しています)
echo alias scsi_hostadapter xenblk >> /etc/modprobe.conf

さらにXen対応のカーネルが使えるように、カーネルの設定ファイルである /etc/sysconfig/kernel を以下のとおり修正します。
DEFAULTKERNEL=kernel
 ↓ 修正
DEFAULTKERNEL=kernel-xen

これでDom0の準備は完了です。(簡単ですね!)
あとは再起動すればXenの環境で上がってくるのですが、単純な再起動だと今使ってるカーネルのまま立ち上がってしまいます。grubのメニューから起動するカーネルを選べる方は問題ありませんが、私のように実機にキーボードもディスプレイも付けてない人だと困ってしまうので、ここは思い切ってデフォルトで起動するカーネルをXenのカーネルに切り替えてしまいましょう。修正するのは /boot/grub/grub.conf の以下の1行です。
default=1
 ↓ 修正
default=0

再起動したら、uname -r で使っているカーネルを確認してみましょう。
# uname -r
2.6.18-128.1.16.el5xen

カーネル名の最後にxenが付いてれば成功です。

続いてDomU側。これは以前に書いたCentOS on Gentooを参考にしつつ行きます。

まずはファイルシステムの作成。分かりやすさを考えて、Dom0のLV=DomUのディスクとし、1つのディスクは1つのパーティションしか持たないような構成にしました。最低限必要な構成として、/6GB/boot128MBswap512MBという3つのパーティションを作成します。
lvcreate -L6G -ndomU01_root VolGroup00
lvcreate -L128M -ndomU01_boot VolGroup00
lvcreate -L512M -ndomU01_swap VolGroup00

この時、環境によっては、
/dev/hda: open failed: No medium found

というメッセージが出るかも知れません。その場合は /etc/lvm/lvm.conf を以下のとおり修正します。
filter = [ "a/.*/" ]
 ↓ コメントアウトする
# filter = [ "a/.*/" ]

# filter = [ "r|/dev/cdrom|" ]
 ↓ コメントを外す
filter = [ "r|/dev/cdrom|" ]

修正が完了したら以下のコマンドを実行します。
vgscan

これで該当メッセージが出なくなるはずです。

DomU用のLVが完成したら、いよいよインストールです。確保するメモリを256MBDomUの名前を domU_01 とすると、インストールコマンドは以下のとおりです。
virt-install -n domU_01 -r 256 -f /dev/VolGroup00/domU01_boot -f /dev/VolGroup00/domU01_swap -f /dev/VolGroup00/domU01_root -b xenbr0 -p --nographics -l http://ftp.iij.ad.jp/pub/linux/centos/5/os/i386/

普通にテキストインストールするのと同じインストーラが実行されるので、よしなにインストールしてください。grubとか普通にインストールしちゃって大丈夫です。(あくまでDomUのディスク上にインストールされるので) あ、パーティション構成だけは手動で行うようにしてください。でないとせっかく専用のディスク(=Dom0のLV)を定義したのに、まとめてLVMの領域にされちゃうので。("Create Custom Layout"を選択するとうまく行くと思います)

インストールが完了したらリブートします。OSの初回起動時に"Setup Agent"なるものが起動しますが、どれも実行せずにexitしてください。実行してしまうとツール自身を終了できずに後続処理が行えなくなってしまいます。(私の環境固有の問題かも知れませんが…)

−追記:2009/07/08−

Setup Agentがおかしくなるのは私が作業に使っていたターミナル(Poderosa 3.0)固有の問題みたいです。gnome-terminalから作業したら問題なく継続することが出来ました。

−追記ここまで−

これでお終い。

以下のサイトの情報を参考にさせていただきました。
(ありがとうございました!)

仮想マシン構築(Xen) - CentOSで自宅サーバー構築
http://centossrv.com/xen.shtml

「/dev/hdc: open failed: No medium found」が表示される:気ままな日記:So-net blog
http://gokun7.blog.so-net.ne.jp/2008-11-20
posted by 月水和尚 (とも) at 17:26 | Comment(0) | TrackBack(0) | Xen/仮想化全般

2008年11月20日

Xen Summit Tokyo 2008

Xen Summit Tokyo 2008に参加中です。
現地からリアルタイム中継してますんで、お暇な方は遊びに来てくださ〜い。

Xen Summit Tokyo 2008 勝手にメモ
http://wassr.jp/channel/xensummit2008
posted by 月水和尚 (とも) at 21:32 | Comment(0) | TrackBack(0) | Xen/仮想化全般

2008年08月15日

CentOS on Gentoo その2

"CentOS on Gentoo"の構築方法は何とか分かったものの、やはりディスクが特殊形式なのは何かと不便。Dom0側からmountして中身を確認することも、LVMの特性を生かしてディスクの拡張をすることも出来ません。せっかくのXen環境なのに、これはイマイチ嬉しくない。

というわけで、ムリヤリ何とかしてみました。

作業を始める前に、Dom0側でNFSが使えるようにしておいてください。
私の場合はGentooなので、
emerge -av nfs-utils

と、これでOK。(のはず…違いましたっけ?)

まずは前回の手順に従い、普通にCentOSをインストールします。(1から全てvirt-installに頼らずに入れる方法は残念ながら思いつきませんでした)

続いてDom0側で適当なサイズのLV(ルートファイルシステムになるLVなので用途にあったサイジングをしてください)を作成します。作成したらext3でフォーマットし、適当なディレクトリ(/mntとか)にマウントします。
lvcreate -L3G -ndomU_cent2_root rootvg
mkfs.ext3 /dev/rootvg/domU_cent2_root
mount /dev/rootvg/domU_cent2_root /mnt

マウントしたファイルシステムをNFSで公開します。
/etc/exports
/mnt 192.168.0.0/255.255.255.0(rw,no_root_squash,subtree_check)

と、こんな感じに記述を入れていただければOKです。
(もちろんIPは環境に合わせて適宜変更してくださいね)

そしたら設定を有効にすべくnfsを再起動します。
/etc/init.d/nfs restart

次にCentOSにログインし、先ほど定義したNFS領域をマウントしましょう。
mount -t nfs 192.168.0.2:/mnt /mnt

ここで指定するIPはDom0の(というかNFSを公開してるサーバの)IPです。

無事マウントできたら、CentOSの中のファイルを根こそぎコピーします。ただし/proc/sys/selinux配下はコピーできないので対象としません。また/dev配下は一部コピーに失敗しますが気にしないでください。
cd /
cp -ap bin boot dev etc home lib media misc net opt root sbin srv tmp usr var /mnt

けっこう時間がかかります。のんびり待ちましょう。
コピーが完了したらCentOSはシャットダウンしてしまってください。

NFS公開を終了します。
/etc/exportsに書き加えた記述を消し、nfsを再起動(または停止)してください。

先ほどコピーしたファイルシステムの中を整備します。
まずはコピーしなかったディレクトリを作成しておきます。
cd /mnt
mkdir proc sys selinux

ディスクの定義が変わったので、fstabも変更しておきます。

/mnt/etc/fstab
/dev/sda1 / ext3 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
ここではswapは定義してません。(あとで適宜追加してください)

あと、/selinux配下を消してしまったのでSELinuxが使えません。このままだと立ち上げてもログインすら出来ない状態になってしまうので、SELinuxをオフにします。

/mnt/etc/selinux/config
SELINUX=enforcing
 ↓ 変更
SELINUX=disabled

カーネルとRAMDISKはDom0側に取り出しておきます。
cp /mnt/boot/vmlinuz-2.6.18-92.1.6.el5xen /boot/cent-vmlinuz-2.6.18-92.1.6.el5xen
cp /mnt/boot/initrd-2.6.18-92.1.6.el5xen.img /boot/cent-initrd-2.6.18-92.1.6.el5xen.img

ファイル名は環境に合わせて適宜変更してください。(その時導入されてるカーネルのバージョンでファイル名が変わってしまうので)

これで準備は完了です。ファイルシステムをumountします。
cd /
umount /mnt

最後にXenの設定ファイルを書きます。
kernel = "/boot/cent-vmlinuz-2.6.18-92.1.6.el5xen"
ramdisk = "/boot/cent-initrd-2.6.18-92.1.6.el5xen.img"
memory = 256
name = "cent2"
vif = ['mac=00:16:3e:00:00:02, bridge=xenbr0']
disk = ['phy:rootvg/domU_cent2_root,sda1,w']
root = "/dev/sda1 ro"

ファイル名は/etc/xen/cent5_2としましょう。(何でもいいんですが)

全ての準備が整いました。CentOSを起動しましょう。
xm create -c cent5_2

"CentOS on gentoo"環境(ばーじょん2)のできあがり♪
これでCentOSもだいぶ扱いやすくなりました。

以下のサイトの情報を参考にさせていただきました。
(ありがとうございました!)

NFS-mount
http://www.furyu.atnifty.com/cgi-bin/readtext.cgi?title=NFS-mount&fname=./memo/Linux/PC-HowTo/nfs_mount.txt

STBBS.NET blog: RedHat, CentOSで SELinuxをオフにする
http://www.stbbs.net/blog/2007/10/redhat-centos-selinux.html
posted by 月水和尚 (とも) at 18:34 | Comment(0) | TrackBack(0) | Xen/仮想化全般

2008年07月15日

CentOS on Gentoo

前回のubuntu on Gentooに引き続き、

・Domain0はGentoo
・DomainUにCentOS


という組み合わせも実現できました!
前回と同様、GentooでのXen環境は完成しているという前提で話を進めます。
(下準備については前回記事を参照してください)

まずはCentOSで使うファイルシステムを作成します。
Gentooやubuntuの時と違い、どうも/bootないと駄目っぽいので、/ に6GB、/boot に128MB、swap に512MBという構成にしました。
lvcreate -L6G -ndomU_cent_root rootvg
lvcreate -L128M -ndomU_cent_boot rootvg
lvcreate -L512M -ndomU_cent_swap rootvg

ファイルシステムはOSの導入時にフォーマットされるため、ここではLVを作るだけでOKです。

続いてvirtinstをインストールします。

…が、依存関係で一緒に導入されるlibvirtが、最新版(0.4.4 - 2008/07/16時点)だとうまく動きません。0.4.2だとうまく動くので、パッケージのmaskをしておきます。
echo ">app-emulation/libvirt-0.4.2" >> /etc/portage/package.mask

また、virtinstは普通にemergeしようとするとエラーになってしまうので、FEATURESを指定して以下のように実行します。(ついでにUSEフラグにlvmxenもセットしていますが必須かどうかイマイチ不明…)
FEATURES="-sandbox" USE="lvm xen" emerge -av virtinst

そしたらインストール…と行きたいところなのですが、Xenの設定がデフォルトのままだとインストールコマンドであるvirt-installが正常に動作しません。Xenの設定ファイルである/etc/xen/xend-config.sxpの以下のエントリを変更します。
#(xend-unix-server no)
  ↓ 変更
(xend-unix-server yes)

変更を反映するためにサーバを再起動します。

virt-installでCentOSのインストールを開始します。
virt-install -n cent5 -r 256 -f /dev/rootvg/domU_cent_boot -f /dev/rootvg/domU_cent_swap -f /dev/rootvg/domU_cent_root -b xenbr0 -p --nographics -l http://ftp.iij.ad.jp/pub/linux/centos/5/os/i386/

debootstrap(ubuntu)の時とは違い、実マシンに普通にインストールするときと同じインストーラが実行されます。なのでXenであることを特に意識せずにインストールを進めればOKです。デフォルトだとCentOSはファイルシステムにLVMを使おうとしますが、せっかくファイルシステムを3つ用意したのでLVMは使わない構成に変更します。(LVM on LVMというのも何だか効率が悪そうなので) LVM on LVMが気にならないのであれば、用意するファイルシステムを1つだけにしてディスクの構成はインストーラ任せにしてしまうのもありだと思います。

インストール時にgrubを導入するのを忘れないようにしてください。DomUなのにgrub?という気がするのですが、Gentooやubuntuのように(というよりもvirt-installの仕様だと思いますが)カーネルをDom0側に持ってきてXenからブート!という芸当が出来ません。(いや、出来ないんじゃなくて『しなくていい』と言うべきなのでしょうか) pygrubという専用のブートローダを使うためにもgrubをインストールしておく必要があります。(/bootが必要なのもこの辺の事情だと思われます)

インストールが完了したらリブートします。OSの初回起動時に"Setup Agent"なるものが起動しますが、どれも実行せずにexitしてください。実行してしまうとツール自身を終了できずに後続処理が行えなくなってしまいます。

無事にCentOSのログイン画面が出たら、rootでログインしてshutdownします。ただ、どういうわけだかshutdownしてもDomUが残ってしまうため、shutdown完了後にDom0側から強制的に削除します。
xm delete cent5

Xenの設定ファイルを記述します。
memory = 256
name = "cent5"
vif = ['mac=00:16:3e:00:00:02, bridge=xenbr0']
disk = ['phy:rootvg/domU_cent_boot,xvda,w', 'phy:rootvg/domU_cent_swap,xvdb,w', 'phy:rootvg/domU_cent_root,xvdc,w']
nographic = 1
bootloader = "/usr/bin/pygrub"

ファイル名は/etc/xen/cent5としましょう。(何でもいいんですが)

全ての準備が整いました。CentOSを起動しましょう。
xm create -c cent5

"CentOS on gentoo"環境のできあがり♪

ちなみにvirt-installを使うと、ファイルシステムは独自のフォーマットになるみたいです。なので普通にDom0からファイルシステムをマウントして使ったり出来ません。あ、もちろんDomUから見ればext3なり何なりの普通のファイルシステムですが。仮想ディスク(この場合論理ボリューム)に対してvirt-installがパーティションの定義をしてしまうため、せっかくのLVMの良さ(ボリュームの拡張が出来る)が生かし切れないのが残念なところ。LVM on LVMにすれば実現できなくもないのですが、あまり美しくないですよね。このあたりはもう少し良い方法を追求してみたいところです。

以下のサイトの情報を参考にさせていただきました。
(ありがとうございました!)

Xen特集 準仮想化ドメインの設定 VA Linux Systems Japan
http://www.valinux.co.jp/contents/tech/techlib/xen/xen_sp_0703.html

Gentoo Forums :: View topic - [Solved] xen - amd64 - virtinst emerge (sandbox error)
http://forums.gentoo.org/viewtopic-p-5105322.html?sid=f91b27d9d6dd4e9548759d6de7985959

[Xen-users] Virt-install not working - ama...@ncsu.edu - com.xensource.lists.xen-users - MarkMail
http://markmail.org/message/pwn3bfvhq4tmnbbw#query:virtinst%2Fcli.py%20getconnection+page:1+mid:hioyhr5u5q7bxf2s+state:results

libvirt - Wikipedia
http://ja.wikipedia.org/wiki/Libvirt
posted by 月水和尚 (とも) at 16:58 | Comment(0) | TrackBack(0) | Xen/仮想化全般

2008年06月25日

ubuntu on Gentoo

Xen環境にて、

・Domain0はGentoo
・DomainUにubuntu


という組み合わせがやっと実現できました!
苦労話はチラシの裏にでも書くとして、さっそく手順を。
GentooでのXen環境は完成しているという前提で話を進めます。

まずは下準備。
ubuntuのカーネルはPAE対応なので、XenおよびGentooのカーネル(Dom0/DomU両方)もPAE対応にしておく必要があります。XenはUSEフラグにpaeを指定して、
USE="pae" emerge -av app-emulation/xen

とすればOK。
カーネルに関しては、CONFIG_HIGHMEM64Gを有効にします。
Processor type and features --->
  High Memory Support --->
    (X) 64GB

カーネルの再構築をして、再起動すれば準備完了です。
(既にPAE対応の環境であれば上記作業は不要です)

それでは、いよいよubuntuの導入です。
基本的には以下のサイトを参考にさせていただきました。

Domain-Uの導入(Ubuntu 8.04) - MRK Laboratory
http://www.mrk.jp/wiki/index.php/Domain-U%E3%81%AE%E5%B0%8E%E5%85%A5(Ubuntu_8.04)

まずはubuntuで使うファイルシステムを作成します。
構成はあまり深く考えず、/ に6GB、swap に512MBとしました。
私の場合はLVMを使っているので以下のコマンドで作成します。
lvcreate -L6G -ndomU_ubuntu_root rootvg
mkfs.ext3 /dev/rootvg/domU_ubuntu_root
lvcreate -L512M -ndomU_ubuntu_swap rootvg
mkswap /dev/rootvg/domU_ubuntu_swap

続いてdebootstrapをインストールします。
emerge -av dev-util/debootstrap

debootstrapでベースとなるシステムのセットアップをします。
mount /dev/rootvg/domU_ubuntu_root /mnt
debootstrap --arch=i386 hardy /mnt http://archive.ubuntulinux.org/ubuntu/ /usr/share/debootstrap/scripts/gutsy

うまくいったらubuntuの環境にchrootします。
chroot /mnt

この時、
id: cannot find name for group ID 11

というエラーが表示されますがとりあえず気にしないことにします。
/etc/apt/sources.listを以下のとおり修正します。(太字が追加部分です)
deb http://archive.ubuntulinux.org/ubuntu hardy main universe

そうしたらwgetをインストールします。
apt-get update
apt-get install wget

次にXen対応のカーネルをインストールします。
公式リポジトリのカーネルだとネットワーク接続がうまく行かないので、以下のサイトで公開されているカーネルをインストールします。

Index of /~hiranotaka
http://www.il.is.s.u-tokyo.ac.jp/~hiranotaka/
wget http://www.il.is.s.u-tokyo.ac.jp/~hiranotaka/linux-image-2.6.24-16-xen_2.6.24-16.30zng1_i386.deb
dpkg --install linux-image-2.6.24-16-xen_2.6.24-16.30zng1_i386.deb

Xenでパフォーマンスの問題を引き起こすtlsはOFFっておきましょう。
mv /lib/tls /lib/tls.disabled

Xenの仮想コンソールに対してgettyが立ち上がるようにしておきます。
sed 's/tty1/xvc0/' /etc/event.d/tty1 > /etc/event.d/xvc0

ついでにネットワークの設定もしておきます。
編集すべきファイルは/etc/network/interfacesです。
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
あとはホスト名関連。とりあえずホスト名をhogehostとします。
まずは/etc/hostname。(ファイルは新規作成になるので注意)
hogehost.local

続いて/etc/hosts。(これも新規作成になります。不思議)
127.0.0.1 hogehost localhost

以上3つの内容は環境に合わせて適当に変更してください。

タイムゾーンは日本に変更しておきます。
cp /usr/share/zoneinfo/Japan /etc/localtime

/etc/fstabも書いておきましょう。
/dev/sda1 / ext3 noatime 0 1
/dev/sda2 none swap sw 0 0
完了したら、ubuntuの環境から出ます。
exit

そうしたらubuntuのカーネルとinitramfsをDom0のファイルシステムにコピーします。
cp /mnt/boot/vmlinuz-2.6.24-16-xen /boot/ubuntu.vmlinuz-2.6.24-16-xen
cp /mnt/boot/initrd.img-2.6.24-16-xen /boot/ubuntu.initrd.img-2.6.24-16-xen

そしてubuntu用のファイルシステムをumountします。
umount /mnt

Xenの設定ファイルを記述します。
kernel = "/boot/ubuntu.vmlinuz-2.6.24-16-xen"
ramdisk = "/boot/ubuntu.initrd.img-2.6.24-16-xen"
memory = 512
name = "xen-ubuntu"
vif = ['mac=00:16:3e:00:00:01, bridge=xenbr0']
disk = ['phy:rootvg/domU_ubuntu_root,sda1,w', 'phy:rootvg/domU_ubuntu_swap,sda2,w']
root = "/dev/sda1 ro"

ファイル名は/etc/xen/ubuntuとしましょう。(何でもいいんですが)

全ての準備が整いました。ubuntuを起動しましょう。
xm create -c ubuntu

"ubuntu on gentoo"環境のできあがり♪

文中でご紹介したサイトの他、以下のサイトも参考にさせていただきました。
(ありがとうございました!)

一人前のプログラマを目指す日記:xen - livedoor Blog(ブログ)
http://blog.livedoor.jp/matssaku/archives/cat_10014130.html

Yoichi's diary(2008-05-24)
http://yoichi.geiin.org/d/?date=20080524

Bug #204010 in xen-3.2 (Ubuntu): “networking not working”
https://bugs.launchpad.net/ubuntu/+source/xen-3.2/+bug/204010
posted by 月水和尚 (とも) at 16:57 | Comment(0) | TrackBack(0) | Xen/仮想化全般

2008年01月22日

Xenで2つ以上のネットワークに対応する

NICが2枚以上あるマシンでXen環境を構築したところ、ネットワークのブリッジに失敗して2枚目以降のNICがうまく使えないという問題に突き当たりました。解決策を探したところ、以下のサイトにすばらしい解決方法がありました。(ありがとうございます!)

STBBS.NET blog: Xenで複数のネットワークインターフェイスを domUに提供する
http://www.stbbs.net/blog/2007/03/xen-domu.html

上記サイトのとおりに対応してみたところ、今度はxend自身が立ち上がらなくなってしまいました…。どうやら2枚目のNICをブリッジするところで何か問題が起きているようです。試しにvifnum=0だけを立ち上げるようにしたらうまく起動できたのですが、何故か本来作成されないはずのxenbr1が作成されています。/etc/xen/scripts/network-bridgeに"-x"を付けて実行し、ログ(/var/log/xen/xend-debug.log)を見てみてもxenbr1なんて作成していない…何でしょこれ?

いろいろ試行錯誤してみた結果、先にvifnum=1をブリッジするようにすればうまく立ち上がるようです。と言うわけで、私の場合は以下のように対応しました。

まずは以下のようなスクリプトを作成します。
これはNICが2枚の時用なので、3枚以上の環境では適宜変更してください。

/etc/xen/scripts/network-bridge2
#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=1
"$dir/network-bridge" "$@" vifnum=0

作成したら実行権限をつけておきましょう。
chmod 755 /etc/xen/scripts/network-bridge2

次にxendの設定ファイルである /etc/xen/xend-config.sxp を開き、ネットワークスクリプトの呼び出し部分を以下のとおり変更します。(呼び出すスクリプトを既存のものから先ほど作成したものに変更します)
(network-script network-bridge)
  ↓ 変更
(network-script network-bridge2)

これでOKです。

ブリッジする順序に関しては普通は気にしなくていいと思います。
(kenyaさん@試作の環境では全く問題を起こさなかったので)

以下のサイトもすごく参考になりました。

第3回 Xenによる仮想環境のネットワーク構築:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20061010/250215/?P=1&ST=cpu

−追記:2008/01/25−
間違いだらけだったので大幅に書き直しました。
posted by 月水和尚 (とも) at 11:07 | Comment(6) | TrackBack(1) | Xen/仮想化全般