생성된 UBI 바이너리로 NAND 프로그래밍

생성된 UBI 바이너리로 NAND 프로그래밍

우리 시스템은 처음 부팅할 때 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에 들어가는 다양한 매개변수를 이해하는 데 큰 도움이 되었습니다.

https://github.com/jrspruitt/ubi_reader

관련 정보