Блок и символ устройства по сети на Linux

Есть ли общий способ поделиться блоком или символьным устройством по сети?

Все связанные вопросы решаются с конкретным ответом, например: если вы хотите разделить диск между хостами, используйте NFS, SMB, iSCSI или AoE. Если вы хотите поделиться ТВ-тюнером или веб-камерой, транслируйте их с помощью mplayer или VLC. Или используйте USBIP, если вы хотите передать локальный USB на другой хост.

Но что, если я хочу поделиться LPT, RS232, аудио, микшером или ТВ-тюнером с возможностью естественного переключения каналов (я имею в виду ретрансляцию ioctl)?

Я думаю, что это хорошее решение для совместного использования любых блочных или символьных устройств по сети, чтобы избежать различных решений для конкретных приложений.

Похоже, это не так сложно достичь. Единственный инструмент, официально не включенный в Linux, - это BUSE (блочное устройство для UserSpacE).

Это единственная причина, почему это решение не реализовано или есть какой-либо другой фактор, который может нарушить функциональность?

1 ответ

Вы можете поделиться блоками с "NBD"

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

Мне удалось воспроизвести звук над самбой; это было очень давно, когда в звуке все еще использовались необработанные блоки (до того, как ALSA стала популярной). Таким образом, самба все еще может работать для каких-то вещей. IIRC, я также смог читать CDROM напрямую через samba, но из памяти запись CD не удалась.

У меня нет решения для символов.

LPT не может быть разделен по сети, потому что он использует DMA.

UART (серийный) можно, используя NBD. Вам может понадобиться локально испортить конфигурацию порта; но поток может путешествовать через НБД.

Для звука, до Alsa, Самба сделала это. Есть различные недавние проекты, обращающиеся с этим; Вряд ли dmix это делает, но попробуйте JACK, NAS, Pulseaudio.

ТВ-тюнер, попробуйте самбу, но ожидайте сбоя. Вместо того, чтобы пытаться открыть общий доступ к узлу видеоустройства, лучше использовать общий доступ к USB-устройству; в частности, проект "USB Wireless" имеет реализации в Linux, которые могут обрабатывать инкапсуляцию через Ethernet. Или USBIP. Совместное использование узла устройства, если намного сложнее.

Тот же ответ для веб-камеры, если только вы не попытаетесь поделиться видео потоком (vlc, mplayer, ffmpeg ...)

Другие вопросы по тегам