Executing startup script on each reboot of device


#1

Good day,
We run a multi container application on our devices,
and for one I need to reconfigure some driver by using modprobe.
This command works fine when executed on the host (e.g. via SSH)
but fails when used in a script inside a container.
Is there a possibility to execute a script before the docker containers are built, or whenever the device is restarted?

I personally am fairly new to this architecture, if I can provide any additional info, just let me know.

Thanks in advance for your kind help,
Greetings, Tarek

EDIT
To elaborate a little bit more:
I need to execute
rmmod uvcvideo
modprobe uvcvideo nodrop=1 timeout=5000 quirks=0x80
on the host system, whenever the system restarts.
The modprobe command can not be executed on the container.
I also tried simply editing the respecitve files under /sys/module/uvcvideo/parameters
but that seemed to have no effect.


#4

One of the differences between a single container and multi-container mode is that the containers are not run in privileged mode by default – as such they no longer have direct access to hardware.

You can enable privileged mode on a per-container bases, the docker compose documentation has the details on how to do that:


#5

Thank you for your answer. However privileged mode is actually already activated.
The output of running “modprobe uvcvideo nodrop=1 timeout=5000 quirks=0x80” is the following:
"
modprobe: ERROR: …/libkmod/libkmod.c:557 kmod_search_moddep() could not open moddep file ‘/lib/modules/4.9.59/modules.dep.bin’
"
I saw on another thread, that this might be related to the /lib/modules/ folder not being linked from the host system, but I do not know how to fix this. (It is indeed not existing in the container)


#6

Ah yes that makes sense. Mounting /lib/modules in a container is controlled by a labels:


#7

Thank you very much, that was exactly what I was looking for!