OFFS 포맷하기

mkfs.offs 툴을 이용하여 블럭 디바이스 장치를 OFFS 파일 시스템으로 포맷합니다.

mkfs.offs 사용법

mkfs.offs 명령어 형식은 아래와 같습니다.

mkfs.offs [-v -f -s sectors_per_cluster -S sector_size -e] 
          <mmcblk path or mmcblk partition path> 
          <config file path> 
          <active format section name>
  • -v 옵션은 포맷 진행 과정에 상세한 로그를 출력합니다.
  • -f 옵션은 RAW 포맷을 진행합니다. MBR을 덮어쓰며 파티션 테이블을 새로 생성합니다.
  • -s <sectors_per_cluster> 옵션은 클러스터당 섹터 개수를 설정합니다. 2의 거듭제곱 값으로 1, 2, 4, 8, 16, 32, 64, 128 값이 허용됩니다.
  • -S <sector_size> 옵션은 섹터 크기를 설정합니다. 기본값은 512바이트입니다. 2의 거듭제곱 값으로 512 (2^9), 1024, 2048, 4096, ..., 32768 (2^15) 값이 허용됩니다. 시스템에 따라서 인식 못 할 수 있습니다.
  • -e 옵션은 SD카드가 아닌 외장형 HDD나 SDD 저장 장치를 포맷하는 경우에 지정합니다.
  • <mmcblk path or mmcblk partition path> 첫번째 필수 인수로 저장장치 경로입니다. -f 옵션을 지정한 경우, RAW 포맷을 위해 블럭 장치 경로을 지정합니다. 예를 들어 SD 카드의 경우 "/dev/mmcblk0" 입니다.
  • <config file path> 두번째 필수 인수로 포맷 환경 설정 파일 경로입니다.
  • <active format section name> 세번째 필수 인수로 포맷 환경 설정 파일 내에서 실제 포맷 구성을 적용 할 섹션 이름입니다.

Note

-s-S 옵션을 지정한 경우, -f 옵션도 함께 지정해야 합니다. -e 옵션으로 외장 하드를 포맷할 경우에도 -f 옵션을 함께 지정해야 합니다.

Note

SD카드 포맷 시 장치 경로를 파티션이 아닌 블럭 장치 경로로 지정하게 되면 RAW 포맷이 진행됩니다. 예를 들어, 파티션 경로인 "/dev/mmcblk0p1" 을 지정하면 해당 파티션을 포맷하지만, "/dev/mmcblk0" 를 지정하면 RAW 포맷을 진행하게 됩니다.

포맷 환경 설정 파일

mkfs.offs는 환경 설정 파일 경로와 환경 설정 파일 내에 있는 실제 적용할 섹션 이름을 인수로 받습니다.

mkfs.offs는 이 섹션에서 명시된 폴더 구조와 특성으로 포맷을 진행합니다.

환경 설정 파일은 general 섹션과 여러개의 <사용자 정의 섹션> 으로 구성되어 있습니다.

;# 로 시작하는 줄은 주석 줄입니다.

general 섹션

[general]
label=<볼륨 라벨>
keep_root_files=<1 또는 0>
  • label 최대 11 글자로 대문자로 이루어진 볼륨 라벨입니다. 11자보다 더 길 경우, 포맷이 취소됩니다.
  • keep_root_files
    • 1: 루트 폴더에 있는 파일을 그대로 유지 합니다.
    • 0: 루트 폴더에 있는 파일들도 포맷시 지워집니다.

사용자 정의 섹션

환경 설정 파일은 하나 이상의 <사용자 정의 섹션> 으로 구성됩니다.

[section_name]
folders=<총 폴더 개수>
mode=<모드>
signature=<시그너쳐>

folder<N>=<이름>
folder<N>_size=<파일 최대 크기>
folder<N>_percent=<할당 비율>
folder<N>_mode=<모드>
  • section_name 사용자가 정의하는 임의 섹션 이름입니다. 공백은 없어야 합니다. 대소문자 구분하지 않습니다.
  • folders 생성할 폴더 개수입니다.
  • mode 용도를 지정합니다. driving, parking, general 중 하나를 지정합니다. 단순 구분 용도이며 동작에 아무런 영향을 끼치지 않습니다.
  • signature 시그너쳐 이름입니다. 최대 12 글자로 이루어지며 공백은 허용되지 않습니다. 포맷이 적용된 섹션 이름을 구분하기 위함입니다.

이후 키값은 folder<N>- 접두사가 붙습니다. <N>은 1번부터 시작되며 1씩 증가합니다. <N>의 최대 값은 <총 폴더 개수>입니다.

  • folder<N> 은 최대 11글자로 이루어진 폴더명입니다. 11자보다 더 길 경우 포맷이 취소됩니다.
  • folder<N>-size 는 폴더 내에 파일의 최대 크기입니다. MB 단위입니다. 4의 배수로 설정합니다.
  • folder<N>-percent 는 이 폴더의 차지하는 총 크기를 전체 용량 대비 퍼센트로 지정합니다.
  • folder<N>-mode 는 포맷 시 이 폴더에 대해 적용되는 모드입니다.
    • 0: 정해진 최대 크기로 예약 파일을 생성합니다. 기본 모드입니다. 녹화 파일 저장 등에 적합합니다. 이 유형으로 최대 4개의 폴더를 가질 수 있습니다.
    • 1: 폴더가 존재할 경우, 항상 새로 생성합니다. 예약 파일을 생성하지 않습니다. 빈 폴더입니다.
    • 2: 폴더가 존재할 경우, 그 폴더 내의 파일을 지우지 않고 유지합니다. 폴더가 없을 경우, 새로 생성합니다. 예약 파일을 생성하지 않습니다. 빈 폴더입니다. 시스템 운영에 필요한 시스템 설정 파일이나 로그 기록 등을 보관하는 용도에 적합합니다.

환경 설정 파일 예

아래는 1개의 사용자 정의 섹션을 갖는 환경 설정 파일 예입니다.


[general]
;DISK label (max 11 characters)
label=MYSD
;keep the files in the root directory
keep_root_files=1

;
; note: reserved file size should be multiple of 4.
;

[32GB_DRV]
;# of reserved folders.
;Max number of reserved folders is 4.
folders=6
;valid mode types: driving, parking, general
mode=driving
;signature (max 12-byte)
signature=32GB_DRV

;folder name. max 11 characters
folder1=DRIVING                
;file size in this folder. unit is MB.
folder1_size=180
folder1_percent=50
;mode 0: preserver files, 1:always new, 2: keep if exists;otherwise create
folder1_mode=0

folder2=PARKING
folder2_size=180
folder2_percent=20
folder2_mode=0

folder3=EVENT
folder3_size=24
folder3_percent=10
folder3_mode=0

folder4=MOTION
folder4_size=24
folder4_percent=10
folder4_mode=0

folder5=SNAPSHOT
folder5_size=4
folder5_percent=5
folder5_mode=1

folder6=Config
folder6_size=1
folder6_percent=5
folder6_mode=2

mkfs.offs 사용예

아래는 위 환경설정 파일을 사용하여 SD 카드를 포맷하는 예입니다.

$ ./mkfs.offs /dev/mmcblk0p1 ./offs-format.cfg 32GB_DRV

OFFS Version 3.14.4(aarch64) (build 48643)
Free memory 852389888
label: MYSD
keep the root files: Yes
folders#: 6
mode: Driving
signature: 32GB_DRV
folder[0]: "DRIVING" 180MB 50% mode: PreserveFiles
folder[1]: "PARKING" 180MB 20% mode: PreserveFiles
folder[2]: "EVENT" 24MB 10% mode: PreserveFiles
folder[3]: "MOTION" 24MB 10% mode: PreserveFiles
folder[4]: "SNAPSHOT" 0MB 0% mode: AlwaysCreateNew
folder[5]: "Config" 0MB 0% mode: KeepIfExistsOtherwiseCreate
WR chunk 131072 buf 1024K
/dev/mmcblk0 readonly? 0
MBR fs 8160
PBR cl 16384, spc 32, bps 512
OFFS(ver. 3.14, type 1) detected
FAT 0x404000 0xb7c000 32 15296
DAT 0x12f4000 1 1
VOLUME: KL730
WR align 16384 chunk 131072
SIGNATURE: KL730
formatting...
disk size 32040288256 bytes (30556.00 MB, 29.84 GB)
root size 0 bytes (0.00 MB, 0.00 GB)
   DRIVING   50%   180 MB #85  
   PARKING   20%   180 MB #34  
     EVENT   10%    24 MB #128 
    MOTION   10%    24 MB #128 
  SNAPSHOT    0%     0 MB #0   
    Config    0%     0 MB #0   
    (free)        2992 MB
SUCCESS (22.050688 sec).

아래는 외장형 하드디스크(2TB)를 포맷하는 예입니다.

$ sudo ./mkfs.offs -f -e /dev/sdk ./offs-format-gw-4ch.cfg driving

OFFS Version 3.13.20(x86_64) (build 42906)
Free memory 7048966144
warn: "/dev/sdk" path is not in mmcblk device path like /dev/mmcblk0. try to raw format the whole block device.
label: 4CH-CAR-DVR
keep the root files: Yes
folders#: 5
mode: Driving
signature: GW-4CH-DEV
folder[0]: "Drive" 356MB 35% mode: PreserveFiles
folder[1]: "Event" 124MB 20% mode: PreserveFiles
folder[2]: "Time Lapse" 168MB 35% mode: PreserveFiles
folder[3]: "DTG" 0MB 0% mode: AlwaysCreateNew
folder[4]: "Config" 0MB 0% mode: KeepIfExistsOtherwiseCreate
WR chunk 131072 buf 1024K
MBR fs 2016
MBR fs 8160
PBR cl 65536, spc 128, bps 512
FAT 0x800000 0x8000000 8192 245760
DAT 0xf800000 1 1
WR align 65536 chunk 131072
formatting...
disk size 2000394739200 bytes (1907725.12 MB, 1863.01 GB)
root size 0 bytes (0.00 MB, 0.00 GB)
     Drive   35%   356 MB #1876
     Event   20%   124 MB #3077
Time Lapse   35%   168 MB #3975
       DTG    0%     0 MB #0   
    Config    0%     0 MB #0   
    (free)       190521 MB
SUCCESS (2.059001 sec).