iwd+systemd-networkd问题

我的网络是用的iwd+systemd-networkd,然后用ln -s /usr/lib/systemd/network/80-wifi-station.network.example /etc/systemd/network/80-wifi-station.network建了个链接,但是每次启动都会有提示“systemd-networkd[975]: Could not process new link message: File exists”,虽然不影响使用,但不知道是不是有问题,有人能指点下吗?

为何非要软链接呢? systemd-networkd的配置文件格式又不难记, 再不济复制过去也好吧...

这跟是不是软链接没关系吧

我用你的问题询问了DeepSeek,他是这样说的:

这个错误信息表明 systemd-networkd 在启动时遇到了一个已存在的网络链接文件或配置冲突。虽然你说不影响使用,但确实表示存在配置问题。让我详细分析并提供解决方案:

问题分析

当 systemd-networkd 看到你创建的符号链接 /etc/systemd/network/80-wifi-station.network 时,它会尝试处理这个配置。错误通常发生在:

  1. 网络接口已被其他服务管理 - iwd 或 networkd 可能重复管理同一个接口
  2. 配置文件重复 - 可能有多个配置文件匹配同一个网络接口
  3. 符号链接问题 - 链接的目标文件可能不兼容或已过时

解决方案

方案1:检查并修复配置文件内容

# 查看你链接的示例文件内容
cat /usr/lib/systemd/network/80-wifi-station.network.example

# 查看实际生效的配置
cat /etc/systemd/network/80-wifi-station.network

方案2:创建自定义配置文件(推荐)

与其使用符号链接,不如创建自己的配置文件:

# 删除现有的符号链接
sudo rm /etc/systemd/network/80-wifi-station.network

# 创建新的配置文件
sudo nano /etc/systemd/network/80-wifi.network

添加以下内容(根据你的需求调整):

[Match]
Name=wlan0  # 或者使用通配符 wlp* 匹配所有无线接口
Type=wlan

[Network]
DHCP=yes
# 如果需要静态IP,使用:
# Address=192.168.1.100/24
# Gateway=192.168.1.1
# DNS=8.8.8.8

# 启用IPv6(可选)
IPv6PrivacyExtensions=yes

方案3:检查是否有其他网络服务冲突

# 检查是否还有其他网络管理器运行
systemctl status NetworkManager
systemctl status wpa_supplicant

# 如果有,禁用它们
sudo systemctl disable --now NetworkManager
sudo systemctl disable --now wpa_supplicant

# 确保 iwd 和 systemd-networkd 已启用
sudo systemctl enable --now iwd
sudo systemctl enable --now systemd-networkd

方案4:检查 iwd 的配置

确保 iwd 没有尝试管理 IP 地址:

# 编辑 iwd 配置
sudo nano /etc/iwd/main.conf

确保包含:

[General]
EnableNetworkConfiguration=true  # 让 systemd-networkd 处理IP

# 或者完全禁用 iwd 的网络配置
[General]
EnableNetworkConfiguration=false

方案5:清理并重启

# 停止服务
sudo systemctl stop systemd-networkd
sudo systemctl stop iwd

# 删除所有网络配置文件
sudo rm /etc/systemd/network/*.network

# 创建最基本的无线网络配置
sudo nano /etc/systemd/network/wireless.network

# 重启服务
sudo systemctl restart systemd-networkd
sudo systemctl restart iwd

诊断命令

要更清楚地了解问题,可以运行:

# 查看 systemd-networkd 的详细日志
journalctl -u systemd-networkd -f

# 查看所有网络接口状态
networkctl list

# 查看特定接口详情
networkctl status wlan0

建议配置方案

对于 iwd + systemd-networkd 组合,推荐以下配置:

  1. iwd 仅负责无线连接认证
  2. systemd-networkd 负责 IP 地址分配和路由

最简单的 wireless.network 配置文件:

[Match]
Name=wlan0
Type=wlan

[Network]
DHCP=yes

这个错误虽然可能不影响基本使用,但消除它可以确保你的网络配置更稳定,避免未来可能出现的问题。建议使用方案2创建自定义配置文件。

我在谷歌的时候,刷到一篇相关问题的帖子,在2018年的时候就已经有人遇到这样的问题。

.example文件就是用来参考或者拷贝的。如果直接软链接可能会出现文件权限错误、升级覆盖(如果被误修改,pacman 一般不会为其生成 pacnew 文件)、链接失效(新版本可能会修改文件名称或位置)等问题。

1 Like

是的,抱歉没注意审题,在谷歌搜到类似的帖子了。实际上直接复制过来即可。

我试了下复制,没用,不 是这方面的问题

1 Like

问题是我不知道是iwd的原因还是systemd的原因

这里是日志记录的信息:systemd[1]: /usr/lib/systemd/system/systemd-networkd.service:52: System call llseek is not known, ignoring.
3月 20 02:56:04 systemd[1]: /usr/lib/systemd/system/systemd-networkd.service:52: System call file_getattr is not known, ignoring.
3月 20 02:56:04 systemd[1]: /usr/lib/systemd/system/systemd-networkd.service:52: System call file_setattr is not known, ignoring.
3月 20 02:56:04 systemd[1]: /usr/lib/systemd/system/systemd-networkd.service:52: System call fstatat is not known, ignoring.
3月 20 02:56:04 systemd[1]: /usr/lib/systemd/system/systemd-networkd.service:52: System call newfstat is not known, ignoring.
3月 20 02:56:04 systemd[1]: systemd-networkd.service: Watching D-Bus name 'org.freedesktop.network1'.
3月 20 02:56:04 systemd[1]: systemd-networkd.service: Changed dead -> running
3月 20 02:56:04 systemd[1]: systemd-networkd.service: D-Bus name org.freedesktop.network1 now owned by :1.11
3月 20 02:56:51 systemd[1]: systemd-networkd.service: Got notification message from PID 1004: WATCHDOG=1

systemd更新到260.1,问题解决了