Quiero configurar una interfaz SocketCAN virtual al arrancar. Las siguientes líneas hacen lo que quiero (manualmente):
ip link add dev vcan0 type vcan
ip link set up vcan0
(o)
ip link add dev vcan0 up type vcan
Tengo un método para sacar a relucir unfísicoInterfaz USB CAN en conexión en caliente: agrego las siguientes líneas a /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
Ahora también quiero abrir la vcan
interfaz al arrancar. Así que agregué automáticamente el vcan
módulo y agregué esas líneas a /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
Pero, extrañamente, este enfoque no funciona: al arrancar o cuando lo ejecuto, ifup vcan0
aparece el siguiente error:
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.
.. cuando agrego la línea bitrate <somevalue>
o me sale
Configuring interface vcan0=vcan0 (can)
Missing required variable: bitrate
Missing required configuration variables for interface vcan0/can.
Failed to bring up vcan0.
.. cuando omito la configuración de la tasa de bits.
Entonces parece que yotengo queestablecer bitrate
yno debeconfigúrelo - al mismo tiempo.
¿Qué estoy haciendo mal aquí?
PD, por supuesto, podría simplemente ejecutarlo al ip link add ..
inicio, pero me gustaría usar el mismo enfoque para ambas interfaces.
Respuesta1
Debe cargar el módulo vcan en el momento del arranque. Editar/etc/modulospara esto y agregue la línea
vcan
A continuación, edite /etc/network/interfaces
auto vcan0
iface vcan0 inet manual
pre-up /sbin/ip link add dev $IFACE type vcan
up /sbin/ifconfig $IFACE up
Finalmente, reinicie las interfaces:
sudo /etc/init.d/networking restart
La interfaz vcan0 debería aparecer si escribe
ifconfig
en una terminal.