ThinkPad W541(Ubuntu 20.04.6)下NetworkManager启动失败(核心转储)求助
我的问题背景
我用的是ThinkPad W541,装的Ubuntu 20.04.6,因为在ISP工作,平时经常要进「高级网络配置」编辑VLAN接口,这么操作快一年了都没出过问题。
前阵子把一个接口改成DHCP后重启生效,结果重启后GNOME桌面提示NetworkManager需要运行,但我卸载重装(purge后重新安装)、反复重启都没用,它就是启动失败,核心转储了。
当前NetworkManager状态输出:
● NetworkManager.service - Network Manager Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendo> Active: failed (Result: core-dump) since Mon 2023-07-17 16:32:13 MDT; 32mi> Docs: man:NetworkManager(8) Process: 7383 ExecStart=/usr/sbin/NetworkManager --no-daemon (code=dumped, > Main PID: 7383 (code=dumped, signal=SEGV) lines 1-6/6 (END)
启动时的详细日志:
Jul 17 20:57:58 lacomputadoradecfiddy systemd[1]: Stopped Network Manager. Jul 17 20:57:58 lacomputadoradecfiddy systemd[1]: Starting Network Manager... Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6696] NetworkManager (version 1.22.10) is starting... (after a restart) Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6696] Read config: /etc/NetworkManager/NetworkManager.conf (lib: 10-dns-resolved.conf> Jul 17 20:57:58 lacomputadoradecfiddy systemd[1]: Started Network Manager. Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6714] bus-manager: acquired D-Bus service "org.freedesktop.NetworkManager" Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6735] manager[0x55a2a5c74040]: monitoring kernel firmware directory '/lib/firmware'. Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6735] monitoring ifupdown state file '/run/network/ifstate'. Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6746] hostname: hostname: using hostnamed Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6746] hostname: hostname changed from (none) to "lacomputadoradecfiddy" Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6748] dns-mgr[0x55a2a5c5f290]: init: dns=systemd-resolved rc-manager=symlink, plugin=> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6755] rfkill2: found Wi-Fi radio killswitch (at /sys/devices/pci0000:00/0000:00:1c.1/> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6757] manager[0x55a2a5c74040]: rfkill: Wi-Fi hardware radio set enabled Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6757] manager[0x55a2a5c74040]: rfkill: WWAN hardware radio set enabled Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6768] Loaded device plugin: NMWwanFactory (/usr/lib/x86_64-linux-gnu/NetworkManager/1> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6776] Loaded device plugin: NMTeamFactory (/usr/lib/x86_64-linux-gnu/NetworkManager/1> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6781] Loaded device plugin: NMBluezManager (/usr/lib/x86_64-linux-gnu/NetworkManager/> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6785] Loaded device plugin: NMWifiFactory (/usr/lib/x86_64-linux-gnu/NetworkManager/1> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6787] Loaded device plugin: NMAtmManager (/usr/lib/x86_64-linux-gnu/NetworkManager/1.> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6791] manager: rfkill: Wi-Fi enabled by radio killswitch; enabled by state file Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6792] manager: rfkill: WWAN enabled by radio killswitch; enabled by state file Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6794] manager: Networking is enabled by state file Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6795] dhcp-init: Using DHCP client 'internal' Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6797] settings: Loaded settings plugin: ifupdown ("/usr/lib/x86_64-linux-gnu/NetworkM> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6798] settings: Loaded settings plugin: keyfile (internal) Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6798] ifupdown: management mode: unmanaged Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6798] ifupdown: interface-parser: parsing file /etc/network/interfaces Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6798] ifupdown: interface-parser: source line includes interfaces file(s) /etc/> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.6799] ifupdown: interface-parser: finished parsing file /etc/network/interfaces Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.8376] device (lo): carrier: link connected Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.8379] manager: (lo): new Generic device (/org/freedesktop/NetworkManager/Devices/1) Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.8394] manager: (enp0s25): new Ethernet device (/org/freedesktop/NetworkManager/Device> Jul 17 20:57:58 lacomputadoradecfiddy NetworkManager[1341]: [1689649078.8403] device (enp0s25): state change: unmanaged -> unavailable (reason 'managed', sys> Jul 17 20:57:59 lacomputadoradecfiddy systemd[1]: NetworkManager.service: Main process exited, code=dumped, status=11/SEGV Jul 17 20:57:59 lacomputadoradecfiddy systemd[1]: NetworkManager.service: Failed with result 'core-dump'. Jul 17 20:57:59 lacomputadoradecfiddy systemd[1]: NetworkManager.service: Scheduled restart job, restart counter is at 5. Jul 17 20:57:59 lacomputadoradecfiddy systemd[1]: Stopped Network Manager. Jul 17 20:57:59 lacomputadoradecfiddy systemd[1]: NetworkManager.service: Start request repeated too quickly. Jul 17 20:57:59 lacomputadoradecfiddy systemd[1]: NetworkManager.service: Failed with result 'core-dump'. Jul 17 20:57:59 lacomputadoradecfiddy systemd[1]: Failed to start Network Manager.
现在我能手动设置接口为DHCP,但这完全满足不了我日常工作的需求,有没有大佬能给点思路?
针对你的情况,试试这些排查和解决步骤:
1. 检查/etc/network/interfaces配置文件
从日志里能看到NetworkManager在解析这个文件后没多久就崩溃了,大概率是这个文件里的VLAN配置有语法错误或者冲突。你可以先备份这个文件,然后暂时替换成默认内容试试:
sudo cp /etc/network/interfaces /etc/network/interfaces.bak sudo echo -e "auto lo\niface lo inet loopback" > /etc/network/interfaces
然后重启NetworkManager服务:
sudo systemctl restart NetworkManager
如果能正常启动,说明就是原配置文件的问题,你可以慢慢对比备份文件,找出出错的VLAN配置项。
2. 分析核心转储文件,定位崩溃点
Ubuntu默认会生成核心转储,你可以用gdb来分析,看看NetworkManager到底在处理什么内容时崩溃:
sudo apt install gdb sudo gdb /usr/sbin/NetworkManager /var/lib/systemd/coredump/core.NetworkManager.*
在gdb里输入bt查看调用栈,这样能精准定位到崩溃的模块,比如是不是某个VLAN相关的插件出问题了。
3. 重置NetworkManager的配置文件
有时候配置文件损坏也会导致崩溃,你可以重置NetworkManager的配置:
sudo systemctl stop NetworkManager sudo rm -rf /etc/NetworkManager/system-connections/* sudo rm -rf /var/lib/NetworkManager/* sudo systemctl start NetworkManager
注意:这样会清除所有已保存的网络配置,你之后需要重新添加VLAN和接口信息,但能排除配置损坏的问题。
4. 检查并修复依赖包
可能是NetworkManager的依赖包损坏导致崩溃,试试重新安装所有相关依赖:
sudo apt install --reinstall network-manager network-manager-gnome sudo apt-get -f install
5. 临时应急方案(如果以上都没效果)
如果急着用网络,你可以先禁用NetworkManager,改用systemd-networkd来管理网络,虽然操作麻烦点,但能满足你编辑VLAN的需求:
sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager sudo systemctl enable systemd-networkd sudo systemctl start systemd-networkd
然后在/etc/systemd/network目录下创建VLAN和接口的配置文件,比如VLAN 10的配置文件10-vlan10.netdev:
[NetDev] Name=vlan10 Kind=vlan [VLAN] Id=10
再创建对应的IP配置文件20-vlan10.network:
[Match] Name=vlan10 [Network] DHCP=yes
重启systemd-networkd就能生效:
sudo systemctl restart systemd-networkd
6. 考虑升级或降级NetworkManager版本
Ubuntu 20.04的NetworkManager版本是1.22.10,可能这个版本存在已知的VLAN相关bug,你可以试试升级到backports里的新版本:
sudo add-apt-repository universe sudo add-apt-repository ppa:ubuntu-backports/ppa sudo apt update sudo apt install network-manager -t focal-backports
如果升级后问题依旧,也可以尝试降级到之前的稳定版本。
备注:内容来源于stack exchange,提问作者Chris Foster

