Linux 上通过网络传输块设备和字符设备

Linux 上通过网络传输块设备和字符设备

是否存在通过网络共享块或字符设备的通用方法?

所有相关问题都已解决,并给出了具体答案,例如:如果您想在主机之间共享磁盘,请使用 NFS、SMB、iSCSI 或 AoE。如果您想共享电视调谐器或 WebCam,请使用 mplayer 或 VLC 进行流式传输。或者,如果您想将本地 USB 中继到另一台主机,请使用 USBIP。

但是,如果我想共享 LPT、RS232、音频、混音器或电视调谐器,并具有自然切换频道的能力(我的意思是中继 ioctl),该怎么办?

我认为这是通过网络共享任何基于块或字符的设备的好的解决方案,以避免各种特定于应用程序的解决方案。

看起来实现起来并不困难。Linux 中唯一没有“官方”包含的工具是 BUSE(用于 UserSpacE 的块设备)。

这是该解决方案无法实施的唯一原因吗,或者还有其他可能破坏功能的因素?

答案1

您可以与“nbd”共享区块

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

我曾经尝试过通过 Samba 播放声音;那是很久以前的事情了,当时声音还在使用原始块(在 ALSA 流行之前)。因此,Samba 可能仍然适用于某些事情。如果我没记错的话,我还能够通过 Samba 直接读取 CDROM,但从记忆中,写入 CD 失败了。

我对字符没有解决方案。

由于 LPT 使用 DMA,因此无法通过网络共享。

UART(串行)可以使用 NBD。您可能需要本地更改端口配置;但流可以通过 nbd 传输。

对于声音,在 Alsa 之前,Samba 已经做到了。最近有多个项目处理它;​​dmix 几乎不做这件事,但可以尝试 JACK、NAS、Pulseaudio。

电视调谐器,尝试 samba,但可能会失败。与其尝试共享视频设备节点,不如尝试共享 USB 设备;特别是,“USB Wireless”项目在 Linux 上有可以处理以太网封装的实现。或者 USBIP。共享设备节点要困难得多。

网络摄像头的答案相同,除非您尝试共享视频流(vlc,mplayer,ffmpeg ...)

相关内容