桂...@横浜です.
先日分かったのですが, ルートファイルシステムのブロックサイズを64kBにした場
合, ファイルシステムの読み込みに失敗してシステムのブートが出来ないようで
す.
最近SSDの価格が下がってきたこともあり, 次回はシステム領域のSSD化を考えて
SSDで性能が出る64kBブロック(UFSで設定可能な最大値)でルートファイルシステム
を作成し, 7-STABLE(3月前半ぐらいのi386)をインストールしました. インストー
ルしたディスクはHighPoint RR1740でRAID化したもので, これ自体は7.0のころに
正常にブートできた実績のあるものです.
で, インストール後にブートしてみると
Guessed BIOS device 0xffffffff not found by probes, defaulting to disk0:
can't load 'kernel'
と表示されてloaderプロンプトに落ちるという状態になりました. この現象は最近
7.1-STABLEなどで報告されているloaderの不具合と表面上は同じため, 当初は
loaderの不具合と思いました.
ところが以下のような対策を取っても問題は解決せず, 一時暗礁に乗り上げた恰好
になってしまいました.
1. 過去にブートに成功していた古いloaderおよびboot2に入れ替え
→変化なし
2. loaderを使用せず, boot2の"boot:"プロンプトから/boot/kernel/kernelを直接
起動
→カーネル読み込みのくるくるプロンプトの途中で固まる
3. 正常に起動できるIDEディスクを接続し, loaderまで立ち上がったところから
loaderプロンプトでrootdevおよびcurrdevを設定し直して(この場合, パーティ
ション/スライスはlsdevで見える)起動
→loaderがエラーを表示して停止. lsコマンドでファイルシステムを見ようと
しただけでも停止
どうしようも無くなったところで, 正常に起動するディスクはUFSデフォルトの
16kBブロックでnewfsしていたことを思い出し, 16kBブロックでnewfsしなおして
インストールしなおしたところ, 全く問題無くブート出来てしまいました.
loaderもカーネルと同様に, 64kBブロックのUFSでは不完全な状態で読み込みが行
われ, パーティション/スライスが正常に読めないといった異常動作を起こしてい
たみたいです.
どうもブートプログラムの内, 64kBブロックのUFSの読み込み部分が怪しそうなの
で sys/boot/common/ufsread.c あたりをざっと読んでみたのですが, ぱっと見で
は最大ブロックサイズ(64kB)までは考慮した作りになっていそうな雰囲気です.
そこで質問なのですが, 標準のブロックサイズ以外のUFSでブートに成功したとい
う例は無いでしょうか? もしかしたら私の環境が原因かもしれませんし. あるいは
ソースの調べるポイントは他に無いでしょうか?
--
Katsurajima "Raven" Naoto(桂島 直人)
Family Emblem: Circle and Left 3 Clove-TOMOE(丸に左三つ丁子巴)
e-mail: [email protected]