%20mit%20Montierung(2).png)
Ich habe eine Software, die eine Partition programmgesteuert aushängt (wenn sie nicht beschäftigt ist) und sie nach Abschluss der Arbeit erneut einhängt.
Wenn ich dies im Terminal ausführe:
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
Ich bekomme das hier rein /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
Also habe ich einen Mountinfo-Parser erstellt, um die Daten zum Wiederherstellen des Mounts zu erhalten, aber ich habe Probleme mit der Konvertierung der Mount-Optionen ( rw,relatime
) und der Super-Optionen (der letzte Teil in /mountinfo
: rw,sync,dirsync,
...) mit mountoptions
und data
:
int mount(const char *source, const char *target,
const char *filesystemtype, unsigned long mountflags,
const void *data);
Mein Ansatz bestand darin, die Mount-Optionen in die entsprechenden Optionen umzuwandeln mountflags
und spezielle Optionen direkt an zu geben data
, aber dann erhalte ich diesen Fehler:
[62857.390803] FAT-fs (sdb1): Unrecognized mount option "rw" or missing value
Also habe ich eine Funktion erstellt, um die Attribute in den Superoptionen zu kopieren, die genau den dateisystemspezifischen Daten entsprechen, und jetzt funktioniert es. Aber ich habe immer noch ein Problem: Wie kann ich beispielsweise festlegen, sync
ob dirsync
sie in den Mount-Optionen-Flags enthalten sind und ob sie nicht für vfat-spezifische Attribute bestimmt sind?
Wenn dies über die Einbindung in der Befehlszeile möglich ist, kann dies auch in der Befehlszeilenversion erfolgen, oder?
Antwort1
Antwort2
Also habe ich einen
mountinfo
Parser gemacht[…]
Besser ist es , die in der GNU C-Laufzeitbibliothek bereitgestellten setmntent()
und zu verwenden.getmntent()
Mein Ansatz war, die Mount-Optionen in die entsprechenden Optionen umzuwandeln
mountflags
und spezielle Optionen direkt andata
[…]
Was Sie tun müssen, ist, die mnt_opts
Ihnen von gegebenen zu nehmen getmntent()
und sie in flags
und zu verarbeiten data
. Der mount
Befehl aus dem util-linux
Paket stützt sich hierfür auf eine Bibliothek namenslibmount. Einiges davon ist tabellengesteuert und basiert auf langen Linux-spezifischen Tabellen.
Weiterführende Literatur
- "Die
mtab
Datei".Das Referenzhandbuch zur GNU C-Bibliothek. 2.23. Freie Software Foundation. 2016. - "Karel Zak (2012)."Einhängeoptionen".libmount-Referenzhandbuch. 2.21. Linux-Kernel-Archive.