设置 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一定不同时进行设置。

我在这里做错了什么?

ps 当然我可以简单地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

如果你输入

ifconfig

在终端中。

相关内容