启动时报: a start job is running for wait for network to be configured , 怎么解决? 笔记250629
方法1: 缩短 systemd-networkd-wait-online.service
的等待时间
- 编辑systemd网络等待服务配置:
sudo systemctl edit systemd-networkd-wait-online.service
- 设置
[Service]
下的TimeoutStartSec
, 不能设为0s, 0s无效
可能文件是空的,没有内容,直接添加👇TimeoutStartSec=1s
[Service] TimeoutStartSec=1s
- 保存后重启服务:
sudo systemctl daemon-reload sudo reboot
方法2: 用 systemctl mask
来禁用 systemd-networkd-wait-online.service
sudo systemctl status systemd-networkd-wait-online.service
sudo systemctl disable systemd-networkd-wait-online.service --now ### 好像没用
sudo systemctl mask systemd-networkd-wait-online.service ### mask比disable更强力
方法3: 在netplan配置文件中设置 optional: true
sudo vi /etc/netplan/*.yaml
在对应网卡下添加 optional: true
:
ethernets:
ens33:
dhcp4: true
optional: true # 添加此行
实测成功的例子1:
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: yes
dhcp6: yes
optional: true ### 可解决启动时报: a start job is running for wait for network to be configured
ens34:
addresses:
- fc11::b184:f5e:5742/16
- fc11::b184:f5e:5742:1/16
ens35:
addresses:
- fc12::b184:f5e:5742/16
- fc12::b184:f5e:5742:1/16
systemctl mask
命令详解
systemctl mask
是 Linux 系统(使用 systemd 作为初始化系统)中一个强制禁用服务/单元的命令。它比 systemctl disable
更彻底,会完全阻止服务被启动(包括手动启动和依赖项启动)。
核心作用:
- 完全阻止服务启动(即使手动尝试启动也会失败)
- 破坏依赖链(依赖该服务的其他服务也会失败)
- 创建不可逆的禁用状态(直到显式解除屏蔽)
工作原理
-
创建符号链接
在/etc/systemd/system/
目录中创建指向/dev/null
的符号链接:/etc/systemd/system/服务名.service → /dev/null
(覆盖原始服务定义)
-
优先级高于其他配置
systemd 加载顺序为:
/etc/systemd/system/
>/run/systemd/system/
>/usr/lib/systemd/system/
(因此屏蔽操作具有最高优先级)
使用场景示例
1. 永久禁用服务(如不安全的服务)
sudo systemctl mask telnet.socket # 完全禁用 Telnet 服务
尝试启动时将报错:
Failed to start telnet.socket: Unit telnet.socket is masked.
2. 防止冲突服务同时运行
sudo systemctl mask sendmail.service # 禁用 Sendmail
sudo systemctl enable postfix.service # 启用 Postfix
3. 临时"冻结"服务配置
sudo systemctl mask docker.service
# 修改 Docker 配置后...
sudo systemctl unmask docker.service
与相关命令对比
命令 | 效果 | 可逆性 |
---|---|---|
systemctl mask 服务名 | 完全阻止启动(手动/自动均失败) | unmask 可逆 |
systemctl disable 服务名 | 仅禁止开机自启(仍可手动启动) | enable 可逆 |
systemctl stop 服务名 | 仅停止当前运行(重启后可能自启) | 临时生效 |
systemctl kill 服务名 | 强制杀死进程(但不改变启动状态) | 临时生效 |
关键操作
1. 屏蔽服务
sudo systemctl mask nginx.service
输出效果:
Created symlink /etc/systemd/system/nginx.service → /dev/null
2. 解除屏蔽
sudo systemctl unmask nginx.service
输出效果:
Removed /etc/systemd/system/nginx.service.
3. 查看屏蔽状态
systemctl is-enabled nginx.service
可能返回值:
masked
(已屏蔽)enabled
(已启用)disabled
(已禁用)
注意事项
-
依赖影响
屏蔽父服务会导致依赖它的子服务启动失败:sudo systemctl mask network.target # 会导致所有网络服务失败
-
紧急恢复
如果误屏蔽关键服务(如systemd-logind.service
),可能导致无法登录。恢复方法:- 通过 Live CD 启动
- 挂载系统分区
- 手动删除
/etc/systemd/system/
下的符号链接
-
屏蔽 vs 删除
操作 配置文件是否保留 恢复难度 mask
保留原始文件 简单 删除服务文件 永久删除 需重装
典型应用案例
# 安全加固:禁用不必要的服务
sudo systemctl mask rpcbind.service
sudo systemctl mask avahi-daemon.service
# 解决服务冲突
sudo systemctl mask ModemManager.service # 禁用 Modem 管理器
sudo systemctl enable NetworkManager.service
# 开发环境控制
sudo systemctl mask mysql.service # 屏蔽 MySQL
sudo docker run mysql:latest # 改用 Docker 版
重要提示:操作关键系统服务前,务必通过
systemctl list-dependencies 服务名
检查依赖关系!
1️⃣ 参考 1
Ubuntu 启动时出现 A start job is running for wait for network to be configured
错误,通常是因为系统在等待网络配置完成而超时(默认等待时间长达 1.5~2 分钟)。以下是几种已验证的解决方案,按推荐顺序排列:
⏱️ 1. 设置网络等待超时时间(推荐首选)
原因:系统服务 systemd-networkd-wait-online.service
默认无超时限制,会持续等待网络就绪。
步骤:
- 打开配置文件:
sudo nano /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
- 在
[Service]
部分添加超时参数(例如 2 秒):[Service] Type=oneshot ExecStart=/lib/systemd/systemd-networkd-wait-online RemainAfterExit=yes TimeoutStartSec=2sec # 添加此行
- 重新加载配置并重启:
sudo systemctl daemon-reload sudo reboot
效果:2 秒后无论网络是否就绪,系统继续启动。
🌐 2. 将网卡标记为可选(适用于未连接或非必要网卡)
原因:若某网卡(如虚拟网卡或备用网卡)无法及时获取 IP,系统会阻塞启动。
步骤:
- 编辑 Netplan 配置文件(通常位于
/etc/netplan/
,如00-installer-config.yaml
):sudo nano /etc/netplan/00-installer-config.yaml
- 在对应网卡下添加
optional: true
:ethernets: ens33: dhcp4: true optional: true # 添加此行
- 应用配置并重启:
sudo netplan apply sudo reboot
效果:系统不再强制等待该网卡配置完成。
🔌 3. 忽略未使用的网卡(适用于多网卡环境)
原因:未连接的物理网卡或虚拟网卡会触发等待。
步骤:
- 查看需要忽略的网卡名称(如
ens38
):ip a # 查看未分配 IP 的网卡
- 修改服务配置,添加
--ignore
参数:
修改sudo nano /lib/systemd/system/systemd-networkd-wait-online.service
ExecStart
行为:ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=ens38
- 重新加载配置并重启。
⚠️ 4. 检查 Swap 分区问题(伴随其他报错时适用)
若错误信息包含 /dev/disk/by-uuid...
,可能是 Swap 分区 UUID 错误导致超时。
步骤:
- 查看当前 Swap 分区 UUID:
sudo blkid | grep swap
- 对比
/etc/fstab
中的 UUID:sudo nano /etc/fstab
- 修正不一致的 UUID 或注释掉 Swap 行:
# /dev/sda5 none swap sw 0 0 # 错误行前加 # 注释
- 更新并重启。
💎 方法选择建议
场景 | 推荐方法 | 复杂度 |
---|---|---|
单网卡或通用情况 | 设置超时(方法1) | 低 |
虚拟机/多网卡存在未连接网卡 | 标记网卡为可选(方法2) | 中 |
明确已知某网卡无需等待 | 忽略特定网卡(方法3) | 中 |
启动时伴随 Swap 报错 | 修复 Swap 配置(方法4) | 高 |
📌 预防措施
- 更新 Systemd:新版 systemd 可能已优化超时逻辑,运行
sudo apt update && sudo apt upgrade
更新系统。 - 检查网络服务状态:诊断具体网卡问题:
systemctl status systemd-networkd-wait-online.service ip link show # 查看网卡状态
以上方法在 Ubuntu 20.04/22.04 中均验证有效。若问题仍存,可尝试组合方法(如同时设置超时 + 标记网卡可选)。
2️⃣ 参考 2
遇到系统启动时卡在“wait for network to be configured”的问题,通常是由于网络服务初始化超时或依赖配置错误导致。以下是分步解决方案:
1. 检查网络接口配置
- 问题原因:网络接口(如网卡)配置错误或DHCP请求超时。
- 解决方法:
- 进入恢复模式或使用单用户模式编辑网络配置文件:
# Ubuntu/Debian sudo nano /etc/network/interfaces # CentOS/RHEL sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
- 确保配置正确(如IP地址、DNS、网关),或尝试改用静态IP。
- 进入恢复模式或使用单用户模式编辑网络配置文件:
2. 调整网络等待超时时间
- 问题原因:systemd默认等待网络就绪时间过短(默认90秒)。
- 解决方法:
- 编辑systemd网络等待服务配置:
sudo systemctl edit systemd-networkd-wait-online.service
- 在打开的文件中添加以下内容(将超时时间延长至300秒):
[Service] TimeoutStartSec=300s
- 保存后重启服务:
sudo systemctl daemon-reload sudo reboot
- 编辑systemd网络等待服务配置:
3. 禁用不必要的网络等待服务
- 问题原因:某些服务错误依赖网络就绪。
- 解决方法:
- 列出所有依赖网络的服务:
systemctl list-dependencies --reverse network-online.target
- 禁用无关服务(以
NetworkManager-wait-online.service
为例):sudo systemctl mask NetworkManager-wait-online.service
- 列出所有依赖网络的服务:
4. 检查NetworkManager服务状态
- 问题原因:NetworkManager服务异常。
- 解决方法:
# 重启NetworkManager sudo systemctl restart NetworkManager # 查看服务状态 sudo systemctl status NetworkManager
5. 调整启动顺序(可选)
- 问题原因:服务启动顺序依赖网络但未正确配置。
- 解决方法:
- 编辑服务文件(如
your-service.service
):sudo systemctl edit your-service.service
- 添加或修改以下行以移除网络依赖:
[Unit] After=network.target Wants=network.target
- 编辑服务文件(如
6. 查看详细日志定位问题
- 使用以下命令获取启动时的详细日志:
journalctl -b -0 -u systemd-networkd-wait-online.service
- 根据日志中的错误信息进一步排查(如DNS解析失败、网卡驱动问题等)。
7. 临时跳过网络等待(紧急情况)
- 仅用于紧急启动:
# 编辑启动参数(在GRUB菜单按`e`进入编辑模式) # 找到以`linux`开头的行,在末尾添加: systemd.unit=multi-user.target
- 按
Ctrl+X
启动,进入命令行后修复网络配置。
- 按
总结步骤
- 优先检查网络配置(IP/DNS/DHCP)。
- 延长超时时间或禁用无关服务。
- 通过日志精确定位问题。
- 根据实际场景选择永久修复方案。
如果问题仍存在,建议提供journalctl -b
的完整日志片段以进一步分析。
3️⃣ 参考 3
针对Ubuntu系统启动时卡在 "A start job is running for wait for network to be configured" 的问题,以下是详细的解决方案:
解决方法
方法一:设置超时时间(推荐)
通过修改 systemd-networkd-wait-online.service
服务的超时时间,避免系统因网络配置问题卡顿。
-
编辑服务文件
打开终端,执行以下命令:sudo nano /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
或者(如果文件不在上述路径):
sudo nano /lib/systemd/system/systemd-networkd-wait-online.service
-
添加超时配置
在[Service]
部分末尾添加以下内容:TimeoutStartSec=1sec
(建议设置为
1sec
或2sec
,根据实际需求调整) -
保存并退出
按Ctrl+O
保存文件,按Ctrl+X
退出编辑器。 -
重新加载 systemd 配置
sudo systemctl daemon-reload
-
重启系统验证
sudo reboot
方法二:禁用网络等待服务
如果不需要系统在启动时等待网络配置,可以直接禁用该服务。
-
禁用服务
sudo systemctl disable systemd-networkd-wait-online.service
-
屏蔽服务(可选)
如果希望彻底禁用服务,可以执行:sudo systemctl mask systemd-networkd-wait-online.service
-
重启系统
sudo reboot
方法三:忽略特定网卡
如果系统中有未使用的网卡导致检测延迟,可以忽略这些网卡的检测。
-
确认需要忽略的网卡名称
例如,假设需要忽略ens38
网卡:ip a
-
修改服务文件
编辑服务文件并添加--ignore=网卡名
参数:sudo nano /lib/systemd/system/systemd-networkd-wait-online.service
在
ExecStart=
行后添加--ignore=ens38
,例如:ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=ens38
-
重新加载配置并重启
sudo systemctl daemon-reload sudo reboot
方法四:检查网络配置
如果问题由网络配置错误引起(如静态IP冲突或DHCP失败),需修复网络配置。
-
检查网络接口配置
查看/etc/netplan/*.yaml
或/etc/network/interfaces
文件,确保配置正确。 -
测试网络连接
手动重启网络服务并检查状态:sudo systemctl restart networking sudo systemctl status networking
-
修复交换分区问题(可选)
如果启动时还报a start job is running for /dev/disk/by-uuid/...
错误,需检查/etc/fstab
中的交换分区UUID是否正确:sudo blkid sudo nano /etc/fstab
注意事项
-
备份配置文件
修改前建议备份原始文件:sudo cp /lib/systemd/system/systemd-networkd-wait-online.service /lib/systemd/system/systemd-networkd-wait-online.service.bak
-
系统更新的影响
如果系统更新后配置被重置,需重新应用上述修改。 -
适用场景
- 超时时间设置:适用于网络偶尔延迟的场景,避免系统卡顿。
- 禁用服务:适用于不需要依赖网络启动的服务场景。
- 忽略网卡:适用于多网卡环境且部分网卡未使用的场景。
总结
- 推荐优先使用方法一(设置超时时间),既能解决卡顿问题,又不会完全放弃网络检测。
- 如果问题依旧,再尝试 方法二(禁用服务) 或 方法三(忽略网卡)。
- 如果涉及复杂网络配置,需结合 方法四 调整网络设置。
希望以上方法能帮助你解决问题!如果仍有疑问,欢迎进一步讨论。
4️⃣ 参考 4
你遇到的这个启动延迟问题,是由于系统在等待网络完全配置好才继续启动流程。以下是几种可以解决这个问题的方法:
1. 调整网络服务的超时设置
可以通过修改网络服务的配置文件,减少等待网络的超时时间。
# 编辑网络服务配置文件
sudo nano /etc/systemd/system/network-online.target.wants/networking.service
# 在文件中找到 [Service] 部分,添加或修改以下行
TimeoutStartSec=5s # 将超时时间设为5秒,可根据需要调整
# 保存文件后重新加载systemd配置
sudo systemctl daemon-reload
2. 禁用等待网络的服务
如果你的系统不需要在启动时完全配置好网络,可以禁用等待网络的服务。
# 禁用 NetworkManager-wait-online 服务
sudo systemctl disable NetworkManager-wait-online.service
# 如果你使用的是传统的networking服务,禁用它的等待在线服务
sudo systemctl disable networking.service
3. 使用更快的网络配置方法
对于静态IP配置,建议改用systemd-networkd服务,它比传统的网络配置方法更快。
# 创建并编辑网络配置文件
sudo nano /etc/systemd/network/eth0.network # 根据实际网卡名修改
# 添加以下内容(根据你的网络设置修改)
[Match]
Name=eth0 # 网卡名
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8 8.8.4.4
# 启用并启动systemd-networkd服务
sudo systemctl enable systemd-networkd.service
sudo systemctl start systemd-networkd.service
# 禁用旧的网络服务(如果有)
sudo systemctl disable networking.service
4. 配置网络接口为立即启动
可以通过修改网络配置文件,让网络接口在系统启动时立即激活,而不是等待完全配置好。
# 对于Debian/Ubuntu系统,编辑网络配置文件
sudo nano /etc/network/interfaces
# 将接口配置修改为
auto eth0
iface eth0 inet dhcp
# 或者对于静态IP
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
5. 检查是否有网络设备故障
有时候启动延迟是因为系统在等待不存在或有故障的网络设备。检查并移除不必要的网络设备配置。
# 查看当前活动的网络设备
ip link show
# 检查网络配置文件,删除不存在的设备配置
sudo nano /etc/network/interfaces
完成上述任何一种修改后,重启系统测试启动时间是否减少。如果问题仍然存在,可能需要进一步检查网络设备或服务配置。
5️⃣ 参考 5
出现 “a start job is running for wait for network to be configured” 一般是系统在启动时等待网络配置完成所导致的。以下是一些可以解决该问题的方法:
检查网络连接状态
- 检查物理连接 :如果是有线网络,确保网线插好并且没有损坏,两端都牢固地连接在电脑和路由器或交换机等网络设备上。如果是无线网络,检查无线网卡是否正常工作,是否在范围内并且没有被物理遮挡等影响信号强度的因素。
- 检查网络配置 :在 Windows 系统中,可以通过控制面板中的 “网络和共享中心” 查看网络适配器的设置,确保 IP 地址、子网掩码、默认网关和 DNS 服务器地址等配置正确。在 Linux 系统中,可以使用 “ip addr”、“ip route” 和 “nmcli” 等命令来检查网络配置。
修改系统启动配置
-
在 GRUB 引导加载程序中添加内核参数
- 对于基于 Debian 的系统(如 Ubuntu):在终端中输入 “sudo nano /etc/default/grub”,在 “GRUB_CMDLINE_LINUX_DEFAULT=” 后添加 “net.ifnames=0 biosdevname=0”(如果有网络接口命名问题)或者 “ipv6.disable=1”(如果怀疑是 IPv6 导致的问题)。然后保存文件并运行 “sudo update - grub” 命令来更新 GRUB 配置。
- 对于基于 Red Hat 的系统(如 CentOS):同样编辑 “/etc/default/grub” 文件,添加合适的内核参数,如 “rd.udev.log-priority=3”(用于减少等待时间),然后执行 “sudo grub2 - mkconfig -o /boot/grub2/grub.cfg”(对于 BIOS 系统)或 “sudo grub2 - mkconfig -o /boot/efi/EFI/centos/grub.cfg”(对于 UEFI 系统)来更新 GRUB 配置。
-
调整 systemd 网络服务的超时时间
- 在 Linux 系统中,可以编辑 “/etc/systemd/system/network - target.wants/NetworkManager.service” 文件(如果使用 NetworkManager),找到 “[Service]” 部分,添加或修改 “TimeoutStartSec=5”(将超时时间设置为 5 秒),然后执行 “sudo systemctl daemon - reload” 和 “sudo systemctl restart NetworkManager” 命令来使更改生效。
配置网络管理工具
-
对于使用 NetworkManager 的系统
- 在终端中输入 “nmcli networking off” 然后 “nmcli networking on” 来重新启动网络管理器,有时候可以解决网络配置等待的问题。
- 可以通过 “nmcli device” 命令查看网络设备的状态,如果发现某个设备状态异常,可以使用 “nmcli connection reload” 来重新加载网络连接配置。
-
对于使用 netplan 的系统(如 Ubuntu Server)
- 编辑 “/etc/netplan/*.yaml” 配置文件,在网络配置中添加 “optional: true” 参数,例如:
network: version: 2 ethernets: eth0: dhcp4: true optional: true
这样可以让系统在网络配置没有准备好时继续启动,然后通过 “sudo netplan apply” 命令来应用配置。
- 编辑 “/etc/netplan/*.yaml” 配置文件,在网络配置中添加 “optional: true” 参数,例如:
检查服务依赖关系
- 在 Linux 系统中,可以通过 “systemctl list - dependencies” 命令来查看各个服务之间的依赖关系。如果发现有些服务对网络的依赖关系不必要或者有错误,可以使用 “systemctl edit” 命令来修改服务的依赖关系,例如在服务的 “[Unit]” 部分添加或删除 “After=” 和 “Wants=” 等参数来调整服务启动顺序和依赖关系。
6️⃣ 参考 6
出现 “a start job is running for wait for network to be configured” 一般是系统在启动时等待网络配置完成所导致的。以下是一些可以解决该问题的方法:
检查网络连接状态
- 检查物理连接 :如果是有线网络,确保网线插好并且没有损坏,两端都牢固地连接在电脑和路由器或交换机等网络设备上。如果是无线网络,检查无线网卡是否正常工作,是否在范围内并且没有被物理遮挡等影响信号强度的因素。
- 检查网络配置 :在 Windows 系统中,可以通过控制面板中的 “网络和共享中心” 查看网络适配器的设置,确保 IP 地址、子网掩码、默认网关和 DNS 服务器地址等配置正确。在 Linux 系统中,可以使用 “ip addr”、“ip route” 和 “nmcli” 等命令来检查网络配置。
修改系统启动配置
-
在 GRUB 引导加载程序中添加内核参数
- 对于基于 Debian 的系统(如 Ubuntu):在终端中输入 “sudo nano /etc/default/grub”,在 “GRUB_CMDLINE_LINUX_DEFAULT=” 后添加 “net.ifnames=0 biosdevname=0”(如果有网络接口命名问题)或者 “ipv6.disable=1”(如果怀疑是 IPv6 导致的问题)。然后保存文件并运行 “sudo update - grub” 命令来更新 GRUB 配置。
- 对于基于 Red Hat 的系统(如 CentOS):同样编辑 “/etc/default/grub” 文件,添加合适的内核参数,如 “rd.udev.log-priority=3”(用于减少等待时间),然后执行 “sudo grub2 - mkconfig -o /boot/grub2/grub.cfg”(对于 BIOS 系统)或 “sudo grub2 - mkconfig -o /boot/efi/EFI/centos/grub.cfg”(对于 UEFI 系统)来更新 GRUB 配置。
-
调整 systemd 网络服务的超时时间
- 在 Linux 系统中,可以编辑 “/etc/systemd/system/network - target.wants/NetworkManager.service” 文件(如果使用 NetworkManager),找到 “[Service]” 部分,添加或修改 “TimeoutStartSec=5”(将超时时间设置为 5 秒),然后执行 “sudo systemctl daemon - reload” 和 “sudo systemctl restart NetworkManager” 命令来使更改生效。
配置网络管理工具
-
对于使用 NetworkManager 的系统
- 在终端中输入 “nmcli networking off” 然后 “nmcli networking on” 来重新启动网络管理器,有时候可以解决网络配置等待的问题。
- 可以通过 “nmcli device” 命令查看网络设备的状态,如果发现某个设备状态异常,可以使用 “nmcli connection reload” 来重新加载网络连接配置。
-
对于使用 netplan 的系统(如 Ubuntu Server)
- 编辑 “/etc/netplan/*.yaml” 配置文件,在网络配置中添加 “optional: true” 参数,例如:
network: version: 2 ethernets: eth0: dhcp4: true optional: true
这样可以让系统在网络配置没有准备好时继续启动,然后通过 “sudo netplan apply” 命令来应用配置。
- 编辑 “/etc/netplan/*.yaml” 配置文件,在网络配置中添加 “optional: true” 参数,例如:
检查服务依赖关系
- 在 Linux 系统中,可以通过 “systemctl list - dependencies” 命令来查看各个服务之间的依赖关系。如果发现有些服务对网络的依赖关系不必要或者有错误,可以使用 “systemctl edit” 命令来修改服务的依赖关系,例如在服务的 “[Unit]” 部分添加或删除 “After=” 和 “Wants=” 等参数来调整服务启动顺序和依赖关系。
7️⃣ 参考 7
解决 systemd 启动等待网络配置导致的延迟问题
当 systemd 在启动过程中因等待网络配置(如 network-online.target
)而延迟时,可通过以下步骤优化:
1. 诊断延迟原因
# 查看启动耗时分布
systemd-analyze blame
# 检查网络服务状态
systemctl status systemd-networkd-wait-online.service
若输出显示 systemd-networkd-wait-online.service
耗时过长,表明系统在等待网络就绪。
2. 调整网络等待超时
编辑等待服务配置文件:
sudo systemctl edit systemd-networkd-wait-online.service
添加超时设置(单位:秒):
[Service]
TimeoutStartSec=30 # 将默认120秒改为30秒
3. 修改服务依赖关系
对于非关键服务,移除对 network-online.target
的依赖:
# 示例:修改nginx服务依赖
sudo systemctl edit nginx.service
将 After=network-online.target
改为:
After=network.target
4. 启用并行启动
在 /etc/systemd/system.conf
中启用:
[Manager]
AllowIsolate=yes
DefaultTimeoutStartSec=30s # 全局缩短启动超时
5. 优化DHCP客户端
若使用DHCP,改用更快的客户端(如 dhclient
):
sudo apt install dhclient
sudo systemctl disable systemd-networkd.service
sudo systemctl enable dhclient.service
6. 配置静态IP(可选)
在 /etc/netplan/01-netcfg.yaml
设置静态IP避免DHCP等待:
network:
ethernets:
eth0:
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
version: 2
应用配置:sudo netplan apply
7. 禁用不必要的网络等待
sudo systemctl mask systemd-networkd-wait-online.service
注意:仅推荐在无网络依赖的服务器使用,桌面环境慎用。
验证优化效果
systemd-analyze critical-chain
systemd-analyze plot > boot.svg # 生成启动时序图
技术原理
当服务定义 After=network-online.target
时,systemd 会等待网络接口获得 IP 地址并完成路由配置。超时机制由不等式控制:
其中 是配置的超时阈值, 是实际网络初始化时间。
8️⃣ 参考 8
以下是解决 Ubuntu 系统启动时卡在 “A start job is running for wait for network to be configured” 的多种方法,按优先级和适用场景分类:
⏱️ 1. 修改网络等待服务的超时时间(推荐)
原因:系统默认等待网络配置完成的时间过长(通常 30~60 秒),尤其当网络未连接或 DHCP 响应慢时。
操作步骤:
编辑 systemd-networkd-wait-online.service 配置文件:
sudo nano /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
在 [Service] 部分添加超时设置(例如 2 秒):
[Service]
TimeoutStartSec=2sec # 超时后跳过等待,继续启动[citation:2][citation:6][citation:7]
保存并重启:
sudo systemctl daemon-reload
reboot
效果:系统最多等待 2 秒,超时后自动继续启动流程。
🌐 2. 配置静态 IP 地址(适用于固定网络环境)
原因:DHCP 获取 IP 可能因网络延迟导致超时。
操作步骤:
编辑网络配置文件(如 eth0.network):
sudo nano /etc/systemd/network/eth0.network
添加静态 IP 配置(示例):
[Match]
Name=eth0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8[citation:6]
重启网络服务:
sudo systemctl restart systemd-networkd
⚙️ 3. 调整网络管理设置
禁用 NetworkManager 的节能模式
sudo nano /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
修改为:
[connection]
wifi.powersave = 2 # 禁用节能模式[citation:4]
检查 Swap 分区配置
若启动日志提示 Swap 挂载超时,需修正 /etc/fstab 中的 UUID:
sudo blkid # 查看 Swap 分区实际 UUID
sudo nano /etc/fstab # 确保 UUID 一致[citation:4][citation:8]
🚫 4. 禁用网络等待服务(仅限本地环境)
适用场景:无需网络的开机流程(如服务器或开发环境)。
sudo systemctl disable systemd-networkd-wait-online.service --now[citation:5]
🔍 5. 检查其他配置问题 冲突服务:确保没有多个网络管理服务(如 NetworkManager 和 systemd-networkd)同时运行[citation:5]。
硬件检测:运行 ip link show 确认网卡被识别,或 dmesg | grep eth 检查驱动状态[citation:5]。
Netplan 配置:验证 /etc/netplan/*.yaml 语法正确(使用 sudo netplan try 测试)[citation:5]。
💎 预防措施 更新配置后:每次 systemd 或内核升级后,需重新检查超时设置[citation:2]。
生产服务器:优先使用静态 IP 而非 DHCP,避免网络波动影响启动[citation:6]。
日志诊断:通过 journalctl -u systemd-networkd -b 查看详细启动日志[citation:5]。
⚠️ 注意:若修改后问题依旧,可能是硬件驱动或固件问题,建议检查网卡兼容性。多数情况下,修改超时时间(方法1) 或 配置静态 IP(方法2) 即可解决[citation:2][citation:6][citation:7]。
9️⃣ 参考 9
在Ubuntu系统启动时,如果遇到“A start job is running for wait for network to be configured”的提示,并且导致启动时间过长,可以通过以下方法解决问题:
1. 修改网络配置文件
如果系统中有未使用的网卡或配置错误的网卡,可能导致系统等待网络配置完成。可以通过以下步骤解决:
- 打开网络配置文件: bash sudo nano /etc/netplan/00-installer-config.yaml
- 在需要忽略的网卡配置下添加 optional: true,例如:
yaml ethernets: ens33: dhcp4: true optional: true
这样系统会忽略该网卡的配置问题,避免卡在等待状态。
2. 设置网络配置超时时间
如果网络配置长时间未完成,可以设置超时时间,让系统在超时后继续启动:
- 打开网络等待服务配置文件: bash sudo nano /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
- 在 [Service] 部分添加超时时间,例如设置为2秒: ini [Service] Type=oneshot ExecStart=/lib/systemd/systemd-networkd-wait-online RemainAfterExit=yes TimeoutStartSec=2sec
- 重启系统以生效:
bash sudo reboot
这样可以避免系统因网络配置问题而长时间等待。
3. 忽略未使用的网卡
如果系统中有未使用的网卡,可以通过修改服务配置文件来忽略这些网卡:
- 打开服务配置文件: bash sudo nano /lib/systemd/system/systemd-networkd-wait-online.service
- 在 ExecStart 行后添加 --ignore=网卡名,例如: bash ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=ens38
- 重新加载 systemd 配置:
bash sudo systemctl daemon-reload
这样系统会忽略指定的网卡,避免因未使用的网卡导致的等待。
4. 检查网络配置文件
如果网络配置文件中有错误,可能导致系统等待网络配置完成。可以通过以下步骤检查和修复:
- 打开网络配置文件: bash sudo nano /etc/netplan/00-installer-config.yaml
- 确保配置文件语法正确,IP地址、子网掩码、网关和DNS配置无误。
- 应用配置文件:
bash sudo netplan apply
如果配置正确,系统将不再等待网络配置完成。
5. 检查网络硬件
如果网络配置正确但仍然卡在等待状态,可能是网络硬件或连接问题。可以通过以下步骤检查:
- 确保网线连接正常,或者无线网络已连接。
- 检查网络接口状态:
bash ip a
确保网络接口已启用并获得IP地址。
总结
通过以上方法,可以有效解决Ubuntu启动时卡在“A start job is running for wait for network to be configured”的问题。建议优先检查网络配置文件和忽略未使用的网卡,如果问题依旧,再考虑设置超时时间或检查网络硬件。
🔟 参考 10
在 Ubuntu 系统启动时出现 "A start job is running for wait for network to be configured" 的等待问题,通常是由于系统服务等待网络配置完成超时所致。以下是分步排查和解决方案:
1. 初步定位原因
检查服务的阻塞状态:
systemctl status systemd-networkd-wait-online.service
如果显示 active (exited)
但仍有延迟,可能是以下原因之一:
- DHCP 获取 IP 超时
- 网络接口未正确配置
- 冲突的网络管理工具(如同时使用
netplan
和ifupdown
)
2. 优先级最高的解决方案
方法 1:调整 systemd 服务超时
编辑超时参数,允许更早跳过等待:
sudo systemctl edit systemd-networkd-wait-online.service
在打开的编辑器中添加以下内容:
[Service]
TimeoutStartSec=10 # 将超时时间缩短为 10 秒(默认为 2 分钟)
保存后重启服务:
sudo systemctl daemon-reload
方法 2:禁用严格网络等待
直接修改服务的启动策略(推荐大多数服务器):
sudo systemctl mask systemd-networkd-wait-online.service
3. 检查网络配置
步骤 1:验证 Netplan 配置
查看当前网络配置文件:
cat /etc/netplan/*.yaml
确认以下几点:
- 是否启用
dhcp4: true
(若使用 DHCP) - 静态 IP 配置的格式是否正确(缩进、子网掩码写法)
- 避免手动干预接口命名(如
enp0s3
是否与物理接口匹配)
步骤 2:应用 Netplan 变更
sudo netplan generate
sudo netplan apply
4. 硬件/驱动层排查
检查网卡状态:
ip link show # 查看接口是否处于 UP 状态
dmesg | grep eth # 检查网卡驱动加载是否报错
若在虚拟机或云环境中:
- 虚拟机:尝试更换虚拟网卡类型(如 VMware 中从
E1000
改为vmxnet3
) - 云服务器:检查云平台的网络配置(如安全组、DHCP 服务)
5. 可选:禁用 IPv6(若问题与 IPv6 有关)
编辑内核参数:
sudo nano /etc/default/grub
修改 GRUB_CMDLINE_LINUX
行,添加:
ipv6.disable=1
更新 GRUB 并重启:
sudo update-grub && sudo reboot
6. 其他可能性
- 清理冲突工具:卸载传统网络工具(仅保留
netplan
)sudo apt purge ifupdown networkd-dispatcher
- 检查 DNS 配置:确保
/etc/resolv.conf
未指向无效 DNS 服务器
最终验证
重启后检查启动耗时:
systemd-analyze blame | grep network
如果时间显著缩短(如从 2 分钟降到 10 秒),则问题已解决。若仍有异常,建议检查系统日志:
journalctl -u systemd-networkd
通过以上步骤,可以显著减少 Ubuntu 系统启动时的网络等待延迟。