Osamu Sayama's Weblog
zfs root for grub
*** Nevada 96 で直りました... ***
nevada で luactivate に locale に依存したバグ (6714234) があるようで BE がうまく切り替わりません (それと grub のメニューにも追加されない)。zpool status の出力に依存してパースしていたようで、とりあえず以下の変更を入れると動くようです (/usr/sbin/luactivate にも同様なとこあるので mirror しているとか該当しそうな場合はこっちも直してください)。
% diff /usr/lib/lu/lulib.org /usr/lib/lu/lulib
227c227
< blob=`zpool status "$lgzd_pool"`
---
> blob=`env LC_ALL=C zpool status "$lgzd_pool"`
あるいは、zpool に bootfs なるプロパティがありましてデフォルトではこれで指定されたとこからブートします。
# zpool get bootfs rpool
NAME PROPERTY VALUE SOURCE
rpool bootfs rpool/ROOT/opensolaris-2 local
逆にこの値を書き換えることで切り替えることができます。
# zpool set bootfs=' rpool/ROOT/opensolaris-3' rpool
また、grub menu にも bootfs なるキーワードが追加されまして、ここでも指定可能です。ここで指定された方が zpool の property より優先されるようです。基本的には beadm activate や luactivate コマンドの中で自動的に設定されるのものです 。
# cat /rpool/boot/grub/menu.lst
:
title Solaris 2008.11 snv_91 X86
findroot (pool_rpool,0,a)
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/$ISADIR/boot_archive
:
title opensolaris-2
bootfs rpool/ROOT/opensolaris-2
kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/$ISADIR/boot_archive
また findroot はどの signature の root を探すかを指定するコマンドです。pool_rpool だと rpool という signature をサーチし、その signature が見つかった partition に対して root をセットします。
Posted at 11:04午前 6 26, 2008 by sayama in Solaris x86 | 投稿されたコメント[0]