Comment puis-je partager un lecteur optique d'une manière qui trompe le client en lui faisant croire qu'il s'agit d'un lecteur local?

10

Je suis dans une situation franchement ridicule où mon bureau a deux lecteurs optiques et mon media center n'en a pas (ni d'espace pour un). Avant de considérer quelque chose d'aussi extrême que l'achat d'un lecteur optique externe, je voudrais voir s'il existe un moyen de connecter mes lecteurs sur le réseau.

Les deux machines sont Ubuntu et elles ont déjà un partage NFS en place pour accéder aux médias depuis le bureau.

La raison pour laquelle je demande (plutôt que d'exporter / media / cdrom) est qu'un partage NFS monté ne ressemble pas à un périphérique de style CDROM sur la machine distante. C'est important pour moi car j'ai besoin que XBMC reconnaisse le lecteur en tant que tel pour qu'il puisse gérer les disques automatiquement et de manière appropriée.

Maintenant, je ne sais pas ce qui fait qu'un lecteur optique ressemble à un lecteur optique pour Ubuntu. Si je le savais, je saurais probablement ce que je devais faire. Je suppose qu'il y a une udevaction à chaud à un moment donné.

Existe-t-il un moyen de partager un périphérique de niveau bloc (par exemple /dev/sr0) pour permettre aux deux ordinateurs de le monter séparément ... J'ai l'impression de dégringoler dans le terrier du lapin et je peux voir toutes ces solutions massivement sur-conçues comme iSCSI et la virtualisation passthrough surgissant devant moi ... Il y a sûrement un moyen simple de partager quelques modes de conduite entre deux ordinateurs Ubuntu!

Oli
la source
Je ne sais pas si cela suffit: thegeekstuff.com/2009/02/… --- Je ne sais pas s'il exporte le spécial ioctlnécessaire au DVD. Je l'ai utilisé il y a des années pour une mauvaise idée d'échanger sur le net, puis j'ai oublié jusqu'à présent ... (meilleur lien: linux-mag.com/id/7118 )
Rmano
Les 2 méthodes que j'ai utilisées avec succès pour faire des choses similaires sont d'utiliser NFS et Samba, mais étant donné votre représentant, je suppose que vous connaissez NFS à coup sûr, et éventuellement en faisant cela via Samba. LMK si vous avez besoin d'aide supplémentaire.
slm
@slm Oui, il y a déjà du NFS entre les deux ordinateurs. J'ai ajouté le CD /media/cdromà nfs et l' ai monté à l'autre extrémité en tant que /media/cdrom(et je peux voir les fichiers) mais XBMC ne détecte pas de changement de support (il ne pense pas que le point de montage soit un DVD). Suis-je en train de faire quelque chose de stupide?
Oli
@Oli - OK, voyez mon A et faites-moi savoir si c'est ce que vous cherchez. Soit dit en passant, l'autre méthode que j'ai utilisée consiste à créer une image ISO du DVD, à la partager sur NFS, puis mount -o looplocalement sur d'autres ordinateurs.
slm

Réponses:

9

Je pense que vous pourriez être en mesure d'accomplir ce que vous voulez en utilisant des périphériques de blocage de réseau (NBD). En regardant la page wikipedia sur le sujet, il est fait mention d'un outil appelé nbd. Il est composé d'un composant client et serveur.

Exemple

Dans ce scénario, je configure un CD-ROM sur mon ordinateur portable Fedora 19 (serveur) et je le partage sur un système Ubuntu 12.10 (client).

installation
$ 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
partager un CD

Maintenant de retour sur le serveur (Fedodra 19), je fais une chose similaire en utilisant son gestionnaire de paquets YUM. Une fois terminé, j'insère un CD et exécute cette commande pour le partager en tant que périphérique de bloc:

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

Une vérification rapide pour voir s'il fonctionne:

$ 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
Montage du CD

Maintenant, de retour sur le client Ubuntu, nous devons nous connecter à l' nbd-serverutilisation nbd-clientcomme suit:

$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes

Nous pouvons confirmer qu'il y a maintenant un périphérique bloc sur le système Ubuntu utilisant 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 

Et maintenant nous le montons:

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
ça a marché?

Le suspense me tue et nous décollons:

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Il y a le contenu d'un LiveCD de CentOS que j'ai monté dans l'ordinateur portable Fedora 19 et que j'ai pu le monter en tant que périphérique de bloc du réseau sur Ubuntu.

Lecture automatique et montage automatique?

Dans la configuration ci-dessus, j'ai dû monter manuellement le DVD.

En étudiant la plausibilité de savoir si cette approche fonctionnerait avec la lecture automatique et le montage automatique, dès le départ, la lecture automatique d'Ubuntu ne fonctionne pas, mais la nbd-clientet est nbd-serverrestée en place lorsque j'ai éjecté le disque. Quand j'ai remis le DVD, j'ai pu exécuter la mountcommande sur Ubuntu, qui a remonté le DVD très bien.

Je suppose donc que vous pouvez coller une règle UDEV sur Ubuntu pour détecter ce changement et effectuer automatiquement le montage automatique / lecture automatique. Je ne vais pas tout essayer, mais je ne vois rien qui pourrait me faire penser que cela ne fonctionnera pas.

slm
la source
1
Excellentes instructions! Ce n'est pas parfait: mon logiciel peut toujours dire que ce n'est pas un lecteur de disque réel. Je suppose que ce ioctln'est pas parfaitement géré. Mais, j'ai pu faire ce travail sur deux machines archlinux avec zéro hoquet! (Archlinux a installé le client et le serveur ensemble en tant que 'nbd'.)
Expiation limitée
3

Cette méthode utilise également NBD mais utilise la nouvelle configuration de style à la place. Les seuls avantages sont que vous n'avez pas à démarrer le serveur manuellement et que vous ne recevez pas un avertissement de désapprobation laid.

Après avoir installé les packages nbd-serveret nbd-client, modifiez le fichier de configuration sur le serveur ( /etc/nbd-server/config) et assurez-vous qu'il ressemble à ceci:

[generic]
# If you want to run everything as root rather than the nbd user, you
# may either say "root" in the two following lines, or remove them
# altogether. Do not remove the [generic] section, however.
    user = nbd
    group = cdrom
    includedir = /etc/nbd-server/conf.d
    allowlist = true

# What follows are export definitions. You may create as much of them as
# you want, but the section header has to be unique.

[dvd]
    exportname = /dev/sr0
    readonly = true

Remarque: L' [dvd]étiquette ci-dessus est un en-tête de section et il peut s'agir de n'importe quel mot que vous souhaitez mettre entre crochets. Il est utilisé pour identifier ce partage particulier, alors assurez-vous d'utiliser un nom facile à utiliser et évident.

Après avoir enregistré les modifications dans le fichier de configuration, démarrez ou redémarrez le serveur nbd (exemple de redémarrage):

sudo service nbd-server restart

Ensuite, de retour sur la machine cliente, connectez-vous au serveur à l'aide de la commande:

sudo nbd-client -N dvd hostname /dev/nbd0

Remarque: remplacez-le dvdpar le nom que vous avez utilisé dans la configuration du serveur ci-dessus et hostnamepar le nom d'hôte de la machine serveur.

Enfin, il s'agit simplement de monter le nouveau périphérique de bloc partagé:

sudo mount /dev/nbd0 /mnt/
devius
la source
Si vous continuez à obtenir, Negotiation: ..Error: Server closed connection Exiting.commentez les deux useret les grouplignes /etc/nbd-server/config. Cela fait fonctionner nbd-serversous root qui a accès à votre/dev/sr0
Petr Újezdský