Automount of NFS-Shares
In most domestic installation nowadays there are several computers in use. Each one with a special place for a distinct kind of media. A desktop pc has the pictures from last holiday. The videos are already converted and placed on a NAS. Recorded videos from several VDRs are distributed around the house. How fine would it be to have access to all of these everytime. It could be done by sharing them across the network. But now the problems begin. NFS-static mounts are only established during startup of a workstation. But what if the server is not ready at the time. Autofs-based mounts circumvince that. Mounts are only established as they are needed by the client. But what if the server shuts down or the server becomes available after the first attempt to access. All these solution have a general problem: they do not really take into account what the server actually offers. The definitions are made on the client.
Insertion of a new computer into my landscape forces me to reconfigure my complete home-based installation. To use it I have to change each client definition. This is not what I want to.
Here comes a new idea originally raised from Apple and called Zeroconf. The specification is free and a Linux implementation is available. It's called Avahi. This vdr addon now implements support for avahi for vdr.
The following howto should provide information how to use it with vdr, install it and make local adaptations. The implementation was done on yaVDR. But it is usable on any debian-based vdr installation.
How it works
Each host holding some interesting data that could be shared has to broadcast its services. This can simply be achieved by a text-based service definition and a daemon that performs the broadcasting. Service-definition files are placed in /etc/avahi/service. The format is explained later. The broadcast is done from avahi-daemon which is an installation dependency of the addon and should be started automatically.
The addon comes with a set of predefined services each exporting a subdirectory of /srv. /srv should be exported for NFS-usage via /etc/exports which is the standard for yaVDR. Other types of VDR-installation should adapt the service definitions to local conditions. Example entry in /etc/exports could be:
/srv *(rw,sync,no_subtree_check,all_squash)
Everything that should be necessary on the client is starting the script avahi-mounter. The addon comes with an upstart-definition that should do that automatically. If not check with:
service avahi-mounter start
that it's running.
Installation
Installation is easy. Provided that you already have yaVDR in your installation repository list a:
sudo apt-get install vdr-addon-avahi-mounter
should do everything for you. In case you embarrasingly do not have yaVDR in your repository list you can find more info here:
launchpad.net/~yavdr/+archive/testing-vdr
Note that this installation has to be done uniquely on both server and client. If the client should not do any mounts the script has to be configured for that (see Configuration).
After a restart of the workstation the mounts should be there. A good tool for analyzing is avahi-discover (part of avahi-tools, should already be installed). It gives you a list of all exposed services on the network like this:

Services
Every path on your computer that should be shareable by others is called a service and is described in a distinct file. The addon package already comes with a set of predefined services. The description is done in a xml-based file like this:
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">Recordings on %h</name>
<service>
<type>_nfs._tcp</type>
<port>2049</port>
<txt-record>path=/srv/vdr/video.00</txt-record>
<txt-record>subtype=vdr</txt-record>
</service>
</service-group>
This is the service description of the standard (yaVDR-) video directory. It is placed in /etc/avahi/services and the filename must end with ".service". For one services adjust the parameter accordingly.
Parameter | Description |
---|---|
name | Unique name for the service. The name is not used from yaVDR, but usefull for problem detection, e.g. with avahi-discover. The wildcard "%h" is replaced with the hostname. |
type, port | Standard type and port parameter. Do not change. |
path | Path to the directory that should be exposed to the network. |
subtype | Subtype of the service. Significant subtypes for yaVDR are:
|
Configuration
The are only a few configuration options supported at the moment. The default configuration is placed in /etc/default/avahi-mounter. Just copy the file to
/var/lib/vdr/.avahi-mounter
an make your changes there. Options are:
Parameter | Description |
---|---|
enabled | The script is started by upstart. The daemon can be disabled here. Usefull for pure server installations. |
media | Base path for the mounts. |
vdr | Base path for links to mounts of subtype vdr. |
Copyright © 2010 yaVDR. This page was last updated on 2011-03-08.