我有几台机器使用 socketcan 作为 CAN 接口。
硬件驱动程序由 加载modprobe pcan
,并且该模块当前神奇地配置为在启动时自行启动,运行良好。
但每次重新启动时,我都必须手动启动网络接口,例如:
sudo ip link set can0 up
sudo ip link set can1 up
sudo ip link set can2 up
sudo ip link set can3 up
在启动时启动接口的最佳方法是什么canX
(同时确保它们在pcan
模块加载之前不会出现)?
答案1
我发现了一个不错的使用解决方案systemd-networkd适用于 Ubuntu >=19.04:
/etc/systemd/network/80-can.network
要自动启用所有 CAN 接口,请创建一个包含以下内容的文件:
[Match]
Name=can*
[CAN]
BitRate=500K
除了“can*”,您还可以指定特定接口(例如“can0”)。当然,您可以根据需要调整比特率。请参阅部分man systemd-network
中的所有可用选项[CAN]
。
然后(重新)启动 systemd-networkd 服务:
sudo systemctl restart systemd-networkd
要使其在启动时自动启动:
sudo systemctl enable systemd-networkd
答案2
我很确定你可以把它们扔进你的 rc.local 文件中
sudo nano /etc/rc.local
#!/bin/sh -e
sudo ip link set can0 up
sudo ip link set can1 up
sudo ip link set can2 up
sudo ip link set can3 up
exit 0