自宅ルータをSolaris 11 Expressで運用しているのを、思い切ってSolaris 11に更新した。Oracleのドキュメントやフォーラムを参考に、本体すなわちglobal zoneの更新はすんなりできたが、OCNへのIPv6トンネル接続に使っているzoneが上がって来ないことに気づいた。
きちんと作業プロセスを記録していないが、ものすごく大まかには以下の2つの手順である。
- /usr/lib/brand/shared/README.dsconvert を参考に、zone datasetを更新する
- zoneadm -z zone detach && zoneadm -z zone attach -u でzoneのシステムを更新する
しかし、過去にug-jposug MLでも指摘があったように、「Solaris 11 Expressで作ったzoneでもSolaris 11にattachできない」こともある。例えば、
変なpublisherが登録されていたら、先に削除
しておくことが重要である。うちの場合、なぜそうしていたのかは記憶があやふやだが、opensolaris.orgのリポジトリをpublisherに指定しているのが災いした。
Unable to contact valid package repository: http://pkg.opensolaris.org/release
Encountered the following error(s):
Unable to parse repository response
というエラーが発生し、その結果、zoneの更新ができなくなっていた。上記のug-jposugでのtipsを参考に、
pkg -R zoneのrootディレクトリ unset-publisher opensolaris.org
を実行して、zone内部でopensolaris.orgを参照しないようにしてから、zoneadm -z zone attach -uを実行したところ、zoneの更新がうまくいった。
このマシンは、まっさらの状態でSolaris 11 Expressを標準インストールしたままだったので、この程度で済んだと考えられる。opensolarisからimage-updateを繰り返してきたものだと、フォーラムにもあるように、global zoneの更新もおぼつかない可能性が高まるようだ。