On 10/25/2015 01:52 PM, Michael Biebl wrote:
Am 25.10.2015 um 12:59 schrieb Philippe Clérié:
On 10/23/2015 05:33 PM, Philippe Clérié wrote:
I'm running raspbian jessy on a rpi2 with an Adafruit GPS board. Gpsd
refuses to load on boot, but works just fine on manual start.
I am not yet familiar with systemd. Even if I've had to dig a bit to try
to understand how it works I'm still stumped at the moment, so I don't
know if there's a bug or I am doing something wrong.
There are 3 systemd units related to gpsd in /lib/systemd/system.
gpsd.service
gpsd.socket
gpsdctl@.service
My (weak) understanding is that systemd will start .socket which in turn
will launch .service. That does not seem to be happening.
Well, was there actually a request over the socket /var/run/gpsd.sock
which would trigger the start of the service?
If there is no such request from a client, the service will not be
started. The maintainer of gpsd apparently has setup gpsd so it is
started on-demand and apparently there is no demand from a client.
Looks like he did half the job then. I'm pretty sure my ntp daemon works
over /run/gpsd.sock. I'm also pretty sure nothing queries gpsd over the
local tcp socket on port 2947.
For what it's worth:
Edit /lib/systemd/system/gpsd.service:
[Install]
+ WantedBy=multi-user.target
Also=gpsd.socket
Then:
sudo systemctl enable gpsd.service
sudo reboot
And gpsd gets loaded.
I don't know if it is the correct fix but that seems to work.
Editing files in /lib/systemd/system/gpsd.service is not a good idea,
since they will be overwritten on the next package update.
It's better to make a copy of that file as
/etc/systemd/system/gpsd.service and make your changes there, or simply
extend the service file with the desired changes using a drop-in snippet:
mkdir /etc/systemd/system/gpsd.service.d/
echo -e "[Install]\nWantedBy=multi-user.target" >
/etc/systemd/system/gpsd.service.d/local.conf
You can pick the names of that conf file as you like.
Just read something about that. I had planned on looking into it
sometime this week. Thanks for the tip.
systemd in testing/unstable has a nice shortcut here:
Try systemctl edit foo.service (creates a drop-in in /etc)
or systemctl edit --full foo.service (creates a full copy in /etc)
--
Philippe
------
The trouble with common sense it that it is so uncommon.
<Anonymous>