You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04执行dist-upgrade后,Initramfs在挂载本地根分区前启动ATA-over-Ethernet导致开机依赖DHCP租约阻塞

Ubuntu 22.04执行dist-upgrade后,Initramfs在挂载本地根分区前启动ATA-over-Ethernet导致开机依赖DHCP租约阻塞

嘿,这种情况确实挺闹心的——明明根分区在本地存储上,开机却非要卡着等DHCP租约,完全没必要对吧?大概率是这次dist-upgrade的时候,initramfs(开机初期加载的临时文件系统)里被意外加入了ATA-over-Ethernet(AoE)相关的钩子或模块,导致系统在挂载根分区的预准备阶段,就触发了DHCP客户端去尝试获取网络地址。

给你一步步的排查和修复方案:

1. 确认问题根源

先验证initramfs里是否真的带了不必要的网络相关组件:

lsinitramfs /boot/initrd.img-$(uname -r) | grep -E '(dhcp|aoe)'

如果输出里出现dhclient这类DHCP客户端,或是aoe相关的模块/脚本,那就实锤是这个问题了。

2. 清理initramfs里的不必要网络钩子

  • 检查/etc/initramfs-tools/hooks/目录,若存在aoe、dhcp相关的脚本文件,直接删除它们。
  • 打开/etc/initramfs-tools/modules文件,看看有没有强制加载aoe模块的行(比如aoe或aoe_net),有的话用#注释掉这些行。
  • 查看/etc/initramfs-tools/conf.d/目录下的配置文件,比如有没有名为ip的文件写着IP=dhcp,如果有就改成IP=none,或者直接删除该文件。

3. 更新initramfs镜像

修改完配置后,必须更新initramfs才能让改动生效:

sudo update-initramfs -u -k all

这个命令会更新所有已安装内核对应的initramfs镜像,确保不管启动哪个内核都不会有问题。

4. 临时验证(可选)

如果担心重启后仍有问题,可以先通过grub临时添加参数测试:

  • 开机时按住Shift进入grub菜单,选中常用内核按e进入编辑模式
  • 在linux开头的行末尾添加ip=none参数,按Ctrl+X启动系统
  • 如果这次能正常开机不卡DHCP,说明修复方向正确,接下来可以永久添加这个参数:
    1. 编辑/etc/default/grub文件,找到GRUB_CMDLINE_LINUX_DEFAULT,在引号内加入ip=none(比如从"quiet splash"改成"quiet splash ip=none")
    2. 执行sudo update-grub更新grub配置,以后开机就会自动带上这个参数了。

从你提供的dmesg和屏幕显示信息来看,系统在Running /scripts/init/premount阶段启动了DHCP客户端,完全是initramfs里的额外钩子触发的,把这些不必要的网络组件从initramfs里移除,就能恢复正常的本地开机流程了。

备注:内容来源于stack exchange,提问作者igel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:05:29