起動時に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

次のように入力するとvcan0インターフェースがポップアップ表示されます。

ifconfig

ターミナルで。

関連情報