우리 시스템은 처음 부팅할 때 NAND에 생성되는 UBI 파티션을 생성합니다. 시스템은 그곳에서 파일을 읽고 쓸 수 있습니다. 저는 NAND '깡패' 프로그래머가 사용할 수 있는 바이너리 파일을 생성하여 일부 파일로 해당 파티션을 미리 프로그래밍할 수 있도록 하려고 합니다.
폴더/화재 구조를 만들고 다음 두 명령을 사용합니다.
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 오류가 발생합니다.
$ 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 이미지 생성을 망친 아이디어가 있나요?
답변1
RTFM! -F 매개변수는 위에 나열된 오류를 수정했습니다.
http://www.linux-mtd.infradead.org/faq/ubifs.html#L_free_space_fixup
게다가, ubi_reader 도구는 mkfs와 ubinize에 들어가는 다양한 매개변수를 이해하는 데 큰 도움이 되었습니다.