우리 시스템은 처음 부팅할 때 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
실시간 FM! -F 매개변수는 위에 나열된 오류를 수정했습니다.
http://www.linux-mtd.infradead.org/faq/ubifs.html#L_free_space_fixup
또한, ubi_reader 도구는 mkfs 및 ubinize의 다양한 매개변수를 이해하는 데에도 매우 도움이 됩니다.