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
で、インストール後のドメイン定義ファイルはこちら。
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
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
jack@openindiana:~ $ sudo /usr/bin/gui-install