프로그래밍 방식으로 파티션을 마운트 해제하고(사용 중이 아닌 경우) 모든 작업이 완료된 후 다시 마운트할 수 있는 소프트웨어가 있습니다.
터미널에서 실행하는 경우:
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
그래서 mountinfo 파서를 만들어서 마운트를 복원하기 위한 데이터를 얻었는데, 마운트 옵션()과 슈퍼 옵션( rw,relatime
:...의 마지막 부분)을 사용하고 변환하고 있습니다./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
라이브러리 마운트. 이들 중 일부는 긴 Linux 특정 테이블에서 나오는 테이블 중심입니다.