Quero configurar uma interface SocketCAN virtual na inicialização. As linhas a seguir fazem o que eu quero (manualmente):
ip link add dev vcan0 type vcan
ip link set up vcan0
(ou)
ip link add dev vcan0 up type vcan
Eu tenho um método para trazer à tona umfísicoInterface USB CAN em hotplugging - adiciono as seguintes linhas 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
Agora quero abrir a vcan
interface na inicialização também. Então adicionei automaticamente o vcan
módulo e adicionei essas linhas 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
Mas, estranhamente, essa abordagem não funciona: na inicialização ou quando executo, ifup vcan0
recebo o seguinte erro:
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.
.. quando eu adiciono a linha bitrate <somevalue>
ou recebo
Configuring interface vcan0=vcan0 (can)
Missing required variable: bitrate
Missing required configuration variables for interface vcan0/can.
Failed to bring up vcan0.
.. quando omito a configuração da taxa de bits.
Então parece que euprecisadefinir bitrate
eNão deveconfigure-o - ao mesmo tempo.
O que estou fazendo de errado aqui?
ps, é claro que eu poderia simplesmente executar na ip link add ..
inicialização, mas gostaria de usar a mesma abordagem para ambas as interfaces.
Responder1
Você precisa carregar o módulo vcan no momento da inicialização. Editar/etc/módulospara isso e adicione a linha
vcan
Em seguida, 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 as interfaces:
sudo /etc/init.d/networking restart
A interface vcan0 deve aparecer se você digitar
ifconfig
em um terminal.