私たちのシステムは、最初の起動時にNANDで作成されるUBIパーティションを生成します。システムはそこでファイルを読み書きできます。 NANDの「ギャング」プログラマーに使用できるバイナリファイルを作成しようとしています。これにより、そのパーティションをいくつかのファイルで事前にプログラムできます。
フォルダ/ファイア構造を作成し、次の2つのコマンドを使用します。
mkfs.ubifs -r ./files -m 2048 -e 126976 -c 2047 -o ubifs.img
ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 ubinize.cfg
ubinize.cfg:
[files]
mode=ubi
vol_id=0
vol_type=dynamic
vol_name=fs
vol_flags=autoresize
image=ubifs.img
Ubootを使用してファイルをテストするには、正しいオフセットでubi.imgをプログラムし、システムを起動します。システムは、有効なファイルを含む新しいUBIFSパーティションを見つけます!わーい!
問題:パーティション内の何かを変更し、新しいファイルにも触れて再起動すると、パーティションのマウントに失敗し、大量のeccエラーが発生します。
http://i.imgur.com/qoTr4ag.png
$ log | grep UBI
05:00:59 PM [ INFO] [ kernel] UBIFS: background thread "ubifs_bgt1_0" started, PID 306
05:00:59 PM [ WARNING] [ kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:00:59 PM [ WARNING] [ kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM [ WARNING] [ kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM [ ERROR] [ kernel] UBI error: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM [ ERROR] [ kernel] UBIFS error (pid 304): ubifs_scan: bad node
05:01:00 PM [ WARNING] [ kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:00 PM [ WARNING] [ kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:01 PM [ WARNING] [ kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:01 PM [ ERROR] [ kernel] UBI error: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 3:4096,
05:01:01 PM [ WARNING] [ kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:01:01 PM [ WARNING] [ kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:01:01 PM [ WARNING] [ kernel] UBI warning: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:01:02 PM [ ERROR] [ kernel] UBI error: ubi_io_read: error -74 (ECC error) while reading 126976 bytes from PEB 4:4096,
05:00:00 PM [ ERROR] [ kernel] UBIFS error (pid 304): ubifs_recover_master_node: failed to recover master node
05:00:00 PM [ ERROR] [ kernel] UBIFS error (pid 304): ubifs_recover_master_node: dumping first master node
05:00:00 PM [ INFO] [ kernel] UBIFS: background thread "ubifs_bgt1_0" stops
Ubiイメージの作成を台無しにしたアイデアはありますか?
RTFM! -Fパラメーターは、上記のエラーを修正しました。
http://www.linux-mtd.infradead.org/faq/ubifs.html#L_free_space_fixup
さらに、ubi_readerツールは、mkfsおよびubinizeに入るさまざまなパラメーターを理解するのに非常に役立ちました。