Richten Sie die VCAN-Schnittstelle so ein, dass sie beim Booten aktiviert wird

Richten Sie die VCAN-Schnittstelle so ein, dass sie beim Booten aktiviert wird

Ich möchte beim Booten eine virtuelle SocketCAN-Schnittstelle einrichten. Die folgenden Zeilen bewirken (manuell) das, was ich möchte:

ip link add dev vcan0 type vcan
ip link set up vcan0

(oder)

ip link add dev vcan0 up type vcan

Ich habe eine Methode, um einphysischUSB-CAN-Schnittstelle beim Hotplugging - ich füge folgende Zeilen hinzu /etc/network/interfaces:

allow-hotplug can0
iface can0 can static
    bitrate 250000
    up /sbin/ip link set $IFACE down
    up /sbin/ip link set $IFACE up type can

Ich möchte die Schnittstelle jetzt auch beim Booten aufrufen vcan. Also habe ich das Modul automatisch hinzugefügt vcanund diese Zeilen hinzugefügt /etc/network/interfaces:

auto vcan0
iface vcan0 can static
    bitrate 0  # NEEDED but not supported
    pre-up /sbin/ip link add dev $IFACE type vcan
    up /sbin/ip link set $IFACE up 

Aber seltsamerweise funktioniert dieser Ansatz nicht: Beim Booten oder Ausführen ifup vcan0erhalte ich jeweils den folgenden Fehler:

Configuring interface vcan0=vcan0 (can)
/sbin/ip link add dev $IFACE type vcan
...
ip link set vcan0 type can bitrate 0
RTNETLINK answers: Operation not supported
Failed to bring up vcan0.

.. wenn ich die Zeile hinzufüge bitrate <somevalue>oder ich bekomme

Configuring interface vcan0=vcan0 (can)
Missing required variable: bitrate
Missing required configuration variables for interface vcan0/can.
Failed to bring up vcan0.

.. wenn ich die Bitrate-Einstellung weglasse.

Es sieht also so aus, als ob ichmüsseneinstellen bitrateunddarf nichtStellen Sie es ein - gleichzeitig.

Was mache ich hier falsch?

PS: Natürlich könnte ich es einfach ip link add ..beim Start ausführen, aber ich möchte für beide Schnittstellen den gleichen Ansatz verwenden.

Antwort1

Sie müssen das VCAN-Modul beim Booten laden. Bearbeiten/etc/modulesund fügen Sie die Zeile

vcan

Als nächstes bearbeiten Sie /etc/network/interfaces

auto vcan0
   iface vcan0 inet manual
   pre-up /sbin/ip link add dev $IFACE type vcan
   up /sbin/ifconfig $IFACE up

Starten Sie abschließend die Schnittstellen neu:

sudo /etc/init.d/networking restart

Die vcan0-Schnittstelle sollte erscheinen, wenn Sie Folgendes eingeben:

ifconfig

in einem Terminal.

verwandte Informationen