文章目录
- [零 问题和解决思路](#零 问题和解决思路)
- [二 实际的操作和遇到的问题](#二 实际的操作和遇到的问题)
- [2.1 正常的操作思路](#2.1 正常的操作思路)
-
-
- [2.1.1 修正GRUB配置](#2.1.1 修正GRUB配置)
- [2.1.2 重启并切换内核](#2.1.2 重启并切换内核)
- [2.1.3 卸载6.17.0-19内核](#2.1.3 卸载6.17.0-19内核)
- [2.2 实际的问题------无法删除解决](#2.2 实际的问题——无法删除解决)
-
- [2.2.1 卸载NVIDIA驱动相关的6.17.0-19依赖包](#2.2.1 卸载NVIDIA驱动相关的6.17.0-19依赖包)
- [2.2.2 验证并锁定6.17.0-14内核](#2.2.2 验证并锁定6.17.0-14内核)
- [2.2.3 内核驱动恢复](#2.2.3 内核驱动恢复)
- [2.3 更糟糕的问题------黑屏解决](#2.3 更糟糕的问题——黑屏解决)
-
- [2.3.1 抢救黑屏问题](#2.3.1 抢救黑屏问题)
- [2.3.2 重装驱动](#2.3.2 重装驱动)
-
零 问题和解决思路
- 问题:最近需要在ubuntu24.04上使用vm,virtualbox等类型的虚拟机,在安装的过程中却遇到了内核不兼容问题,所以需要卸载最新的内核特别是
6.17.0-19-generi这个内核太新,导致了安装失败。 - 解决思路:切换到其他内核,进入桌面系统,然后卸载
6.17.0-19-generi内核。
二 实际的操作和遇到的问题
2.1 正常的操作思路
2.1.1 修正GRUB配置
- 查看当前系统中的内核和使用的内核信息命令。
bash
# 查看linux已安装内核命令
dpkg --list | grep linux-image
# 查看linux内核头信息命令
dpkg -l | grep linux-headers
# 查看当前桌面使用的内核
uname -r
bash
(base) root@yang-server:~# dpkg --list | grep linux-image
rc linux-image-6.14.0-27-generic 6.14.0-27.27~24.04.1 amd64 Signed kernel image generic
rc linux-image-6.14.0-35-generic 6.14.0-35.35~24.04.1 amd64 Signed kernel image generic
rc linux-image-6.14.0-36-generic 6.14.0-36.36~24.04.1 amd64 Signed kernel image generic
ii linux-image-6.14.0-37-generic 6.14.0-37.37~24.04.1 amd64 Signed kernel image generic
ii linux-image-6.17.0-14-generic 6.17.0-14.14~24.04.1 amd64 Signed kernel image generic
ii linux-image-6.17.0-19-generic 6.17.0-19.19~24.04.2 amd64 Signed kernel image generic
ii linux-image-generic-hwe-24.04 6.17.0-19.19~24.04.2 amd64 Generic Linux kernel image
(base) root@yang-server:~# dpkg -l | grep linux-headers
ii linux-headers-6.14.0-37-generic 6.14.0-37.37~24.04.1 amd64 Linux kernel headers for version 6.14.0
ii linux-headers-6.17.0-14-generic 6.17.0-14.14~24.04.1 amd64 Linux kernel headers for version 6.17.0
ii linux-headers-6.17.0-19-generic 6.17.0-19.19~24.04.2 amd64 Linux kernel headers for version 6.17.0
ii linux-headers-generic-hwe-24.04 6.17.0-19.19~24.04.2 amd64 Generic Linux kernel headers
(base) root@yang-server:~# uname -r
6.17.0-19-generi
- 重新编辑GRUB配置文件
bash
sudo vim /etc/default/grub
- 修改为正确的默认内核路径
将GRUB_DEFAULT行替换为:
python
GRUB_DEFAULT="Advanced options for ubuntu>ubuntu, with Linux 6.17.0-14-generic"
GRUB_TIMEOUT_STYLE=menu # 必须保持为menu,确保菜单显示
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR='Kubuntu'
GRUB_CMDLINE_LINUX_DEFAULT='quiet splash'
GRUB_CMDLINE_LINUX=""
- 保存并更新GRUB
bash
# 保存vim修改后执行
update-grub
2.1.2 重启并切换内核
-
执行重启命令,重启时会看到GRUB引导菜单:
bashreboot- 菜单顶部是
Kubuntu,下方有Advanced options for Kubuntu; - 系统会默认选中
Advanced options for Kubuntu>Kubuntu, with Linux 6.17.0-14-generic; - 等待系统启动完成。
- 菜单顶部是
-
登录后执行,正常输出应为:
6.17.0-14-generic。
bash
uname -r
2.1.3 卸载6.17.0-19内核
bash
# 卸载6.17.0-19内核及头文件
apt purge -y linux-image-6.17.0-19-generic linux-headers-6.17.0-19-generic
# 卸载对应的元包
apt purge -y linux-image-generic-hwe-24.04 linux-headers-generic-hwe-24.04
# 锁定6.17.0-14内核和头文件,不让系统更新
apt-mark hold linux-image-6.17.0-14-generic linux-headers-6.17.0-14-generic
# 清理残留
apt autoremove -y --purge
# 再次更新GRUB
update-grub
# 最终重启验证
reboot
2.2 实际的问题------无法删除解决
bash
(base) root@yang-server:~# apt purge -y linux-image-6.17.0-19-generic --fix-missing
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
将会同时安装下列软件:
linux-image-unsigned-6.17.0-19-generic
建议安装:
linux-hwe-6.17-tools linux-headers-6.17.0-19-generic
下列软件包将被【卸载】:
linux-image-6.17.0-19-generic*
下列【新】软件包将被安装:
linux-image-unsigned-6.17.0-19-generic
升级了 0 个软件包,新安装了 1 个软件包,要卸载 1 个软件包,有 0 个软件包未被升级。
需要下载 16.9 MB 的归档。
解压缩后会消耗 93.2 kB 的额外空间。
获取:1 https://repo.huaweicloud.com/ubuntu noble-updates/main amd64 linux-image-unsigned-6.17.0-19-generic amd64 6.17.0-19.19~24.04.2 [16.9 MB]
已下载 16.9 MB,耗时 5秒 (3,743 kB/s)
dpkg: linux-image-6.17.0-19-generic:有依赖问题,但是如您所愿,将继续卸载:
linux-signatures-nvidia-6.17.0-19-generic 依赖于 linux-image-6.17.0-19-generic | linux-image-unsigned-6.17.0-19-generic;然而:
即将删除 linux-image-6.17.0-19-generic。
未安装软件包 linux-image-unsigned-6.17.0-19-generic。
linux-modules-nvidia-570-server-6.17.0-19-generic 依赖于 linux-image-6.17.0-19-generic | linux-image-unsigned-6.17.0-19-generic;然而:
即将删除 linux-image-6.17.0-19-generic。
未安装软件包 linux-image-unsigned-6.17.0-19-generic。
- 问题根源是:NVIDIA驱动依赖6.17.0-19内核文件 ,删
linux-image-6.17.0-19-generic时,系统会自动装linux-image-unsigned-6.17.0-19-generic来满足依赖,导致删不干净。 - 解决方案:先删NVIDIA的6.17.0-19模块,再删内核,就不会触发自动重装。
| 要删的文件(6.17.0-19专属) | 保留的文件(全局NVIDIA驱动) |
|---|---|
linux-modules-nvidia-570-server-6.17.0-19-generic |
nvidia-driver-570-server(主驱动) |
linux-signatures-nvidia-6.17.0-19-generic |
/usr/lib/nvidia(驱动核心文件) |
| 只适配6.17.0-19内核的驱动模块 | 能给6.17.0-14编译新模块的驱动本体 |
2.2.1 卸载NVIDIA驱动相关的6.17.0-19依赖包
bash
# 卸载和6.17.0-19绑定的NVIDIA模块(核心,断依赖)
apt purge -y linux-signatures-nvidia-6.17.0-19-generic linux-modules-nvidia-570-server-6.17.0-19-generic
# 现在再删6.17.0-19无签名内核
apt purge -y linux-image-unsigned-6.17.0-19-generic
# 彻底清理所有残留不清除
# apt autoremove -y --purge
# 强制更新GRUB和内核链接
update-grub
update-initramfs -u
2.2.2 验证并锁定6.17.0-14内核
bash
dpkg --list | grep 6.17.0-19
# 锁定当前要用的6.17.0-14,避免系统乱更
apt-mark hold linux-image-6.17.0-14-generic linux-headers-6.17.0-14-generic
2.2.3 内核驱动恢复
bash
# 重新给6.17.0-14内核编译NVIDIA驱动模块
sudo apt install -y --reinstall linux-modules-nvidia-570-server-6.17.0-14-generic
# 重启驱动服务(不用重启系统)
sudo modprobe nvidia
2.3 更糟糕的问题------黑屏解决
- 问题:在重启驱动,然后其实我还重启了桌面服务程序,结果直接黑屏,重启选择
6.17.0-14内核也无法进入桌面 - 解决:使用 recovery 模式 修复。
2.3.1 抢救黑屏问题
- 重启机器:按住电源键重启。
- 进到 GRUB 菜单,看到开机引导时,选择:
Advanced options for Kubuntu
- 选择 6.17.0-14-generic (recovery mode)
- 在恢复菜单里选:root → Drop to root shell prompt,按一下回车,进 root 命令行。
- 立即删除 NVIDIA 内核模块(离线,无需网络)
bash
apt purge -y linux-modules-nvidia-*
- 重建内核启动镜像(让系统切换到开源 nouveau 驱动)
bash
update-initramfs -u
- 重启
bash
reboot
2.3.2 重装驱动
- 刷新软件源,打开终端,执行:
bash
sudo apt update
- 用命令行安装驱动(推荐版本),直接在终端执行,不要用图形界面:
bash
sudo apt install -y nvidia-driver-570-server