/dev/mtdblockNにjffs2のイメージファイルのマウントに失敗した理由
目的
組み込みのLinux開発で,コンソールに今まで見かけなかった以下のエラー
Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes empty_blocks 0, bad_blocks 0, c->nr_blocks 6 mount: mounting /dev/mtdblock8 on /foobar failed
を見かけた.これが発生すると,/foobarのディレクトリーに何もマウントされない現象が発生する.今まで見かけたことがなく,ちょっとした変更でルートファイルシステムを変えたことによりjffs2のイメージファイルを作り直しただけで"ちょい変"になってしまった始末であり,その原因を調査および解決したので記録に残しておく.
結論
仮想マシン環境でビルド中のjffs2のイメージを,ビルド完了前にWindowsホストにコピーしてしまっていたことにより,jffsのイメージが欠損してしまっていた.
ファイルシステムとして,一定区間ごとにヘッダーのようなものがあるものと考えられる.

ただし,ビルドが正常なものと異常なものとで,ファイルサイズに違いはない:

また,上記エラーの周辺には以下のようなエラーメッセージがあり,いずれにしてもファイルシステム異常と推測される:
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x007a0070: 0xffff instead Further such events for this erase block will not be printed Empty flash at 0x007a007c ends at 0x007a00a0
改訂履歴
| # | 日付 | 内容 |
|---|---|---|
| 1 | 2024/11/04 | 結論を(ようやく)記載 |