4

On my Raspbian (based on Debian Jessie), I need to start at boot rpcbind and nfs-common services because I need them to start autofs at boot for a NFS mount.

Since Debian Jessie now has moved to systemd, I want to know the best way to start those 3 services (rpcbind, nfs-commond, autofs) in the correct order to avoid issues.

If I manually mount the NFS share it works. And it also works when using the autofs service with rpcbind and nfs-common already up and running.

autofs uses a systemd unit script. About the other 2 services, should I make init.d scripts or do I have to create systemd unit files? How can I write them?

  • hint: the fact that Jessie moved by default to systemd, does not oblige you to move to now. I am giving it some more time. – Rui F Ribeiro Feb 15 '16 at 8:45
  • 1
    It should all just work, whether you use System V init or systemd, so you shouldn't need to write any scripts. autofs provides a systemd unit as you point out, and even though rpcbind and nfs-common don't (yet), their init.d scripts are taken into account by systemd. (I use all three and didn't need to fix anything after upgrading to Jessie and switching to systemd.) Is there a specific problem you're seeing? – Stephen Kitt Feb 15 '16 at 9:23
  • @StephenKitt I only need to be sure that rpcbind and nfs-common are loaded before autofs. It should be easier to do with systemd unit file since you can specify dependecies and so the correct order. But I never used systemd before and never wrote a systemd unit file, so I don't know how to do that the right way. Otherwise how is it possible to assure this with init.d? – Cheshire Cat Feb 15 '16 at 9:39
  • Have you tried it? With init.d, the order is defined by the BEGIN INIT INFO comments (Required-Start, Should-Start etc.). On my systems, running System V init or systemd, the scripts are automatically ordered such that rpcbind and nfs-common are started before autofs. – Stephen Kitt Feb 15 '16 at 10:07
  • @StephenKitt I tried your solution, so I used sudo update-rc.d rpcbind enable and sudo update-rc.d nfs-common enable. Only nfs-common starts at boot correctly but rpcbind not. So I tried also sudo update-rc.d rpcbind defaults but no way. The only workaround is to add service rpcbind start inside the /etc/rc.local script but it's not the proper way... Any suggestion? – Cheshire Cat Feb 17 '16 at 10:59
5

The reason for the problem is the lack of systemd configuration files. Base on a post by Matt Grant on debian-devel these are the steps you need to perform.

1. Create /etc/systemd/system/nfs-common.service

cat >/etc/systemd/system/nfs-common.service <<\EOF
[Unit]
Description=NFS Common daemons
Wants=remote-fs-pre.target
DefaultDependencies=no

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/nfs-common start
ExecStop=/etc/init.d/nfs-common stop

[Install]
WantedBy=sysinit.target
EOF

2. Create /etc/systemd/system/rpcbind.service

cat >/etc/systemd/system/rpcbind.service <<\EOF
[Unit]
Description=RPC bind portmap service
After=systemd-tmpfiles-setup.service
Wants=remote-fs-pre.target
Before=remote-fs-pre.target
DefaultDependencies=no

[Service]
ExecStart=/sbin/rpcbind -f -w
KillMode=process
Restart=on-failure

[Install]
WantedBy=sysinit.target
Alias=portmap
EOF

3. Create /etc/tmpfiles.d/rpcbind.conf

cat >/etc/tmpfiles.d/rpcbind.conf <<\EOF
#Type Path        Mode UID  GID  Age Argument
d     /run/rpcbind 0755 root root - -
f     /run/rpcbind/rpcbind.xdr 0600 root root - -
f     /run/rpcbind/portmap.xdr 0600 root root - -
EOF

4. Configure the services to run at startup

systemctl enable rpcbind.service
systemctl enable nfs-common

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.