Linux 6.18 UBIFS 문서 · 장치 geometry는 실제 하드웨어 기준

MTD·UBI·UBIFS와 eMMC 파일 시스템을 구분합니다

raw flash의 erase block과 블록 장치의 sector가 다른 이유부터 이미지 형식까지 살펴봅니다.

raw flash와 관리형 저장장치는 출발점이 다릅니다

raw flash의 대표 경로관리형 저장장치의 대표 경로
파일 → UBIFS → UBI → MTD → raw NAND/NOR파일 → ext4 등 → block layer → eMMC·SSD 등의 controller
운영체제가 erase block·bad block 등 raw flash 특성을 고려합니다.내부 controller와 FTL이 flash 물리를 감추고 block I/O를 제공합니다.

UBIFS는 UBI volume 위에서 동작하는 파일 시스템입니다. UBI는 파일 이름·디렉터리를 관리하는 파일 시스템 자체가 아닙니다. JFFS2는 UBI를 필수로 거치지 않고 MTD 위에서 동작합니다. eMMC 안에 NAND가 있다는 이유만으로 /dev/mmcblk 장치를 UBIFS의 일반 대상이라고 보면 안 됩니다. UBIFS와 MTD·UBI의 관계

LEB와 PEB의 크기는 장치와 배치에 따라 달라집니다

PEB는 물리 erase block, LEB는 UBI가 제공하는 논리 erase block입니다. UBI는 헤더와 데이터 offset 등을 고려해 PEB 일부를 관리용으로 사용합니다. 예전 예제의 “PEB 128 KiB, LEB 126 KiB”는 특정 조건의 숫자이지 UBI의 보편적인 상수가 아닙니다.

논리 erase block에서 flash 위치까지
  1. UBIFS의 논리 데이터

    파일 시스템이 UBI volume의 LEB 번호와 내부 offset을 사용합니다.

    UBI가 현재 대응하는 PEB를 찾습니다.

  2. UBI의 매핑

    wear leveling·bad block 처리 등에 따라 물리 배치가 바뀔 수 있습니다.

    MTD에 필요한 I/O를 요청합니다.

  3. MTD와 flash driver

    장치의 page·erase 단위와 오류 상태를 처리합니다.

화살표는 주소 해석과 I/O 요청의 계층입니다. 파일이 바뀔 때 항상 전체 flash를 순서대로 복사한다는 뜻은 아닙니다.

UBIFS의 superblock·master node 위치에 대한 설명을 UBI 전체의 일반 volume 규칙과 혼동하지 않습니다. 어느 계층의 구조를 설명하는지 이름을 붙여야 합니다. Linux MTD 프로젝트의 UBI 설명

파일 시스템 이미지와 UBI 이미지는 다릅니다

산출물담는 것맞춰야 하는 정보
UBIFS imageUBIFS 파일 시스템 내용minimum I/O, LEB 크기, 최대 LEB 수 등 대상 설정
UBI imageUBI volume 배치와 각 volume의 내용PEB 크기·헤더 offset·volume 구성 등
ext4 imageblock 장치 위의 ext4 파일 시스템대상 block 공간·feature 지원·마운트 구성

확장자만 보고 기록 방법을 선택하지 않습니다. rootfs.ubifs를 raw flash 전체용 이미지처럼 취급하거나 UBI 헤더가 포함된 이미지를 일반 파일 시스템 이미지처럼 마운트하면 계층이 맞지 않습니다. 이미 사용 중인 volume의 갱신과 flash 초기화도 다른 작업입니다.

지우기 전에 현재 geometry부터 읽습니다

cat /proc/mtd
cat /sys/class/mtd/mtd0/erasesize
cat /sys/class/mtd/mtd0/writesize
ubinfo -a

관찰용 명령 예입니다. mtd0이라는 장치가 실제로 존재하는지 먼저 확인해야 하며 ubinfo는 도구 설치와 UBI 장치 상태에 따라 결과가 달라집니다. 여기서는 erase·format·raw write 명령을 예제로 실행하지 않습니다. 장치 정보와 이미지 생성 설정을 맞추는 것이 먼저입니다.

증상나누어 볼 원인
attach 실패잘못된 flash 영역, 헤더·geometry 불일치, 손상, 지원 설정 등을 확인합니다.
UBI는 보이지만 mount 실패volume 종류와 내용, UBIFS 형식·기능, mount 대상 이름을 확인합니다.
전원 차단 뒤 문제write 완료·commit·업데이트 절차와 실제 오류 로그를 봅니다. “journal이 있으니 모든 작업이 보존된다”고 가정하지 않습니다.