如何以一种方式共享光驱,让客户认为它是本地驱动器?
2025-09-08 17:09:43 世界杯北京我认为你可以使用网络块设备(NBD)来实现你想要的功能。在wikipedia页面上有提到一个叫做nbd的工具。它由客户端和服务器组件组成。
示例
在这个场景中,我正在为我的Fedora 19笔记本电脑(服务器)设置一个CDROM,并将其共享给一个Ubuntu 12.10系统(客户端)。
安装
$ apt-cache search ^nbd-
nbd-client - Network Block Device protocol - client
nbd-server - Network Block Device protocol - server
$ sudo apt-get install nbd-server nbd-client
共享一张光盘
现在回到服务器(Fedora 19),我使用它的软件包管理器YUM做类似的事情。完成后,我插入一张光盘,并运行以下命令将其共享为块设备:
$ sudo nbd-server 2000 /dev/sr0
** (process:29516): WARNING **: Specifying an export on the command line is deprecated.
** (process:29516): WARNING **: Please use a configuration file instead.
$
快速检查一下是否正在运行:
$ ps -eaf | grep nbd
root 29517 1 0 12:02 ? 00:00:00 nbd-server 2000 /dev/sr0
root 29519 29071 0 12:02 pts/6 00:00:00 grep --color=auto nbd
挂载CD
现在回到Ubuntu客户端,我们需要使用nbd-client连接到nbd-server,就像这样:
$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes
我们可以确认,在Ubuntu系统上现在有一个块设备,使用lsblk命令可以查看到。
$ sudo lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
sda1 8:1 0 243M 0 part /boot
sda2 8:2 0 1K 0 part
sda5 8:5 0 465.5G 0 part
ubuntu-root (dm-0) 252:0 0 461.7G 0 lvm /
ubuntu-swap_1 (dm-1) 252:1 0 3.8G 0 lvm [SWAP]
sr0 11:0 1 654.8M 0 rom
nbd0 43:0 0 643M 1 disk
nbd0p1 43:1 0 643M 1 part
现在我们安装它:
$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
成功了吗?
悬念让我着急不已,我们终于起飞了:
$ sudo ls /mnt/
EFI GPL isolinux LiveOS
我在 Fedora 19 笔记本电脑上挂载了 CentOS LiveCD 的内容,并成功将其作为网络块设备挂载到 Ubuntu 上。
自动播放和自动挂载?
在上述设置中,我不得不手动挂载 DVD。
在调查这种方法是否可以实现自动播放和自动挂载时,Ubuntu 的自动播放不起作用,但是当我弹出磁盘时,nbd-client 和 nbd-server 仍然保持连接。当我重新插入 DVD 时,我能够在 Ubuntu 上运行 mount 命令,成功重新挂载 DVD。
因此,我认为您可以在 Ubuntu 上添加 UDEV 规则来检测此更改并自动执行自动挂载/自动播放。虽然我没有尝试过所有操作,但我没有看到任何可能导致它无法工作的问题。