Ubuntu18.04.5,启动时报: a start job is running for wait for network to be configured

4 阅读26分钟

启动时报: 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 更彻底,会完全阻止服务被启动(包括手动启动和依赖项启动)。

核心作用:
  1. 完全阻止服务启动(即使手动尝试启动也会失败)
  2. 破坏依赖链(依赖该服务的其他服务也会失败)
  3. 创建不可逆的禁用状态(直到显式解除屏蔽)

工作原理

  1. 创建符号链接
    /etc/systemd/system/ 目录中创建指向 /dev/null 的符号链接:

    /etc/systemd/system/服务名.service → /dev/null
    

    (覆盖原始服务定义)

  2. 优先级高于其他配置
    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(已禁用)

注意事项

  1. 依赖影响
    屏蔽父服务会导致依赖它的子服务启动失败:

    sudo systemctl mask network.target  # 会导致所有网络服务失败
    
  2. 紧急恢复
    如果误屏蔽关键服务(如 systemd-logind.service),可能导致无法登录。恢复方法:

    • 通过 Live CD 启动
    • 挂载系统分区
    • 手动删除 /etc/systemd/system/ 下的符号链接
  3. 屏蔽 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 默认无超时限制,会持续等待网络就绪。
步骤

  1. 打开配置文件:
    sudo nano /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
    
  2. [Service] 部分添加超时参数(例如 2 秒):
    [Service]
    Type=oneshot
    ExecStart=/lib/systemd/systemd-networkd-wait-online
    RemainAfterExit=yes
    TimeoutStartSec=2sec  # 添加此行
    
  3. 重新加载配置并重启:
    sudo systemctl daemon-reload
    sudo reboot
    

效果:2 秒后无论网络是否就绪,系统继续启动。


🌐 2. 将网卡标记为可选(适用于未连接或非必要网卡)

原因:若某网卡(如虚拟网卡或备用网卡)无法及时获取 IP,系统会阻塞启动。
步骤

  1. 编辑 Netplan 配置文件(通常位于 /etc/netplan/,如 00-installer-config.yaml):
    sudo nano /etc/netplan/00-installer-config.yaml
    
  2. 在对应网卡下添加 optional: true
    ethernets:
      ens33:
        dhcp4: true
        optional: true  # 添加此行
    
  3. 应用配置并重启:
    sudo netplan apply
    sudo reboot
    

效果:系统不再强制等待该网卡配置完成。


🔌 3. 忽略未使用的网卡(适用于多网卡环境)

原因:未连接的物理网卡或虚拟网卡会触发等待。
步骤

  1. 查看需要忽略的网卡名称(如 ens38):
    ip a  # 查看未分配 IP 的网卡
    
  2. 修改服务配置,添加 --ignore 参数:
    sudo nano /lib/systemd/system/systemd-networkd-wait-online.service
    
    修改 ExecStart 行为:
    ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=ens38
    
  3. 重新加载配置并重启。

⚠️ 4. 检查 Swap 分区问题(伴随其他报错时适用)

若错误信息包含 /dev/disk/by-uuid...,可能是 Swap 分区 UUID 错误导致超时。
步骤

  1. 查看当前 Swap 分区 UUID:
    sudo blkid | grep swap
    
  2. 对比 /etc/fstab 中的 UUID:
    sudo nano /etc/fstab
    
  3. 修正不一致的 UUID 或注释掉 Swap 行:
    # /dev/sda5 none swap sw 0 0  # 错误行前加 # 注释
    
  4. 更新并重启。

💎 方法选择建议

场景推荐方法复杂度
单网卡或通用情况设置超时(方法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
      

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启动,进入命令行后修复网络配置。

总结步骤

  1. 优先检查网络配置(IP/DNS/DHCP)。
  2. 延长超时时间禁用无关服务
  3. 通过日志精确定位问题
  4. 根据实际场景选择永久修复方案。

如果问题仍存在,建议提供journalctl -b的完整日志片段以进一步分析。










3️⃣ 参考 3

针对Ubuntu系统启动时卡在 "A start job is running for wait for network to be configured" 的问题,以下是详细的解决方案:


解决方法

方法一:设置超时时间(推荐)

通过修改 systemd-networkd-wait-online.service 服务的超时时间,避免系统因网络配置问题卡顿。

  1. 编辑服务文件
    打开终端,执行以下命令:

    sudo nano /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
    

    或者(如果文件不在上述路径):

    sudo nano /lib/systemd/system/systemd-networkd-wait-online.service
    
  2. 添加超时配置
    [Service] 部分末尾添加以下内容:

    TimeoutStartSec=1sec
    

    (建议设置为 1sec2sec,根据实际需求调整)

  3. 保存并退出
    Ctrl+O 保存文件,按 Ctrl+X 退出编辑器。

  4. 重新加载 systemd 配置

    sudo systemctl daemon-reload
    
  5. 重启系统验证

    sudo reboot
    

方法二:禁用网络等待服务

如果不需要系统在启动时等待网络配置,可以直接禁用该服务。

  1. 禁用服务

    sudo systemctl disable systemd-networkd-wait-online.service
    
  2. 屏蔽服务(可选)
    如果希望彻底禁用服务,可以执行:

    sudo systemctl mask systemd-networkd-wait-online.service
    
  3. 重启系统

    sudo reboot
    

方法三:忽略特定网卡

如果系统中有未使用的网卡导致检测延迟,可以忽略这些网卡的检测。

  1. 确认需要忽略的网卡名称
    例如,假设需要忽略 ens38 网卡:

    ip a
    
  2. 修改服务文件
    编辑服务文件并添加 --ignore=网卡名 参数:

    sudo nano /lib/systemd/system/systemd-networkd-wait-online.service
    

    ExecStart= 行后添加 --ignore=ens38,例如:

    ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=ens38
    
  3. 重新加载配置并重启

    sudo systemctl daemon-reload
    sudo reboot
    

方法四:检查网络配置

如果问题由网络配置错误引起(如静态IP冲突或DHCP失败),需修复网络配置。

  1. 检查网络接口配置
    查看 /etc/netplan/*.yaml/etc/network/interfaces 文件,确保配置正确。

  2. 测试网络连接
    手动重启网络服务并检查状态:

    sudo systemctl restart networking
    sudo systemctl status networking
    
  3. 修复交换分区问题(可选)
    如果启动时还报 a start job is running for /dev/disk/by-uuid/... 错误,需检查 /etc/fstab 中的交换分区UUID是否正确:

    sudo blkid
    sudo nano /etc/fstab
    

注意事项

  1. 备份配置文件
    修改前建议备份原始文件:

    sudo cp /lib/systemd/system/systemd-networkd-wait-online.service /lib/systemd/system/systemd-networkd-wait-online.service.bak
    
  2. 系统更新的影响
    如果系统更新后配置被重置,需重新应用上述修改。

  3. 适用场景

    • 超时时间设置:适用于网络偶尔延迟的场景,避免系统卡顿。
    • 禁用服务:适用于不需要依赖网络启动的服务场景。
    • 忽略网卡:适用于多网卡环境且部分网卡未使用的场景。

总结

  • 推荐优先使用方法一(设置超时时间),既能解决卡顿问题,又不会完全放弃网络检测。
  • 如果问题依旧,再尝试 方法二(禁用服务)方法三(忽略网卡)
  • 如果涉及复杂网络配置,需结合 方法四 调整网络设置。

希望以上方法能帮助你解决问题!如果仍有疑问,欢迎进一步讨论。










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” 命令来应用配置。

检查服务依赖关系

  • 在 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” 命令来应用配置。

检查服务依赖关系

  • 在 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 地址并完成路由配置。超时机制由不等式控制: twaitttimeout+tnetworkt_{\text{wait}} \leq t_{\text{timeout}} + t_{\text{network}} 其中 ttimeoutt_{\text{timeout}} 是配置的超时阈值,tnetworkt_{\text{network}} 是实际网络初始化时间。










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 超时
  • 网络接口未正确配置
  • 冲突的网络管理工具(如同时使用 netplanifupdown

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 系统启动时的网络等待延迟。