I am setting up quota on my Linode server running Ubuntu 16.10, and I get the following error
Cannot stat() mounted device /dev/root: No such file or directory
So to fix this, I reached this thread for the fix which is done by adding
ln -s /dev/xvda /dev/root /etc/init.d/quota restart
to the
/etc/rc.local
. But Ubuntu 16.10 doesn’t usesrc.local
anymore instead uses systemd. What is the alternative forrc.local
, How can I run the above commands on startup?Also I enabled the service using
systemctl enable rc-local.service
but it didn’t work for me. Any lead would be appreciated.
Answer
Intro
I think you should not create a new service as suggested in the link by George.
The rc-local.service
already exists in systemd and the service file suggests that the rc.local
, if it exists and is executable, gets pulled automatically into multi-user.target
.
So no need to recreate or force something that is just done in another way by the systemd-rc-local-generator
.
One solution
A quick solution (I don’t know if that’s the canonical way):
In a terminal do:
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
sudo reboot
After that the rc.local
will be called upon system startup. Insert what you like.
Background
If you do in a terminal:
sudo systemctl edit --full rc-local
You can see that the head comment contains lines such as:
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
This indicates, that in this system, if there is a file called /etc/rc.local
which is executable, then it will be pulled into multi-user.target automatically. So you just create the according file (sudo touch...
) and make it executable (sudo chmod +x ...
).
Attribution
Source : Link , Question Author : Saurabh Sharma , Answer Author : Jan