본문 바로가기
IT 이야기/Android

Android file system table (fstab.<device>)을 알아봅시다.

by KaySeo 2022. 12. 5.
반응형

오늘은 Android의 Filesystem mount table을 공부해보려고 합니다.

 

fstab의 정의

Linux 시스템에서는 file system table을 의미하는 fstab 파일에 장치이름, 마운트 지점, 파일 시스템 유형 및 파티션 보관일정이 정의 되어 있습니다. 이는 mount를 쉽게하기 위한 configuration table입니다. 그리고 부팅 시에 이 정보를 읽어 파일 시스템을 마운트 해야하는 지 여부와 파일시스템 checker(/system/e2fsck) 가 부팅시 파티션에서 오류를 확인하는 순서를 결정하게 됩니다. 

Android의 fstab.<device> 파일을 열어보면 아래와 같은 정보들이 있는 것을 확인할 수 있습니다. 아래 예에서는 fstab 항목들에 logical partition으로 system, vendor, product 정보가 설정된 것을 보여줍니다.

#<dev>  <mnt_point> <type>  <mnt_flags options> <fs_mgr_flags>
system   /system     ext4    ro,barrier=1     wait,slotselect,avb=vbmeta_system,logical,first_stage_mount
vendor   /vendor     ext4    ro,barrier=1     wait,slotselect,avb=vbmeta,logical,first_stage_mount
product  /product    ext4    ro,barrier=1     wait,slotselect,avb,logical,first_stage_mount

fstab 파일의 항목들

Android의 fstab파일은 아래와 같이 5개의 항목으로 구성됩니다.

  1. dev : 마운트 지점을 제공할 수 있는 Device 의 sysfs 아래 경로(보통 /sys에 마운트됨)로, 경로는 /로 시작해야 합니다. 볼륨라벨로도 정의할 수 있습니다.
  2. mnt_point: 볼륨을 마운트할 파일 시스템 경로입니다.
  3. type: 볼륨의 파일 시스템 유형입니다. 기본적으로 ext3(저널링 파일시스템으로 현재 기본 파일시스템으로 사용됨), ext4(16TB까지만 지원하던 ext3와 달리 더 큰 용량을 지원하며, 삭제된 파일의 복구, 파일시스템의 점검속도가 훨씬 빨라짐)를 사용하고 있으며 외장 카드의 경우 일반적으로 vfat입니다.
  4. mnt_flags_options: mount 옵션으로 여러개를 쓸 때는 콤마(,)로 구분합니다. Vold는 이 필드를 무시하며 defaults로 설정되어야 합니다.
  5. fs_mgr_flags: file system의 flag를 설정하기 위한 필드로 first_stage_mount(1단계 init에서 마운트되는 것을 나타냄) , encryption 정보등을 설정할 수 있습니다. Vold는 이 필드에 voldmanaged= 플래그를 포함하지 않는 통합 fstab의 모든 행을 무시합니다. 이 플래그에 이어 카드 설명 라벨과 파티션 번호 또는 단어 auto가 나와야 합니다.  예: voldmanaged=sdcard:auto 이외에 사용할 수 있는 플래그는 nonremovable, encryptable=sdcard, noemulatedsd, encryptable=userdata입니다.

이외의 mount 옵션들

  • auto / noauto: 부팅 시에 자동으로 mount 여부를 설정합니다.
  • exec / noexec: 그 파티션이 바이너리를 실행할 수 있는지 아닌지. 보통 보안 목적으로 noexec로 설정됩니다.
  • ro / rw: ro는 읽기 전용 (read-only), rw는 읽기 쓰기 (read-write)를 설정합니다.
  • nouser / user: user가 mount권한 여부를 설정합니다.
  • atime / noatime / relatime: access time (atime) 의 기록여부를 설정합니다. relatime은 access time이 atime data가 마지막으로 update된 (mtime) 이후에 파일이 수정되었을 때, 또는 마지막으로 access된 후 일정 시간 (기본값은 하루)이 지난 후에만 업데이트합니다.
  • suid / nosuid: suid와 sgid 비트 동작의 허용여부를 설정합니다.
  • dev / nodev: character나 block special device를 interpret 여부를 설정합니다.
  • defaults: 기본값을 사용. rw, suid, dev, exec, auto, nouser, async 와 같습니다.

 

※ 참고자료
https://help.ubuntu.com/community/Fstab
https://blog.dasomoli.org/linux-fstab%EC%9D%98-%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%98%B5%EC%85%98/ 
https://source.android.com/docs/core/architecture/kernel/mounting-partitions-early
https://source.android.com/docs/core/storage/config
https://storyerp.tistory.com/41
반응형