Adding NFS to my Buffalo LinkStation

I’ve bought a second hand Buffalo LinkStation several years ago off ebay and although its not the most powerful NAS unit, it still serves the basic purpose of file sharing.  I also own a Lenovo ix2-dl and the one complaint I have about the buffalo unit is there is no NFS built in.  Years ago I had hacked in some other firmware but after having to reset the NAS, it defaulted back to the cifs only firmware.

  1. First step was to get in via ssh – Done using the acp_commander java code –
    1. After enabling ssh, I had to configure my .ssh/config like so to connect due to older ssh ciphers :Host buffalo-nas
      user root
      KexAlgorithms diffie-hellman-group1-sha1
      PubkeyAcceptedKeyTypes +ssh-rsa
  2. Then I copied over my ssh keys :
    # ssh-copy-id root@buffalo-nas
  3. This stuff survives a reboot because the root home directory all lives on /, however, since the ipkg package manager and the packages it installs live on /opt, which does not exist as part of the default OS, as soon as the NAS reboots, it loses NFS every time.
  4. Next step  install ipkg – the instructions from here worked fine
    run the following to retreive the list of available packages.
    # ipkg update
  5. From here, there are several nfs packages available.   despite the note not to use it, unfs3 finally worked for me
    # ipkg install unfs3
  6.  Then configure nfs … create my exports with my shares
    # cat /opt/etc/exports
    /mnt/array1/storage,sync)Then kill/restart nfs :
    # /opt/etc/init.d/S56unfsd
  7. Then I was able to see all the mounts and mount these from my newer fedora 35 and Ubuntu 21.10 machines$ showmount -e buffalo-nas
    Export list for buffalo-nas:
  8. Add to /etc/fstab
    # cat /etc/fstab |grep Pictures /Pictures nfs defaults,noatime,vers=3 0 0
  9. And mount
    # sudo mount /Pictures


Alternately, after setting up ssh and ssh keys, i finally rewrote this process as an ansible playbook [1]

The python installed on the linkstation is old, 2.6 and does not have zlib or pip or anything extra installed. You can force Anisble not to use zlib with the following config option :

$ cat ansible.cfg
module_compression = ‘ZIP_STORED’

$ cat hosts

And then its just a matter of running the playbook:

# ansible-playbook -v -v -v -i hosts buffalo.yml

The playbook is fairly well commented with plenty of checks –

1 – Playbook : buffalo.yml