настроить интерфейс vcan для активации при загрузке

настроить интерфейс vcan для активации при загрузке

Я хочу настроить виртуальный интерфейс 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ине долженустановите его - в одно и то же время.

Что я здесь делаю не так?

P.S. Конечно, я мог бы просто запустить ip link add ..при запуске, но я бы хотел использовать один и тот же подход для обоих интерфейсов.

решение1

Вам необходимо загрузить модуль vcan во время загрузки. Редактировать/etc/модулидля этого и добавьте строку

vcan

Далее редактируем /etc/network/interfaces

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

Наконец, перезапустите интерфейсы:

sudo /etc/init.d/networking restart

Интерфейс vcan0 должен появиться, если вы введете

ifconfig

в терминале.

Связанный контент