【个人日记】修复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
相关推荐
AAA代码批发商几秒前
Days 32 Linux 多线程:线程分离属性、多进程 vs 多线程、线程同步互斥锁、信号量
linux·笔记
技术不支持2 分钟前
wsl 离线安装 Debian 11, Debian 12等指定版本
运维·debian
Databuff5 分钟前
使用Pinpoint作分布式链路跟踪系统
运维·分布式·运维开发·开源软件
李少兄7 分钟前
Linux 服务器从零部署 kkFileView 完全指南(Docker 方案)
linux·服务器·docker
小张同学a.9 分钟前
OpenStack 私有云实战 3—— Neutron 网络服务与 Dashboard 控制台部署
linux·运维·服务器·openstack
DogDaoDao10 分钟前
HarmonyOS 深度解析:从微内核到 ArkTS 工程实战
android·linux·ios·华为·程序员·harmonyos·harmonyos next
味悲14 分钟前
HAProxy 负载均衡实战:从环境搭建到七层/四层/HTTPS 全解析
运维·https·负载均衡
从零开始的嵌入式之旅15 分钟前
day31
linux·c语言·经验分享·笔记·嵌入式硬件
云飞云共享云桌面23 分钟前
机械设计研发成本优化:怎样用一台高性能服务器替代 10 台 SolidWorks 工作站?
大数据·运维·服务器·汽车·制造
Horn Still Sounds28 分钟前
Linux系统编程进阶:进程回收、程序替换与多线程并发模型
linux·运维·服务器·c语言