【个人日记】修复ubuntu屏幕显示不正常

1. 问题描述

今天打开我的ubuntu系统之后,发现屏幕显示不正常(分辨率、画幅宽高比不对),这是我第二次遇到这个问题了,因此需要特意记录一下。

下次如果遇到相同的问题,可以直接看 "4. 小结" 这一节

2. 问题分析

  • 问题
    • 首先画面分辨率不对其实是显卡驱动的问题,可以通过DKMS修复。
    • 然而我尝试修复之后发现显卡驱动没问题了,但是网卡驱动有问题。而这还没办法通过修改网络配置来解决。
  • 分析
    • 问题的原因在于进入了错误的系统版本(可能是我的系统自动更新过,而重启时进入了新系统,导致驱动失效)
  • 解法
    • 综上所述,对我目前的设备而言,最好的方法就是固定我之前使用的系统,简称锁定系统版本

3. 具体修复过程

3.1 错系统上检查问题

  • 显示系统信息(终端命令行)
bash 复制代码
uname -r
  • 显示显卡相关信息(终端命令行)
bash 复制代码
nvidia-smi
  • 显示网卡相关信息(终端命令行)
bash 复制代码
ip addr show

这一步过后直接提示我

text 复制代码
1: lo:<LOOPBACK,UP,LOWER UP> mtu 65536 qdisc noqueue state UNKNOWN group defaul t qlen 1000 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
inet 127.0.0.1/8 scope host lo 
valid_lft forever preferred_lft forever inet6::1/128 scope host noprefixroute 
valid_ift forever preferred_lft forever 

AI 告诉我:

问题找到了!网卡完全没启动 - ip addr show 只显示了 lo(本地回环),没有显示 eth0、enp* 或 wlp* 等物理网卡。

这是内核 6.17.0 导致网卡驱动失效的典型症状。新内核可能缺少你的主板网卡驱动(X570S AORUS MASTER 通常是 Intel I225-V 或 Realtek 2.5G 网卡)。

最快解决方案:回退到旧内核

我继续问:不能通过设置一些网络设置来完成连接WiFi吗?

AI 回答:

不能 - 这不是设置问题,是硬件驱动层面完全没识别网卡

从你的输出看:

只有 lo(本地虚拟网卡)

没有任何无线网卡(wlp)或有线网卡(eth/enp*)显示

这意味着系统根本看不到你的物理网卡硬件,就像电脑没插网卡一样。无论怎么设置WiFi密码、IP地址都没用,因为底层硬件没驱动起来。

3.2 临时修改 grub 文件(目的是开机时可以选正确系统)

  • step1:打开 grub 文本文件(终端命令行)
bash 复制代码
sudo gedit /etc/default/grub

注:我这里是因为安装过 gedit 文本编辑器所以用 gedit 命令即可。没有安装的话,用 vim 或者 nano 命令

  • step2:修改 grub 文件内容
text 复制代码
# 修改这几行:
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
  • step3:使其生效(终端命令行)
bash 复制代码
sudo update-grub

3.3 重启时进入 GRUB

  • step1:F12 进入

    由于我的主板是 AORUS,开机时看到 AORUS logo 时立即按 F12 进入启动菜单

  • step2:一级菜单选 Advanced options for Ubuntu

    然后给我了几个选项

  • step3:二级菜单选择 老版本的系统

  • 这样进入之后就正常了

3.4 收尾

3.4.1 grub 文件修改

3.4.1.2 关键
  • 最关键的是修改 /etc/default/grub 的如下内容(注意选择正确的系统版本)
text 复制代码
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.14.0-37-generic"

并通过如下命令使其生效

bash 复制代码
sudo update-grub
3.4.1.2 具体步骤
  • step1:查看当前系统版本
bash 复制代码
uname -r
  • step2:查看并复制下面的信息(选择对应的系统版本的)
bash 复制代码
sudo grep menuentry /boot/grub/grub.cfg
  • step3:修改 grub 文件并使其生效

    • 终端命令行

      bash 复制代码
      sudo gedit /etc/default/grub
    • 修改内容

      text 复制代码
      GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.14.0-37-generic"
      GRUB_TIMEOUT_STYLE=hidden
      GRUB_TIMEOUT=0
  • step4:使其生效

bash 复制代码
sudo update-grub

3.4.2 删除问题内核

bash 复制代码
# 删除 6.17.0 内核镜像和头文件
sudo apt remove --purge linux-image-6.17.0-14-generic linux-headers-6.17.0-14-generic

# 清理残留
sudo apt autoremove
sudo apt autoclean

# 再次更新 GRUB
sudo update-grub

3.4.3 防止自动更新

bash 复制代码
# 锁定内核包,阻止自动更新
sudo apt-mark hold linux-image-generic linux-headers-generic

3.4.4 重启系统(用于验证)

bash 复制代码
sudo reboot

4. 小结

  • 问题:由系统更新导致的驱动不匹配
  • 解法:回滚系统版本。思路就是:
    • 重启时通过 F12 进入GRUB页面,选择老版本系统进行验证
    • 验证成功后修改 /etc/default/grub 文件,指定启动时用哪个系统
    • 最后补充一个阻止系统自动更新的操作,也可以补充一个 清理错误的系统 的操作
  • 操作:
    • step1:确认错误系统版本:uname -r

    • step2-1:修改 /etc/default/grub 文件,通过 sudo update-grub 使其生效

      text 复制代码
      # 修改这几行:
      GRUB_TIMEOUT_STYLE=menu
      GRUB_TIMEOUT=10
    • step2-2:重启系统,并选择某个老版本系统进行验证

      • sudo reboot
      • 看到 AORUS logo 时立即按 F12 进入启动菜单
      • 一级菜单选择:Advanced options for Ubuntu
      • 二级菜单选择一个老版本的系统
    • step2-3:进入后验证是否正常(失败则重复step2-2直至选到正确的系统)

      bash 复制代码
      ip addr show
      nvidia-smi
    • step3:验证成功后固定系统

      • 查看当前系统(uname -r)
      • 修改 /etc/default/grub 文件,通过 sudo update-grub 使其生效
      text 复制代码
      GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 6.14.0-37-generic"
      GRUB_TIMEOUT_STYLE=hidden
      GRUB_TIMEOUT=0
      • 删除问题内核,通过 sudo update-grub 使其生效
      • 防止自动更新
      bash 复制代码
      sudo apt-mark hold linux-image-generic linux-headers-generic
      • 重启系统(sudo reboot)并验证

附录

以后想更新内核时,手动解除锁定:

bash 复制代码
sudo apt-mark unhold linux-image-generic linux-headers-generic
sudo apt update && sudo apt upgrade
相关推荐
Vect__6 小时前
深刻理解进程、线程、程序
linux
w6100104666 小时前
CKAD-2026-Ingress
运维·k8s·ckad
末日汐7 小时前
传输层协议UDP
linux·网络·udp
zzzsde10 小时前
【Linux】库的制作和使用(3)ELF&&动态链接
linux·运维·服务器
CQU_JIAKE10 小时前
4.3【A]
linux·运维·服务器
AI周红伟10 小时前
OpenClaw是什么?OpenClaw能做什么?OpenClaw详细介绍及保姆级部署教程-周红伟
大数据·运维·服务器·人工智能·微信·openclaw
Elastic 中国社区官方博客10 小时前
当 TSDS 遇到 ILM:设计不会拒绝延迟数据的时间序列数据流
大数据·运维·数据库·elasticsearch·搜索引擎·logstash
qing2222222210 小时前
Linux中修改mysql数据表
linux·运维·mysql
Alvin千里无风10 小时前
在 Ubuntu 上从源码安装 Nanobot:轻量级 AI 助手完整指南
linux·人工智能·ubuntu
杨云龙UP11 小时前
Oracle 中 NOMOUNT、MOUNT、OPEN 怎么理解? 在不同场景下如何操作?_20260402
linux·运维·数据库·oracle