[x86-64] NFS kernel mounting NO WORKIE

  • I am attempting to update my trusty old x86 HTPC from an ancient version of OpenELEC that I've been running forever because it just worked and it was sufficient for my needs. Now however I'm trying to move to the latest LibreELEC (legacy PC edition) and I'm just not able to get NFS mounts to work following the instructions on this LibreELEC Wiki page:

    Mount Network Share

    I have noted that (in the case of NFS, at least) these are still the identical old instructions that I used on OpenELEC, years ago, to have the kernel mount my NFS volumes. So in theory this should all still work, but it ain't working. Here are the errors I'm getting:

    Apr 27 03:42:03 LibreELEC systemd[1]: Mounting storage-y.mount...

    Apr 27 03:42:03 LibreELEC mount[1420]: mount.nfs: rpc.statd is not running but is required for remote locking.

    Apr 27 03:42:03 LibreELEC mount[1420]: mount.nfs: Either use '-o nolock' to keep locks local, or start statd.

    Apr 27 03:42:03 LibreELEC mount[1420]: mount.nfs: an incorrect mount option was specified for /storage/y

    Apr 27 03:42:03 LibreELEC systemd[1]: storage-y.mount: Mount process exited, code=exited, status=32/n/a

    Apr 27 03:42:03 LibreELEC systemd[1]: storage-y.mount: Failed with result 'exit-code'.

    Apr 27 03:42:03 LibreELEC systemd[1]: Failed to mount storage-y.mount.


    (The above errors are in the systemd log, of course.)

    I've tried all of the obvious solutions to fix this problem and nothing is working, so I'm asking for guidance. Specifically I've tried "systemctl start rpc-statd" but that only produced the error "Failed to start rpc-statd.service: Unit rpc-statd.service not found.". Of course I also tried adding "-o nolock" to the Options= line in my storage-y.mount file, and that still produced errors & failure when I did "systemctl start storage-y.mount".

    I am at a loss and at an impasse. Any & all suggestions that might allow me to move forward would be appreciated.

    P.S. Just for context I should mention that, back in the day I actually did go to the trouble of actually measuring the performance of (a) SMB shares (they really suck, performance-wise) and (b) the in-built Kodi NFS client (not bad, but not great), and (c) kernel mounted NFS shares. Kernel mounted NFS outperformed the Kodi in-built NFS client by a significant margin, which is why I most definitely want to stick with them and get them working on a current LibreELEC release.

  • Investigate manual mounting of an NFS share from the console. Once you have that working .. translate the working config into the required systemd mount file options. Pay particular care to the NFS protocol versions being used because modern kernels (client) might make assumptions on infrastructure (server) supporting equally modern versions of NFS, and if SMB is unperformant you probably have old server hardware running old server software. In my experience SMB works fine unless the underlying network environment is poor, and the cure for that is always fixing the environment not swapping protocols /shrug

  • Good suggestion, however still no joy.

    From the root shell, this works perfectly:

    mount -t nfs -o nolock 192.168.1.2:/y /storage/y

    With the above, the volume gets mounted, no problem. So I put -o nolock on the Options= line in my storage-y.mount file, then I did:

    systemctl disable storage-y.mount

    (which I now know is necessary to clean out any possible prior cruft) and then, from the root shell I again tried:

    systemctl start storage-y.mount

    This resulted in the following error:

    Job failed. See "journalctl -xe" for details.

    Looking at the journaled relevant errors, I see:

    Apr 27 12:42:54 LibreELEC systemd[1]: Mounting storage-y.mount...
    Apr 27 12:42:54 LibreELEC mount[1211]: mount.nfs: rpc.statd is not running but is required for remote locking.
    Apr 27 12:42:54 LibreELEC mount[1211]: mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
    Apr 27 12:42:54 LibreELEC mount[1211]: mount.nfs: an incorrect mount option was specified for /storage/y
    Apr 27 12:42:54 LibreELEC kernel: nfs: Unknown parameter '-o nolock'
    Apr 27 12:42:54 LibreELEC kernel: nfs: Unknown parameter '-o nolock'
    Apr 27 12:42:54 LibreELEC kernel: nfs: Unknown parameter '-o nolock'
    Apr 27 12:42:54 LibreELEC systemd[1]: storage-y.mount: Mount process exited, code=exited, status=32/n/a
    Apr 27 12:42:54 LibreELEC systemd[1]: storage-y.mount: Failed with result 'exit-code'.
    Apr 27 12:42:54 LibreELEC systemd[1]: Failed to mount storage-y.mount.

    Here is my storage-y.mount file. It isn't complicated.

    [Unit]
    Description=nfs-y-script
    Requires=network-online.service
    After=network-online.service
    Before=kodi.service

    [Mount]
    What=192.168.1.2:/y
    Where=/storage/y
    Options=-o nolock
    Type=nfs

    [Install]
    WantedBy=multi-user.target

    I'm stuck. Any help would be appreciated.

    P.S. based on what you said I will no longer say uncomplimentary things about SMB, however I personally am already all set up on my primary file server with NFS (and lots of content), so I am certainly planning on sticking with that.


    P.P.S. Since the preferred/recommended (systemd) method of getting my NFS volume mounted on my LibreELEC machine doesn't seem to be working, could I accomplish essentially the same thing by just placing the command:

    mount -t nfs -o nolock 192.168.1.2:/y /storage/y

    which does work, into some file where it will always get executed on boot time?

    P.P.S. In the future, should LibreELEC ship with /usr/sbin/rpc.statd to provide another way around these issues? Looking on my Ubuntu deskptop system that daemon is only 0.08 mebibytes big, so not really too burdensome in the grand scheme of things.

    Edited once, last by ronbaby: Merged a post created by ronbaby into this post. (April 27, 2026 at 9:06 PM).

  • The Either use '-o nolock' to keep locks local, or start statd message comes from the underlying NFS libs but systemd knows whatever follows Options= is an option so you don't need to provide the -o prefix to nolock.

  • Ooof! Thank you! You hit the nail on the head. I removed the "-o " and now all is working.

    Who knew that the fix was so simple... but also not at all entirely obvious? (I guess I am just too literal. When somebody says "put options here" I assume they mean the whole thing.)

    OK, so, to close this thread out I'd like to just humbly suggest a couple of minor changes to that page that documents this whole procedure for setting up LibreELEC as an NFS client:

    1) Either put "nolock" on the example Options= line on that page or else include rpc.statd in future releases (or ideally, do both of the above, i.e. the "belt & suspenders" approach).

    2) Mention somewhere on that same page that if one happens to make a typo in one's /storage/.config/system.d/storage-<whatever>.mount file and if one then does the "systemctl enable" step that it is important (as I learned) to do a systemctl disable on the named file or else the old (erroneous) version of the storage-<whatever>.mount file will not get properly flushed.