COMO tornar o sistema Linux parecido com o USB Drive [closed]

0

Eu tenho um NAS personalizado construído a partir de uma linha de base do CentOS 6.5. Eu preciso que o armazenamento deste NAS seja acessível através de sua porta USB. Não consigo usar a conexão de rede. Meu celular pode fazer isso, tem que haver uma maneira de fazer uma caixa Linux fazer isso. Eu encontrei a seguinte pergunta semelhante: Posso fazer com que uma porta USB no meu computador Linux pareça um dispositivo de armazenamento em massa? que essencialmente diz que você não pode fazer isso, alegando que o dispositivo USB teria que estar no modo cliente. Isso não faz sentido, a solicitação é, na verdade, para uma implementação / manipulação diferente do modo do servidor. É claro que a modificação de algum tipo de driver é necessária, e acredito que existam baias de unidade externa disponíveis usando o BusyBox ou algo semelhante que já faz isso, mas não estou achando explicitamente o que é necessário para fazer isso.

    
por user1089933 12.04.2018 / 06:50

2 respostas

2

O USB foi originalmente projetado com uma topologia em forma de estrela: no centro, há um controlador host que gerencia o barramento inteiro. A partir daí, as conexões vão para fora para dispositivos e hubs , e ambos precisarão do controlador host para gerenciá-los ou nenhum tráfego acontecerá. Essencialmente, o controlador host é o mestre e todas as outras coisas no barramento são escravas.

Mudar apenas o software não é suficiente: o controlador host tem um tipo diferente de chip de interface USB do que qualquer um dos dispositivos escravos, e um controlador host precisaria de alterações de hardware para atuar como um dispositivo escravo.

Com o advento dos smartphones e de outros dispositivos móveis, isso foi considerado problemático e USB-On-The-Go A especificação foi desenvolvida. Com ele, foi introduzido um conceito de dispositivos de dupla função: isso exigia chips controladores controlados modificados que poderiam suportar os papéis mestre e escravo e um novo subprotocolo para negociar a troca da função de mestre de um dispositivo para outro.

Infelizmente, os chips controladores do host com os recursos USB-On-The-Go tendem a ser usados apenas em smartphones, tablets e outros dispositivos móveis, não em placas-mãe de desktop e servidor.

Se o seu NAS possuísse o hardware de porta USB que tinha a capacidade de funcionar como um dispositivo escravo, o assunto seria bastante simples: o kernel do Linux já tem suporte para USB do lado do dispositivo também (ao contrário do host mais comum suporte lateral). No entanto, eu não acho que o CentOS 6.x tenha esses recursos habilitados, então você pode ter que compilar um kernel personalizado com o subsistema "USB Gadget Support" habilitado. Dentro desse subsistema, você teria que habilitar o driver específico para o hardware USB do lado do dispositivo e o driver do lado do dispositivo para o protocolo USB Mass Storage.

Infelizmente não parece haver nenhum padrão de interface como UHCI / OHCI / EHCI / XHCI no lado do dispositivo: todos os designs de chip do controlador do lado do dispositivo parecem ser flocos de neve exclusivos e você precisa saber exatamente qual chip é usado em seu computador. NAS.

Uma vez resolvido o problema do driver, há mais um problema técnico: o acesso ao armazenamento em massa USB é um protocolo de baixo nível que acessa blocos individuais no dispositivo de armazenamento, muito parecido com o SATA; não no nível de arquivos como o NFS. Como resultado, o dispositivo NAS teria que interromper o compartilhamento e desmontar qualquer armazenamento apresentado via USB, já que o sistema que o acessa assumiria que tem controle total do sistema de arquivos do armazenamento USB e trataria todas as alterações feitas pelo dispositivo NAS. ou por qualquer outro dispositivo que acesse o NAS pela rede ao mesmo tempo que a corrupção do sistema de arquivos.

Uma maneira de superar esse problema seria executar um sistema de arquivos em cluster no armazenamento compartilhado por USB. Um sistema de arquivos em cluster (como GFS ou OCFS2) é projetado para esse tipo de acesso múltiplo, mas requer que todos os sistemas participantes cooperem e se comuniquem uns com os outros. Isso adiciona um pouco de complexidade extra. Outra forma seria não usar o protocolo USB Mass Storage, mas usar MTP (Media Transfer Protocol) USB ou sua versão mais simples, PTP (Picture Transfer Protocol) - ambos trabalham no nível do arquivo, não no nível do bloco, como Armazenamento em massa USB. Isso permitiria que o NAS mantivesse o controle geral do sistema de arquivos compartilhado enquanto o compartilhamento USB estivesse ativo, e assim permitiria que ele continuasse compartilhando o sistema de arquivos pela rede ao mesmo tempo.

    
por 12.04.2018 / 09:39
0

Se o hardware USB do seu NAS for compatível com o modo cliente USB, você poderá usar o Framework da API de gadgets Linux-USB (ou algo baseado nele).

    
por 12.04.2018 / 09:10