1

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

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

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

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

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

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

1 ответ1

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 ...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .