[systemd-devel] systemd inquiry
markh at compro.net
Wed Apr 11 13:07:39 PDT 2012
On 04/11/2012 04:02 PM, Kay Sievers wrote:
> On Wed, Apr 11, 2012 at 21:41, Mark Hounschell<markh at compro.net> wrote:
>> On 04/10/2012 09:10 AM, Kay Sievers wrote:
>>> On Tue, Apr 10, 2012 at 14:36, Mark Hounschell<markh at compro.net> wrote:
>>>> I am having another issue with an out of kernel "GPL" device driver not
>>>> being available "on time" so to say. When the kernel discovers this pci
>>>> it loads it's kernel module and sets up the card for use. This takes
>>>> 15 seconds per card and there is usually 2-3 of them. When the card is
>>>> running, and ready, the kernel module notifies udev who in turn executes
>>>> small script that creates 30 or so different device nodes for use with
>>> A bit unrelated to the described specific problem above, but:
>>> We do not support any kernel device driver which does not create the
>>> device nodes on its own from inside the kernel. Such drivers cause
>>> problems and will fail for various non-interesting reasons. You really
>>> must hook up the kernel driver to register the devices with the kernel
>>> driver-core; it's just a few lines to add.
>>> Doing mknod() in userspace is just too fragile and does not fit into
>>> any synchronization logic of udev or systemd, it is not even expected
>>> to work reliably with these tools.
>> OK, I've changed the driver such that is creates it's own device nodes after
>> the board is up and running. Like I said earlier, it takes a single board
>> 10-15 seconds to come up once the driver starts it. There are now, no
>> scripts required, no sysvinit, no systemd, no udev involved.
> Sounds cool. :)
> Udev and systemd are involved now, at least in a way that they see
> uevents, which did not exist before.
>> Still, when using systemd, when I get to my run-level, the application fails
>> because the device nodes have yet to be created. The driver is still waiting
>> for the boards to be ready. When I use sysvinit the device nodes are there
>> when I get to my run-level.
> systemctl enable udev-settle.service
I should enter this command then reboot?
More information about the systemd-devel