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 vcan
und 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 vcan0
erhalte 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 bitrate
unddarf 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.