在 Ubuntu server 18.04 中,使用 netplan 配置以太网接口以及配置和使用 CAN 接口的最佳方法是什么?
我可以成功地使用 netplan 来配置我的以太网接口,但我找不到太多关于如何配置和运行 CAN 设备的信息。
过去,我们会使用该/etc/network/interfaces
文件来指定 CAN 总线配置,但我想放弃这种方式,着眼于将来升级到 ubuntu 20(netplan 实际上支持 CAN 总线)
我可以用来ip link set can0 type can bitrate 500000
手动配置我的 CAN 接口,但这不是持久的。我可以将其放入启动时启动的服务中……但我觉得这很麻烦。
还有更好的建议吗?
答案1
更新
正如 Ollie 指出的那样,Ubuntu 18.04 配备了 systemd v237,它不支持配置 CAN 接口。CAN 支持是在这次提交,它首次发布于 systemd v239。您可以检查你的 systemd 版本通过输入systemctl --version
。如果可以,您应该更新到 Ubuntu 20.04 才能使用此功能。
如果你坚持使用 Ubuntu 18.04,那么你可以手动更新 systemd 版本,但这通常被认为是一个坏主意。
原始答案
我遇到了类似的问题。目前看来 netplan 不支持 can 接口,这有点令人沮丧。不过,我发现 systemd-networkd 确实支持 can 和 vcan 接口。以下内容未经测试 - 我正在等待 CAN 硬件到货 - 但应该可以工作。
添加 CAN 模块
/etc/modules
以便它们在启动时加载。(例如cat
,,,,,等等)raw-can
can-dev
mttcan
在下创建一个新文件,
/etc/systemd/network/
其.network
扩展名和内容如下:[Match] Name=can0 [CAN] BitRate=500000
确保
systemd-networkd
在启动时启用。警告 - 如果您已经运行并尝试配置相同的接口,这可能会导致问题NetworkManager
...请谨慎networkd
使用NetworkManager
sudo systemctl enable systemd-networkd
现在,无论何时启动系统,您的 can0 接口都应配置为指定的比特率。
此外,如果您想指定您的链接是“向上”,那么您可以向您的.network
文件添加一个额外的参数:
[Link]
ActivationPolicy=up
附注:networkd
也可用于启动vcan
网络。在这种情况下,您需要创建一个.netdev
文件来指定要创建的虚拟网络,以及一个.network
在启动时自动启动接口的文件。
有用的文档:
https://www.freedesktop.org/software/systemd/man/systemd.network.html
https://www.freedesktop.org/software/systemd/man/systemd.netdev.html
相关论坛/问题:
https://github.com/linux-can/can-utils/issues/68
https://github.com/systemd/systemd/issues/4042
/etc/network/interfaces、systemd-networkd 和 NetworkManager:它们如何共存?