7.0-RC1 に別ディスクを使って更新 (ぎりぎりまで 6.x 環境)

7.0-RC1 に別ディスクを使って更新 (ぎりぎりまで 6.x 環境)

<URL:http://mimori.org/~h/tdiary/20060501.html#p03> の作業の dump&restore までやって
/dev/mirror/gm0 上に現行環境のコピーを作成

/usr/src/UPDATING の To cross-install current onto a separate partition にある作業を参考に

cd /usr/src
# /mnt の下に gm0 で作成した新しい環境を置いている
CURRENT_ROOT=/mnt
make buildworld
make buildworld
make buildkernel KERNCONF=YOUR_KERNEL_HERE
make installworld DESTDIR=${CURRENT_ROOT}
make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
mergemaster -D /mnt -p

make distribution をする代わりに mergemaster をしたいのだが、7.0環境でないと -p オプションなしの mergemaster は失敗する。

ということで chroot /mnt /bin/sh とユーザランドを7.0にした環境内で作業したらうまくいった。

% sudo chroot /mnt /bin/sh
(chrooted /mnt)# env PAGER=cat mergemaster
(chrooted /mnt)# (cd /usr/ports/misc/compat6x; make install)

この時点で動作しているカーネルは 6.x のままなのだが、環境としては 7.x と認識してくれている。

さらに portupgrade もこのユーザランドを7.0にした環境内で行おうと思ったが script コマンドが pty を開けないとかいって失敗。
/mnt/dev に devfs をマウントすればいいはず…と思って jail の起動スクリプトを追ったけどいまいち分からず、
面倒なので /etc/rc.conf に jail の設定を一時的に書いて /etc/rc.d/jail start でjail環境として起動。

% sudo chroot /mnt /bin/sh
(chrooted /mnt)# portupgrade -afWw

…通るものもあるが、configureの途中で Bad system call で落ちるものもある。結構微妙。あんまり役に立たないかも。

更に、FreeBSD 7.0-RC1 で再起動後に portupgrade -afWw をかけたら
Fatal error ‘Cannot allocate red zone for initial thread’ at line 382 in file /usr/src/lib/libthr/thread/thr_init.c (errno = 12)
をくらう罠。

/var/log/messages によると ruby のとこで死んでいたので ruby と portupgrade を自力で更新した。

(cd /usr/ports/lang/ruby18; sudo env FORCE_PKG_REGISTER=yes make install)
(cd /usr/ports/port-mgmt/portupgrade; sudo env FORCE_PKG_REGISTER=yes make install)

その後もう一度 portupgrade -afWw で更新し、さらにそれでも残ったものを portupgrade -f [port名] で個別に更新した。
perl モジュールのところでコケてるものが非常に多かったので ruby + perl で問題発生していた雰囲気?

最後に再起動毎に panic 起こしていた原因が /usr/share/examples/ses/sesd だったのを突き止めた。
SCSIバックプレーンの温度とかを監視するもので、自分でインストールしたもの。
運用レベルに達するものではないので 7.0 での動作は確認されていなかったようだ。
余計なものと判断して削除して解決した。

/boot.config に以下のように書いて、ハードディスクの物理的入れ替えなしで 新しいディスクの方から起動

1:da(2,a)/boot/loader
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。