-
Cramfs (Compressed ROM File System)는 플래시 디바이스 내부에서 사용 가능한 압축된 읽기 전용 리눅스 파일 시스템이다.
-
간단하고 공간 효율적이다. zlib 루틴을 사용해 파일을 한 페이지씩 압축하고 랜덤 페이지 접근을 허용한다. 메타데이터는 압축되지 않지만 매우 간결한 표현을 사용해 기존 파일시스템보다 디스크 공간을 훨씬 적게 사용한다.
-
메모리 크기가 작은 임베디드 디자인에 활용된다.
-
현재 시스템에서 사용자 어플리케이션 실행폴더로 활용
-
RAM과 다르게 중간에 전원이 꺼지더라도 파일시스템이 훼손되지 않는다.
-
cramfs 파일시스템에는 쓰기가 불가능하다 (높은 압축률 때문에 실시간 업데이트가 매우 어렵다). 따라서 별도 유틸리티로 디스크 이미지를 생성해야 한다.
-
사용 시 주의사항은 다음과 같다:
- 파일 크기는 16MB 미만으로 제한된다.
- 최대 파일시스템 크기는 약 256MB이다.
- gid의 하위 8비트만 저장된다.
- 하드 링크가 지원되지만 링크 수는 1로 표시된다.
- 디렉토리에 '.' 또는 '..' 항목이 없다.
- 타임스탬프가 저장되지 않아 기본값이 1970년 GMT로 설정된다.
-
현재 cramfs는 같은 엔디안 아키텍처에서만 쓰고 읽을 수 있으며, PAGE_SIZE가 4096인 커널에서만 읽을 수 있다.
-
메모리 매핑된 cramfs 이미지 기능도 지원된다. 이는 블록 디바이스 레이어를 거치지 않고 물리적 선형 메모리 범위에서 직접 데이터를 로드할 수 있게 해준다. 이로 인해 메모리가 절약되고 ROM에서 읽기 전용 세그먼트의 XIP(eXecute-In-Place)가 가능해진다.
-
cramfs 이미지의 메모리 위치는 시스템에 따라 다르다. 적절한 물리적 주소를 알아야 하며 MTD 디바이스를 구성해야 한다. 또한 해당 MTD 디바이스는 "point" 메서드를 구현하는 맵 드라이버를 지원해야 한다.
```bash
sudo apt-get install cramfsprogs
```
- Cramfs 폴더:
/sdk/rootfs/cramfs
- 해당 폴더에 작성한 어플리케이션 카피하여 이미지를 만듬
cd /sdk/rootfs/
sudo ./mkcramfs
- 이후
ua.cramfs
가 만들어지고, 이 파일을 /tftpboot나 업그레이드 폴더에 카피하여 업그레이드할 수 있다.
참고