Osamu Sayama's Weblog

木曜日 6 26, 2008

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 をセットします。

投稿されたコメント:

コメント
  • HTML文法 不許可

Calendar

Feeds

Search

Links

Navigation

Referrers