アップグレードの怪

NetBSD 8.1(のまま放置されていた)から 9.0_STABLE にアップグレード:

  1. 新しい 9.0_STABLE のカーネルを /netbsd として置きます。
  2. /stand/amd64/9.0/modules 以下に新しいカーネルモジュールを置きます。
  3. 再起動します。

すると、何故か NetBSD 8.1 が起動します(???)
(8.1 のカーネルを削除しても亡霊のように 8.1 が起動します)

$ strings /netbsd | grep 9.0_STABLE
とか実行すると、間違いなく /netbsd は 9.0_STABLE のものです。
いったい何が起きているのでしょうか?

















こたえ:software RAID が壊れている。

  1. wd0a と wd1a で構成されている RAID1 (raid0a) が root filesystem で、wd0a 側が fail していた。
  2. wd1a だけで構成された raid0a に新しいカーネルを書き込んだ。
  3. 再起動すると wd0 の pbr → bootxx_ffsv2 → boot → netbsd を読みに行くので wd0a にある古いカーネルの残骸が起動する。
  4. 起動した後、autoconfig softroot な raid0a を root filesystem としてマウントする(証拠隠滅)。

うーん。

まあ、普通に wd1 からも boot できるようにしてあったので、それで(あとはRAIDをリペアして)解決です……。