取付ベース(8) 取付ベース付(2)

取付ベース(8) 取付ベース付(2)

プログラムでパーティションをアンマウントし(使用していない場合)、すべての操作が完了した後に再マウントできるソフトウェアがあります。

端末で実行している場合:

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:...の最後の部分)を使用して変換しています。/mountinforw,sync,dirsync,mountoptionsdata

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

いくつかのパラメータが提供されていますmount(8)mountflagsパラメータで指定されたフラグに変換されます。mount(2):

  • syncはいMS_SYNCHRONOUS
  • dirsyncはいMS_DIRSYNC
  • relatimeはいMS_RELATIME
  • rwデフォルトなので指定できroませんMS_RDONLY

おすすめ記事