HAOS Apps – Mount It

Home Assistant OS · Mount It Add-on

커스텀 마운트 옵션 패치 가이드

로컬 애드온으로 fork하여 vfat 마운트 옵션(fmask/dmask/utf8/shortname 등)을 직접 지정하는 방법

대상 버전: v1.0.1 원본 저장소: EnderDragonEP/HomeAssistant-Apps 패치 파일: rootfs/etc/s6-overlay/s6-rc.d/init-mount/run

01 배경

Mount It 애드온의 config.yamlmount_unlabeled, specific_label, mount_location 등 몇 가지 옵션만 제공하며, vfat/exfat 마운트 시 사용할 raw mount 옵션(fmask, dmask, utf8, shortname, errors 등)을 지정하는 설정 항목은 없다. 해당 옵션들은 init-mount 서비스의 run 스크립트 안에 하드코딩되어 있어, UI/config만으로는 변경할 수 없다.

→ 애드온 소스를 로컬로 가져와 스크립트를 직접 수정하고, HAOS의 로컬 애드온 기능으로 설치하는 방식으로 해결한다.

02 목표 마운트 커맨드

mount -t vfat -o rw,nosuid,relatime,fmask=0000,dmask=0000,utf8,shortname=mixed,errors=remount-ro /dev/mmcblk0p1 /mnt/MP3CARD
옵션현재 (원본)변경 후
rw기본값 (적용됨)동일
nosuid,relatime적용됨동일
fmask / dmaskumask=000으로 통합 처리fmask=0000,dmask=0000 개별 지정
utf8미지정추가
shortname=mixed미지정추가
errors=remount-ro미지정추가

03 수정 대상 코드

파일 경로:

mountit/rootfs/etc/s6-overlay/s6-rc.d/init-mount/run

mount_drive() 함수 내 파일시스템 타입별 옵션 분기(case) 구문을 수정한다.

-    exfat|vfat|msdos)
-        bashio::log.warning "  $mdisk — $fstype (experimental, no ACL support)"
-        options="${options},umask=000" ;;
+    vfat|msdos)
+        bashio::log.warning "  $mdisk — $fstype (experimental, no ACL support)"
+        options="${options},fmask=0000,dmask=0000,utf8,shortname=mixed,errors=remount-ro" ;;
+    exfat)
+        bashio::log.warning "  $mdisk — $fstype (experimental, no ACL support)"
+        options="${options},umask=000" ;;
주의 utf8shortname=mixed는 vfat/msdos 드라이버 전용 옵션이며 exfat 드라이버는 이를 지원하지 않는다. 원본처럼 exfat|vfat|msdos를 하나로 묶으면 exfat 마운트 시 옵션 오류로 실패할 수 있으므로, 반드시 vfat|msdosexfat을 분리해야 한다.

04 적용 절차

  1. HAOS에 SSH 접속

    SSH & Web Terminal 애드온을 통해 접속한다.

  2. 소스 클론 및 로컬 애드온 폴더 생성

    cd /addons
    git clone https://github.com/EnderDragonEP/HomeAssistant-Apps.git temp-mountit
    mkdir -p mountit_custom
    cp -r temp-mountit/mountit/* mountit_custom/
    rm -rf temp-mountit
  3. config.yaml 수정 — 이름/slug 변경

    원본 스토어 버전과의 충돌을 막기 위해 이름과 slug를 변경한다.

    name: "Mount It (KR)"
    slug: mountit_kr
  4. run 스크립트 패치

    init-mount/run 파일에서 02번 섹션의 diff대로 case 구문을 수정한다.

  5. 원본 스토어 버전 제거

    Settings → Add-ons → Mount It → Uninstall

  6. 로컬 애드온 인식 및 설치

    Settings → Add-ons → Add-on Store → 우측 상단 ⋮ → Check for updates → 하단 Local add-ons 섹션에서 설치 (로컬 빌드로 몇 분 소요)

  7. 설정 및 실행

    기존과 동일하게 옵션(mount_location, specific_label 등) 설정 → Protection mode 해제 → Start

05 검증

애드온 시작 후 SSH에서 실제 마운트 옵션이 반영됐는지 확인한다.

mount | grep MP3CARD

출력에 fmask=0000,dmask=0000,utf8,shortname=mixed,errors=remount-ro가 포함되어 있으면 정상 적용된 것이다.

06 유지보수 참고사항

기억할 점 로컬 애드온으로 전환한 이후에는 원본 저장소가 업데이트되어도 자동으로 반영되지 않는다. 향후 새 버전이 필요하면 GitHub에서 최신 소스를 다시 받아 03번 섹션의 패치를 재적용해야 한다.