検索
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
カテゴリ一覧

ラボノート(実験ノート) - FreeBSDを、Xenの DomainU として動かす件

FreeBSDを、Xenの DomainU として動かす件

カテゴリ : 
研究・開発
執筆 : 
keiji_ariyama 2008-9-4 20:43

 このエントリで説明している方法は現在は使えません。

 最新の方法はこちら

結論から言うと、

 2008年9月4日現在、FreeBSD 7-STABLEは、正式にはXenに対応していない。(RELEASE-7で対応する予定だったが、見送られている。)

 また、Domain0(基盤)として動作する時期は未定で、こちらはFreeBSDの開発ロードマップにも載っていない。

 FreeBSDをDomainUとして動作させるためのソースコードは、8-CURRENTのCVSから取得する事が出来る。実際に導入してみた結果、それらは見た目上、問題なく動作している。

 しかしながら、CURRENTをサーバーとして動作させ続ける度胸は僕には無いので、今回のサーバーの再構築に際しては、FreeBSDのXen上での動作はあくまで実験にとどめ、各仮想サーバーはCentOSで構築した。

(但し、将来的にFreeBSDの8-STABLEがリリースされて、正式にXenのDomainUとして動作する日が来た時のために、その備えはしておく必要があるわけで。)

 今回、実験のためのFreeBSDのXen対応カーネルとディスクイメージを構築する際に大変参考になったのが、こちら → Yoichi's diary

 参考というか、上記のサイトに全てが書いてあるのだが、備忘録を兼ねて、ここにもFreeBSDをXenで動作させる方法を書き記しておく事にする。

手順

1.FreeBSDのXen対応カーネルとイメージを用意

 Xen上でFreeBSDを動作させるには、Xen対応カーネルと、仮想OSから見たファイルシステムとなるディスクイメージを用意する必要がある。

 FreeBSDの普通(Xen対応でない)のカーネルをそのままインストールしたディスクイメージを作っても、当然ながらXen上では起動しない。

1−1.FreeBSDを準備する(cvsup)

FreeBSDをまずは普通にインストールし、cvsupをインストールしておく(package、portどちらでも可)

1−2.Xen対応ソースを入手(チェックアウト)

 cvsupの設定ファイルを以下のように作成

xen-supfile
*default host=cvsup18.FreeBSD.org
*default base=/var/db
*default prefix=/usr/src/xen
*default release=cvs tag=.
*default delete use-rel-suffix

p4-cvs-xen31

 作成した設定ファイルを使ってcvsupを実行
tmp# cvsup ./xen-supfile

1−3.ディスクイメージファイルの用意(dd, mdconfig, bsdlabel, newfs, mount)

 ディスクイメージ用のファイル領域を確保。確保する容量は適宜調整(この場合、1024byte * 10M blockで、10GB確保している)
tmp# dd if=/dev/zero of=/freebsd-xen/freebsd.img bs=1k count=10M

 これ以後の作業は、特に指定をしない限り、/freebsd-xen/ディレクトリ内で行う。

 書き出したファイル"freebsd.img"を、デバイス/dev/md0とする
tmp# mdconfig -a -t vnode -f freebsd.img -u 0

 ラベルの初期化
tmp# bsdlabel -w /dev/md0

 ラベル編集
tmp# bsdlabel -e /dev/md0

disklabel指定(容量は適宜調整)
# /dev/md0:
8 partitions:
#       size   offset    fstype   [fsize bsize bps/cpg]
      a: 8GB       *    4.2BSD     2048 16384 28552
      b: *         *      swap
      c: *         *    unused        0     0         # "raw" part, don't edit

 ファイルシステムを初期化
tmp# newfs /dev/md0a
tmp# newfs /dev/md0b
tmp# newfs /dev/md0c

 ディスクイメージを/mntディレクトリにマウント
tmp# mount /dev/md0a /mnt

1−4.Xen対応ソースをビルド・ディスクイメージ内にインストール

tmp# cd [xen対応ソースをダウンロードした場所]
tmp# make buildworld
tmp# make installworld DESTDIR=/mnt

1−5.Xen対応カーネルをビルド・インストール

tmp# make buildkernel KERNCONF=XEN
tmp# make installkernel KERNCONF=XEN DESTDIR=/mnt

1−6.設定ファイルのコピーと変更(fstab, ttys)

 ディスクイメージ内に設定ファイルをコピー
tmp# cd /mnt/etc
tmp# cp -r /etc/* /mnt/etc/

 設定ファイル(fstab, ttys)を、以下のように変更

fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/xbd769a            /               ufs     rw              1       1
/dev/xbd769b            none            swap    sw              0       0

 デバイス名の数字"769"は変更可能(Xenの設定ファイルで指定する予定の値)


ttys
#
xc0     "/usr/libexec/getty Pc"         vt100   on  secure
#
#ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Virtual terminals
#ttyv1   "/usr/libexec/getty Pc"         cons25  on  secure
#ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
#ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure
#ttyv4   "/usr/libexec/getty Pc"         cons25  on  secure
#ttyv5   "/usr/libexec/getty Pc"         cons25  on  secure
#ttyv6   "/usr/libexec/getty Pc"         cons25  on  secure
#ttyv7   "/usr/libexec/getty Pc"         cons25  on  secure
#ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure
#

 xc0を追加。ttyv0-8をコメントアウト

 ディスクイメージからカーネルファイルをコピーする(Xenの設定から指定する為)
tmp# cp /mnt/boot/kernel/kernel /freebsd-xen/freebsd.kern

 ディスクイメージのマウントを解除し、md0を消去する。
tmp# umount /mnt
tmp# mdconfig -d -u 0

 以上で、Xen上で動作するFreeBSDのディスクイメージ(freebsd.img)とカーネル(freebsd.kern)が完成した。

2.XenのDomain0へ配置

 freebsd.imgと、freebsd.kernの2つのファイルを、Xenが動作するDomain0にコピーする。

 今回は、freebsd.img/freebsd/images/に、freebsd.kern/freebsd/にコピーした。

3.DomainUとして設定(freebsd)

 FreeBSDのdomainU用の設定ファイルを作成。

/etc/xen/freebsd
name = "freebsd_test"
kernel ="/freebsd/freebsd.kern"
uuid = "e788b52c-e71c-d317-ccac-98be22e9c86a"
maxmem = 256
memory = 128
vcpus = 1
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [  ]
disk = [ "file:/freebsd/images/freebsd.img,hda1,w" ]
vif = [ "mac=00:16:3e:a3:3d:df,bridge=xenbr0" ]
extra = "boot_verbose"
extra += ",boot_single"
extra += ",kern.hz=100"
extra += ",vfs.root.mountfrom=ufs:/dev/xbd769a"

 uuidは適当に設定する。

 vif内のmac=以降はMACアドレスの指定。後半48bit[a3:3d:df]を、ランダムの値で設定する。

 xbd769は、FreeBSDのディスクイメージ内の設定ファイル"fstab"内で指定した数字と合わせる。

4.起動

xen-machine# xm create freebsd

 freebsd_test ドメインが起動する。


2008/09/05: 設定ファイルをディスクイメージへコピーする際のコマンドラインを訂正

*/

トラックバック

トラックバックpingアドレス トラックバックpin送信先urlを取得する
カレンダー
« « 2010 9月 » »
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 1 2
アーカイブ
ヘッドライン
有限会社シーリス
Copyright© C-LIS CO., LTD. 2007-2010 All Rights Reserved.
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project