ich hab erst jetzt nach einer Suche (konnte weder mit lldp noch mit i40e etwas anfangen) gelesen, dass es hier um einen Netzwerktreiber geht, der in Form eines Kernelmoduls vorliegt.
Ich weiß nicht inwieweit man darauf zählen kann oder soll, dass das Modul früh (zum Beispiel im speziellen früh genug für sysfsutils) geladen wird.
Eine richtige(re) Vorgehensweise wäre aus meiner Sicht eine udev-Regel, die das erledigt, nachdem ein solches Gerät erkannt worden ist:
Code: Alles auswählen
ACTION=="add", SUBSYSTEM=="net", DRIVER=="i40e", RUN+="/bin/sh -c 'echo -n lldp stop > /sys%p/.../.../...'"
nur muss man bei dieser Variante irgendwie noch den richtigen Pfad im sysfs „erraten“ - ich würde einfach einmal zum Beispiel mit
Code: Alles auswählen
ACTION=="add", SUBSYSTEM=="net", DRIVER=="i40e", RUN+="/bin/sh -c 'echo /sys%p/ > /tmp/Pfad_im_sysfs'"
anfangen. Dann siehst du erstens ob die Regel funktioniert und wenn ja, also wenn »
/tmp/Pfad_im_sysfs« angelegte wurde kannst du dich in dem Pfad der darin steht umsehen, wie du von dort aus zB nach »
.../0000:02:00.1/command« findest – bei den vielen Abkürzungen (symlinks) im sysfs sollte das aber kein großes Problem sein.
So hättest du eine Regel, die auf allen Rechnern mit so einer Netzwerkkarte funktionieren sollte. Mit etwas mehr Geschick und eventuell der Hilfe von »
udevadm« kommst du vielleicht auch ohne den echo-Befehl aus?
Bei der systemd-unit könntest du dem Abschnitt [Unit] so etwas wie
Code: Alles auswählen
ConditionPathExists=/sys/kernel/debug/i40e/0000\:02\:00.1/command
hinzufügen, damit der Befehl erst ausgeführt wird, wenn das Modul geladen, bzw. das Gerät erkannt wurde, allerdings kommt mir udev-Regel gefühlsmäßig richtiger vor.