Como montar um sistema de arquivos por 2 sistemas operacionais simultaneamente?

2

Eu estava pensando, é possível ter o meu Raspberry Pi montar o SD que também é montado por uma câmera digital?

Eu tenho um cenário em que tiro fotos com relativa rapidez (Raspberry Pi aciona o obturador) e, às vezes, as fotos são removidas do buffer antes de terminarem no cartão SD. Então, eu gostaria de verificar o conteúdo do cartão SD em cada disparo do obturador para ter certeza de que a foto foi tirada, então a montagem seria somente de leitura, então talvez isso possa ser feito com segurança?

Talvez a resposta seja cabo de extensão do cartão SD ?

Eu já comprei o cartão SD Transcend sem fio, mas a pesquisa do conteúdo do diretório não é confiável e pode ser lenta.

Dmitry Grinberg, a pessoa que hackeou o cartão SD Transcend Wifi afirma que há linux runnig no cartão SD, e que o armazenamento do SD é montado simultaneamente por linux embutido em SD e por câmera digital (provavelmente algum tipo de linux também). Ele tem suas preocupações sobre dois dispositivos que montam o mesmo armazenamento.

That is to say two operating systems (linux in the card and whatever is connected to it externally) both have the same FAT32 filesystem mounted read-write. If this does not scare you, it should - the external filesystem can cache reads and buffer writes at will, so no matter how clever the internal driver is, it can never have the whole picture. The lesson here is do NOT write to /mnt/sd without carefully considering the repercussions.

Gostaria de saber se algo semelhante poderia ser feito entre o raspberry pi e a câmera digital.

Atenciosamente, Vlatko

    
por Vlatko 24.04.2015 / 12:06

2 respostas

4

A única maneira de montar um dispositivo de bloco em mais de um sistema ao mesmo tempo é se o dispositivo de bloco contiver um sistema de arquivos projetado para essa finalidade, como OCFS2 . Sistemas de arquivos "normais" como ext4 ou vfat não podem suportar isso. Como a câmera digital quase certamente suporta apenas vfat como um tipo de sistema de arquivos, isso não é possível.

Existem alguns produtos que existem no mercado que afirmam fazer isso (como cartões SD com wi-fi), mas eles são estupidamente feios hacks. Eles fazem truques como tentar detectar quando a câmera termina de gravar um arquivo, verificando se os dados JPEG no arquivo estão completos e, em seguida, esperando que a câmera pare de acessar o arquivo, o que nunca é garantido. É possível que esses produtos funcionem para você, mas também é possível que eles não façam nada ou corrompam seus dados horrivelmente. YMMV.

    
por 24.04.2015 / 16:12
2

@ A resposta da Celada está correta, mas existem maneiras de fazer o que você quer se você estiver disposto a brincar com o fogo e correr o risco de corromper seus dados.

Primeiro, o segundo sistema DEVE montar o sistema de arquivos somente leitura . Se você não fizer isso, você corromperá o sistema de arquivos. Você já parece saber disso.

Em segundo lugar, qualquer tentativa de acessar o sistema de arquivos do segundo sistema está indo para estar desatualizada. O segundo sistema sempre "verá" o sistema como foi em algum momento no passado, devido ao armazenamento em cache. Você não verá atualizações no sistema de arquivos - novos arquivos, exclusões, arquivos crescendo à medida que são gravados.

Mas, se você deixar cair caches em seu segundo sistema, poderá "atualizar" a visão do segundo sistema sobre o sistema de arquivos "compartilhado":

echo 3 > /proc/sys/vm/drop_caches

Bonita? Não, Kludgey? Certamente. Especialmente para sistemas de arquivos não projetados para serem compartilhados no nível do dispositivo.

Mas, novamente, o sistema de arquivos QFS de alto desempenho da Oracle faz isso em sua configuração "multireader", em que um único sistema de arquivos pode ser lido por muitos hosts:

link

Se você puder encontrar a fonte on-line, a Sun Microsystems originou de forma aberta o código básico do sistema de arquivos QFS antes de ser adquirida pela Oracle.

    
por 25.04.2015 / 22:11