OpenIndiana on Xen

OpenIndianaをXen上で動かしてみたというお話。
きっかけはこのあたり。

環境は Xen4.1(Fedora 15)で確認しました。

以下はOpenIndiana b148をTextインストーラで構築してみた(ざっくりとした)手順です。
Xen環境の構築とか他へお任せ。
(参考:Features/XenPvopsDom0 - Fedora Project Wiki)
OpenIndianaのisoイメージはこちらからどうぞ。
Download – openindiana

まず、isoファイルからkernelとboot_archiveファイルを取り出します。

[root@xenhost ~]# mount -o loop /image/oi-dev-148-text-x86.iso /mnt
[root@xenhost ~]# cp /mnt/platform/i86xpv/kernel/amd64/unix /home/xen/domains/oi-148/platform/i86xpv/kernel/amd64/unix.iso
[root@xenhost ~]# cp /mnt/platform/i86pc/amd64/boot_archive /home/xen/domains/oi-148/platform/i86pc/amd64/boot_archive.iso
[root@xenhost ~]# umount /mnt

で、インストール時のドメイン定義ファイル。

name = 'oi-148'
memory = '1024'
disk = [ 'tap:aio:/images/solaris/openindiana/oi-dev-148-text-x86.iso,1:cdrom,r', 'tap:aio:/home/xen/domains/oi-148/disk.img,0,w' ]
vif = [ 'mac=00:16:3e:00:00:11, bridge=virbr0' ]
kernel = '/home/xen/domains/oi-148/platform/i86xpv/kernel/amd64/unix.iso'
ramdisk = '/home/xen/domains/oi-148/platform/i86pc/amd64/boot_archive.iso'
extra = '/platform/i86xpv/kernel/amd64/unix - nowin -B livemode=text' 
vcpus= 1
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

2009.06の頃と違うのは、extraの行。
以前の通り、「-B install_media=cdrom」とか書いても
起動に失敗します。
OpenIndiana(Solaris 11 Express)以降はLive(GUIインストーラ)版と
Textインストーラ版があるためだと思いますが詳しい経緯はよく分かりません。
まぁとにかく、起動してTextインストーラからインストール。
(参考:Oracle Solaris 11 Express 2010.11 のText Install:OSマニアの部屋:So-netブログ)
ちなみにF2とかF3が効かない場合は、ESC+2やESC+3で代用してください。

インストールが完了したらF9でquitして、「3 Shell」を選んで
zfsのbootpathを調べます。
まず、ZFSのbootfs領域のID。

root@openindiana:/root # zdb -d rpool | grep "ROOT"
Dataset rpool/ROOT/solaris@install [ZPL], ID 244, cr_txg 309, 1.96G, 73162 objects
Dataset rpool/ROOT/solaris [ZPL], ID 84, cr_txg 42, 2.00G, 73286 objects
Dataset rpool/ROOT [ZPL], ID 74, cr_txg 40, 31.0K, 7 objects

*1
このうち必要なのは、真ん中の行のIDの「84」。
次に、DiskのDevice Path。

root@openindiana:/root # zpool status | grep ONLINE
 state: ONLINE
        rpool       ONLINE       0     0     0
          c1d0s0    ONLINE       0     0     0
root@openindiana:/root # ls -l /dev/dsk/c1d0s0 
lrwxrwxrwx 1 root root 26 2011-07-05 02:33 /dev/dsk/c1d0s0 -> ../../devices/xpvd/xdf@0:a

このうち必要なのは、最後の「/xpvd/xdf@0:a」

そしてインストール後のkernelとboot_archiveを取り出します。
・・・kernelはisoと同一なので必須ではありませんが一応ということで。

root@openindiana:/root # zfs set=/a rpool/ROOT/openindiana
root@openindiana:/root # zfs mount rpool/ROOT/openindiana
root@openindiana:/root # scp /a/platform/i86xpv/kernel/amd64//unix xen@192.168.0.1:/home/xen/domains/oi-148/platform/i86xpv/kernel/amd64/
root@openindiana:/root # scp /a/platform/i86pc/amd64/boot_archive xen@192.168.0.1:/home/xen/domains/oi-148/platform/i86pc/amd64/
root@openindiana:/root # zfs set=/ rpool/ROOT/openindiana

*2


で、インストール後のドメイン定義ファイルはこちら。

name = 'oi-148'
memory = '1024'
disk = [ 'tap:aio:/home/xen/domains/oi-148/disk.img,0,w' ]
vif = [ 'mac=00:16:3e:00:00:11, bridge=virbr0' ]
kernel = '/home/xen/domains/oi-148/platform/i86xpv/kernel/amd64/unix'
ramdisk = '/home/xen/domains/oi-148/platform/i86pc/amd64/boot_archive'
extra = '/platform/i86xpv/kernel/amd64/unix - nowin -B zfs-bootfs=rpool/84,bootpath="/xpvd/xdf@0:a"' 
vcpus= 1
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

先ほど確認したbootfsのIDとDevice Pathを当てはめて
extra行を記述して、終わり。
これでXen上でOpenIndianaがxpvドライバで動きます。

LiveCDを使った場合のインストール方法(おまけ)

GUIじゃなきゃやだ、という人向け。
使用するisoイメージをLive版に置き換えて起動してください。
起動後は、以下の通り。(DHCPが有効な環境であれば1と2は要りません)


0)ログイン
Live版ではrootユーザでログインできません。
jackユーザでのみログインすることができます。(Passwordは「jack」)


1)ネットワーク設定を変更

jack@openindiana:~ $ sudo svcadm disable physical:nwam
jack@openindiana:~ $ sudo svcadm enable physical:default


2)IPアドレスを設定(IPアドレスは適当に)

jack@openindiana:~ $ sudo ipadm create-addr -T static -d -a 192.168.0.2/24 xnf0/v4static2
jack@openindiana:~ $ sudo ipadm up-addr -t xnf0/v4static2


3)sshデーモンを起動

jack@openindiana:~ $ sudo svcadm enable ssh


4)sshからログイン(リモートのXクライアントから)

[root@host ~]# xhost +
[root@host ~]# ssh -X jack@192.168.0.2


5)GUIインストーラを起動

jack@openindiana:~ $ sudo /usr/bin/gui-install

*1:zdbの-vvvは重いので、-dで確認してます

*2:scpは環境によって適当に変えてください。ftpでも可。