%EC%99%80%20%EB%A7%88%EC%9A%B4%ED%8A%B8(2).png)
프로그래밍 방식으로 파티션을 마운트 해제하고(사용 중이 아닌 경우) 모든 작업이 완료된 후 다시 마운트하는 소프트웨어가 있습니다.
터미널에서 이것을 실행하면:
sudo mount /dev/sdb1 /mnt/fat32 -o sync,dirsync,rw,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro -t vfat
나는 이것을 얻습니다 /proc/self/mountinfo
:
100 24 8:17 / /mnt/fat32 rw,relatime shared:61 - vfat /dev/sdb1 rw,sync,dirsync,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro
rw,relatime
그래서 마운트를 복원하기 위한 데이터를 얻기 위해 mountinfo 파서를 만들었지만 마운트 옵션( )과 슈퍼 옵션(마지막 부분 /mountinfo
: rw,sync,dirsync,
...) 을 mountoptions
및 다음으로 변환해야 합니다 data
.
int mount(const char *source, const char *target,
const char *filesystemtype, unsigned long mountflags,
const void *data);
내 접근 방식은 마운트 옵션을 적절하게 변환 mountflags
하고 특수 옵션을 에 바로 제공하는 것이 data
었지만 다음 오류가 발생합니다.
[62857.390803] FAT-fs (sdb1): Unrecognized mount option "rw" or missing value
그래서 슈퍼 옵션의 속성을 복사하여 파일 시스템 특정 데이터와 일치시키는 기능을 만들었고 이제는 작동합니다. 하지만 여전히 문제가 있습니다. 예를 들어 마운트 옵션 플래그에 없고 vfat 특정 속성에 대한 것이 아닌 경우 어떻게 설정할 수 sync
있습니까 dirsync
?
명령줄 마운트를 통해 만들 수 있다면 명령줄 버전에서도 만들 수 있겠죠?
답변1
답변2
mountinfo
그래서 파서를 만들었습니다.[…]
GNU C 런타임 라이브러리에서 제공되는 것을 setmntent()
사용 하는 것이 더 좋습니다 .getmntent()
내 접근 방식은 마운트 옵션을 적절하게 변환
mountflags
하고 특별한 옵션을 바로 제공하는 것이었습니다.data
[…]
당신이 해야 할 일은 mnt_opts
당신에게 주어진 것을 가져다가 및 getmntent()
으로 처리하는 것 입니다 . 패키지의 명령은 이를 위해 다음과 같은 라이브러리에 의존합니다.flags
data
mount
util-linux
libmount. 그 중 일부는 긴 Linux 관련 테이블에서 나온 테이블 기반입니다.