%20com%20montagem(2).png)
Eu tenho um software que desmontará uma partição programaticamente (se não estiver ocupada) e a montará novamente depois que todo o trabalho estiver concluído.
Se eu executar isso no terminal:
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
Eu entendo isso /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
Então fiz um analisador mountinfo e para obter os dados para restaurar a montagem, mas estou tendo dificuldades para converter opções de montagem ( rw,relatime
) e super opções (a última parte em /mountinfo
: rw,sync,dirsync,
...) com mountoptions
e data
:
int mount(const char *source, const char *target,
const char *filesystemtype, unsigned long mountflags,
const void *data);
Minha abordagem foi converter as opções de montagem nas opções apropriadas mountflags
e fornecer opções especiais diretamente para data
, mas recebo este erro:
[62857.390803] FAT-fs (sdb1): Unrecognized mount option "rw" or missing value
Então criei uma função para copiar os atributos nas super opções que apenas correspondem aos dados específicos do sistema de arquivos e agora funciona. Mas ainda tenho um problema: como posso definir, por exemplo, sync
e dirsync
se eles não estão nos sinalizadores de opções de montagem e se não são para atributos específicos do vfat?
Se pode ser feito através da montagem da linha de comando também pode ser feito na versão da linha de comando, certo?
Responder1
Responder2
Então eu fiz um
mountinfo
analisador[…]
É melhor usar setmntent()
e getmntent()
que são fornecidos na biblioteca de tempo de execução GNU C.
Minha abordagem foi converter as opções de montagem nas apropriadas
mountflags
e fornecer opções especiais diretamente paradata
[…]
O que você precisa fazer é pegar o mnt_opts
by fornecido getmntent()
e processá-lo em flags
e data
. O mount
comando do util-linux
pacote depende de uma biblioteca para isso, chamadamontagem da biblioteca. Algumas delas são baseadas em tabelas, a partir de longas tabelas específicas do Linux.
Leitura adicional
- "O
mtab
arquivo".O Manual de Referência da Biblioteca GNU C. 2.23. Fundação de Software Livre. 2016. - Karel Zak (2012). "Opções de montagem".Manual de referência do libmount. 2.21. Arquivos do Kernel Linux.