[yocto] systemd - how do I wait for a driver to load?

Chris Tapp opensource at keylevel.com
Thu Aug 28 09:57:00 PDT 2014


On 27 Aug 2014, at 08:46, Sven Ebenfeld <sven.ebenfeld at gmail.com> wrote:

> 
> 
> Am 26.08.2014 22:51, schrieb Chris Tapp:
>> 
>> On 26 Aug 2014, at 21:02, Sven Ebenfeld <sven.ebenfeld at gmail.com> wrote:
>> 
>>> You should look at  "ConditionPathExists=" Options of systemd-units.
>> 
>> Thanks, that looks like it would do the job. I was hoping not to hard code paths as they may change if a configuration file is changed, but...
>> 
>>> Otherwise if udev is loading your device module, you could add the
>>> device-unit to "Requires=" option.
>> 
>> This sounds better. Is there an easy way to tell if udev did load the module? There's nothing obvious in the syslog.
> 
> If you didn't load the module by hand it's probably udev. If you didn't
> run modprobe or insmod. Then you should try to create a device-unit for
> the device.
> 
> For /dev/dvb/adaptor the unit should probably be something like
> dev-dvb-adaptor.device .

Thanks. I've now got a udev rule firing when the device loads.

I'm using this to create a device alias (SYMLINK) so I can get consistent names, and this is working great.

I've added TAG+="systemd" to the rule and I'm getting a .device generated automatically when the driver loads. However, the name for this isn't friendly (lots of bus id components). Is there a way to create my own name as my service doesn't want to know where the device is on the bus?

I've tried adding something like ENV{SYSTEMD_WANTS}="some-new-name.device" - this also gets created, but it never becomes active (and can't be manually started).

> Am 26.08.2014 21:52, schrieb Chris Tapp:
>>>> I've got a service running under systemd that will only start once a kernel module has loaded and created its /dev/dvb/adaptor nodes.
>>>> 
>>>> Unfortunately, it doesn't load until after the service has failed and gone into an error state due to too many restarts.
>>>> 
>>>> I could "fix" this by increasing the restart interval, but is there a way of adding a dependancy on the kernel module?
>>>> 
>>>> --
>>>> 
>>>> Chris Tapp
>>>> opensource at keylevel.com
>>>> www.keylevel.com
>>>> 
>>>> 
>>>> 
>>>> 
>> 
>> --
>> 
>> Chris Tapp
>> opensource at keylevel.com
>> www.keylevel.com
>> 
>> 
>> 
>> 

--

Chris Tapp
opensource at keylevel.com
www.keylevel.com







More information about the yocto mailing list