Re: [yocto] systemd - how do I wait for a driver to load?
On 27 Aug 2014, at 08:46, Sven Ebenfeld sven.ebenf...@gmail.com wrote: Am 26.08.2014 22:51, schrieb Chris Tapp: On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@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 opensou...@keylevel.com www.keylevel.com -- Chris Tapp opensou...@keylevel.com www.keylevel.com -- Chris Tapp opensou...@keylevel.com www.keylevel.com -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] systemd - how do I wait for a driver to load?
Am 28.08.2014 18:57, schrieb Chris Tapp: On 27 Aug 2014, at 08:46, Sven Ebenfeld sven.ebenf...@gmail.com wrote: Am 26.08.2014 22:51, schrieb Chris Tapp: On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@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). There should be an option like SYSTEMD_ALIAS in udev database. I haven't used it yet, but I think it should help out here. http://www.freedesktop.org/software/systemd/man/systemd.device.html describes it as SYSTEMD_ALIAS= Adds an additional alias name to the device unit. This must be an absolute path that is automatically transformed into a unit name. (See above.) 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 opensou...@keylevel.com www.keylevel.com -- Chris Tapp opensou...@keylevel.com www.keylevel.com -- Chris Tapp opensou...@keylevel.com www.keylevel.com -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] systemd - how do I wait for a driver to load?
On 28 Aug 2014, at 20:51, Sven Ebenfeld sven.ebenf...@gmail.com wrote: Am 28.08.2014 18:57, schrieb Chris Tapp: On 27 Aug 2014, at 08:46, Sven Ebenfeld sven.ebenf...@gmail.com wrote: Am 26.08.2014 22:51, schrieb Chris Tapp: On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@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). There should be an option like SYSTEMD_ALIAS in udev database. I haven't used it yet, but I think it should help out here. http://www.freedesktop.org/software/systemd/man/systemd.device.html describes it as SYSTEMD_ALIAS= Adds an additional alias name to the device unit. This must be an absolute path that is automatically transformed into a unit name. (See above.) My original attempt is now working - I just had a typo in the dynamic .device name where it was referenced in the .service :-( So, assigning a SYMLINK to the udev rule and adding the systemd tag dynamically creates a device unit with a name of SYMLINK.device (which makes sense). The service then BindsTo to this device and runs After it is ready. Thanks for your help in getting this going :-) 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 opensou...@keylevel.com www.keylevel.com -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] systemd - how do I wait for a driver to load?
Am 26.08.2014 22:51, schrieb Chris Tapp: On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@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 . 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 opensou...@keylevel.com www.keylevel.com -- Chris Tapp opensou...@keylevel.com www.keylevel.com -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] systemd - how do I wait for a driver to load?
You should look at ConditionPathExists= Options of systemd-units. Otherwise if udev is loading your device module, you could add the device-unit to Requires= option. 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 opensou...@keylevel.com www.keylevel.com -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] systemd - how do I wait for a driver to load?
On 14-08-26 20:52:58, Chris Tapp wrote: 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? if you module is loaded automatically on boot then dependent service could use below dependency After=systemd-modules-load.service -- Chris Tapp opensou...@keylevel.com www.keylevel.com -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] systemd - how do I wait for a driver to load?
On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@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. 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 opensou...@keylevel.com www.keylevel.com -- Chris Tapp opensou...@keylevel.com www.keylevel.com -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto