Ubuntu 升级内核后失去网络连接
我在Ubuntu中解决网络问题的方法
在自动安装新内核后,Ubuntu 24.04 丢失以太网网络。这个问题第二次出现在我身上,因此我在此记录解决方法,以帮助遇到相同问题的其他人。
修复网络问题的命令
以下命令恢复了我的网络连接。首先,使用 uname -r 检查内核版本(它将显示类似 6.14.0-37-generic 的内容),然后将下面命令中的版本号替换为实际版本号:
# 检查网络接口和IP地址
ifconfig
# 检查内核版本
uname -r
# 更新软件包列表并升级系统
sudo apt update
sudo apt upgrade
# 安装上述发现版本的内核额外模块
# 将 6.14.0-37-generic 替换为实际内核版本
sudo apt install linux-modules-extra-6.14.0-37-generic
# 重建 initramfs 以包含新的内核模块
sudo update-initramfs -u
# 安装推荐的专有驱动程序(主要是用于 NVIDIA 显卡)
sudo ubuntu-drivers autoinstall
# 重启以应用更改
sudo reboot
问题与解决方案的理解
当 Ubuntu 自动升级到新内核版本(这在常规系统更新过程中会发生)时,有时网络驱动程序没有正确包含在新内核的启动文件系统中。这在 Ubuntu 24.04 升级后尤为常见,尤其是在那些需要额外内核模块的特定网络硬件系统上。
为什么会发生这种情况
- 内核模块是版本特定的:每个内核版本都需要其特定的一组驱动模块。
- initramfs 可能不完整:启动时加载的初始 RAM 文件系统(initramfs)可能不包含所有必要的网络驱动。
- 缺少额外模块软件包:新内核版本的
linux-modules-extra软件包可能没有被自动安装。
解决方案的工作原理
上述命令通过以下方式解决问题:
-
安装内核额外模块:
linux-modules-extra-<版本>-generic软件包包含额外的内核模块,其中包括许多未包含在基础内核包中的网络驱动程序。没有这些模块,您的网络硬件将无法被识别。 -
重建 initramfs:
update-initramfs -u命令确保所有必要的内核模块(包括网络驱动)被打包到 initramfs 中。这是关键的,因为 initramfs 在根文件系统挂载之前加载,它需要包含网络接口等关键硬件的驱动程序。 -
安装专有驱动:
ubuntu-drivers autoinstall命令主要用于处理显卡驱动(尤其是 NVIDIA),并不直接修复网络问题。然而,如果系统在内核升级过程中丢失了多个驱动,这将确保所有专有驱动程序被正确安装。 -
重启:这将加载配置正确的 initramfs 的新内核,恢复网络连接。
重启后,您的网络应该会恢复正常。您可以通过再次运行 ifconfig 或 ip a 来验证,查看网络接口是否已分配了 IP 地址。如果您需要 检查 Ubuntu 版本 以确保兼容性,有几种方法可用。
如果您正在使用服务器并在恢复连接后需要配置网络设置,您可能会发现我们的指南 如何在 Ubuntu Server 中更改静态 IP 地址 对进一步的网络配置有所帮助。
