OpenWrtDocs

1. Intro

This HOWTO describes how to mount remote filesystems on your router, so that you can use files on remote machines as if they were stored locally.

2. Auto mount at boot

With all of these options, to have the filesystems auto mounted at boot, you will need to make the appropriate additions to /etc/fstab. You may need to create the file /etc/fstab on your system. None of the entries in your fstab will be mounted at boot. To do this, you will need to add an entry to your /etc/rc.d/S90custom-user-startup script to mount the entries in your fstab file. The below fstab example is specifically for NFS mounts. You will need to modify it according to your chosen mounting method. The S90custom-user-startup script should be the same no matter what mounting method you decide to use.

Example /etc/fstab using NFS

192.168.1.x:/remote/mount/point       /local/mnt/point      nfs     rsize=32768,wsize=32768,hard,udp,nolock

Example S90custom-user-startup

#!/bin/sh /etc/rc.common
START=90
# place your own startup commands here
#
# REMEMBER: You *MUST* place an '&' after launching programs you
#   that are to continue running in the background.
#
#   i.e.
#   BAD:  upnpd
#   GOOD: upnpd &
#
# Failure to do this will result in the startup process halting
# on this file and the diagnostic light remaining on (at least
# for WRT54G(s) models).
#
mount /local/mnt/point

3. CIFS

CIFS (Common Internet File System) is a network filesystem used mainly by Windows machines. Use it if you have Windows or Samba servers nearby.

You must first install the kmod-cifs package (kmod-fs-cifs for Kamikaze):

ipkg install kmod-cifs

Then load the cifs module:

insmod cifs

Note: this module is automatically loaded at boot after the kmod-cifs package is installed.

Then you can mount the remote filesystem:

mount -t cifs //my-pc/share /mnt/point -o unc=\\\\my-pc\\share,ip=192.168.1.100,user=john,pass=doe,dom=workgroup

This will mount the folder shared as share on the machine my-pc with the ip address 192.168.1.100 in the directory /mnt/point on the router. To connect to the machine my-pc, it will use the username john, the password doe and the domain / workgroup workgroup.

The unc=, ip= and pass= mount options are needed, because mount arguments are passed directly to the kernel, which has no way to guess the server ip address from its name or prompt you for a password.

The \ separator in unc= is escaped (\\) because it is interpreted by the shell. You must not escape it when adding a mount entry to /etc/fstab.

Note: Another format that works, and is a bit simpler is:

4. NFS

NFS (Network File System) is a network filesystem found on nearly all *nix systems. Use it if you have an NFS server nearby; but only if you trust the network path to be secure.

You must first install the kmod-nfs package (kmod-fs-nfs for Kamikaze):

ipkg install kmod-nfs

Then load the sunrpc, lockd and nfs modules:

insmod sunrpc
insmod lockd
insmod nfs

Note: these modules are automatically loaded at boot after the kmod-nfs package is installed.

Then you can mount the remote filesystem:

mount -t nfs 192.168.1.101:/share /mnt/point -o nolock

This will mount the folder /share exported by the machine with the ip address 192.168.1.101 in the directory /mnt/point on the router. The nolock will disable NFS file locking. If you really need file locking, you must install the portmap package and start the portmap daemon before trying to mount an exported filesystem without the nolock option.

5. SHFS - (Secure) SHell FileSystem

Shfs is a simple and easy to use Linux kernel module which allows you to mount remote filesystems using a plain shell (ssh) connection. When using shfs, you can access all remote files just like the local ones, only the access is governed through the transport security of ssh.

This is a preferred method over CIFS and NFS. They both suck when it comes to security. This matters heavily when accessing data over the internet. Shfs is really easy and you do not need anything except a shell and Perl on the remote side. You likely have Perl on an standard Linux box. So, you are ready to go.

Begin with installing the required packages:

ipkg install kmod-shfs shfs-utils

Then, load the shfs module into the running kernel.

insmod shfs

Now you are ready to mount your remote filesystem:

mkdir /some/local/mountpoint
shfsmount user@host:/remote/dir /some/local/mountpoint

Here are some more experienced ways of calling shfsmount (copied from the shfs user docs).

To specify another port:

shfsmount -P 2222 user@host /mnt/shfs

To specify another ssh option:

shfsmount --cmd="ssh -c blowfish %u@%h /bin/bash" user@host:/tmp /mnt/shfs/

To make mount survive temporary connection outage (reconnect mode):

shfsmount --persistent user@host /mnt/shfs

Longer transfers? Increase cache size (1MB cache per file):

shfsmount user@host /mnt/shfs -o cachesize=256

To enable symlink resolution:

shfsmount -s user@host /mnt/shfs

To preserve uid (gid) (NFS replace mode :-)):

shfsmount root@host /mnt/shfs -o preserve,rmode=755

To see what is wrong (forces kernel debug output too):

shfsmount -vvv user@host /mnt/shfs

Mount without password using identity file

shfsmount --cmd="ssh -i /identity/file/path %u@%h /bin/bash" user@host:/tmp /mnt/shfs/

See http://shfs.sourceforge.net/ for further details.

RemoteFileSystemHowTo (last edited 2008-04-12 20:37:59 by t3rror)

Almost all of these pages are editable, create an account and click the edit (Edit) button at the top of the page.