Dispositivo de bloco e char sobre rede no linux

1

Existe uma maneira genérica de compartilhar um dispositivo de bloco ou caractere pela rede?

Todas as questões relacionadas resolvidas com respostas específicas como: se você quiser compartilhar o disco entre o host, use NFS, SMB, iSCSI ou AoE. Se você quiser compartilhar o sintonizador de TV ou WebCam, faça stream deles com o mplayer ou o VLC. Ou use USBIP se você quiser retransmitir o usb local para outro host.

Mas e se eu quiser compartilhar LPT, RS232, áudio, mixer ou sintonizador de TV com capacidade de mudar de canal naturalmente (quero dizer retransmitindo ioctl)?

Acho que é uma boa solução para compartilhar qualquer dispositivo baseado em blocos ou caracteres na rede, para evitar várias soluções específicas de aplicativos.

Parece que não é tão difícil de conseguir. A única ferramenta não incluída no linux "oficialmente" é o BUSE (Block device for UserSpacE).

Esta é a única razão pela qual esta solução não foi implementada ou existe algum outro fator que possa quebrar a funcionalidade?

    
por Dankó Dávid 07.11.2015 / 14:39

1 resposta

1

Você pode compartilhar blocos com "nbd"

ls -l /dev/ | grep -e "^b"

Eu tinha conseguido um para tocar som no samba; foi há muito tempo atrás, quando o som ainda estava usando blocos brutos (antes que a ALSA se tornasse popular). Então, o samba ainda pode funcionar para algum tipo de coisa. IIRC, eu também tenho sido capaz de ler CDROMs diretamente via samba, mas da memória, escrever CD falhou.

Não tenho solução para caracteres.

O LPT não pode ser compartilhado pela rede porque usa o DMA.

O UART (serial) pode, usando o NBD. Você pode precisar mexer na configuração da porta localmente; mas o fluxo pode viajar por nbd.

Para o som, antes de Alsa, o Samba fez isso. Existem vários projetos recentes que lidam com isso; O dmix dificilmente faz isso, mas tente JACK, NAS, Pulseaudio.

Sintonizador de TV, experimente o samba, mas espere um fracasso. Em vez de tentar compartilhar o nó do dispositivo de vídeo, é melhor você tentar compartilhar o dispositivo USB; em particular, o projeto "USB Wireless" tem implementações no Linux que podem manipular o encapsulamento em ethernet. Ou USBIP. Compartilhando o nó do dispositivo, se muito mais difícil.

Mesma resposta para a webcam, a menos que você tente compartilhar o fluxo de vídeo (vlc, mplayer, ffmpeg ...)

    
por 08.01.2018 / 14:19