Я хочу настроить виртуальный интерфейс SocketCAN при загрузке. Следующие строки делают то, что я хочу (вручную):
ip link add dev vcan0 type vcan
ip link set up vcan0
(или же)
ip link add dev vcan0 up type vcan
У меня есть способ вызвать физический интерфейс USB CAN при горячей замене - я добавляю следующие строки в /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
Теперь я хочу вызвать интерфейс vcan
при загрузке. Поэтому я автоматически добавил модуль vcan
и добавил эти строки в /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
Но странно, что этот подход не работает: при загрузке или при запуске ifup vcan0
я получаю следующую ошибку:
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.
.. когда я добавляю битрейт строки bitrate <somevalue>
или я получаю
Configuring interface vcan0=vcan0 (can)
Missing required variable: bitrate
Missing required configuration variables for interface vcan0/can.
Failed to bring up vcan0.
.. когда я опускаю настройку битрейта.
Похоже, я должен установить bitrate
и не должен устанавливать его одновременно.
Что я здесь не так делаю?
PS Конечно, я мог бы просто запустить ip link add ..
при запуске, но я хотел бы использовать один и тот же подход для обоих интерфейсов.