(2025.07)解决——ubuntu20.04系统开机黑屏,左上角光标闪烁

(2025.07)解决——ubuntu20.04系统开机黑屏,左上角光标闪烁

前面一些碎碎念:

    电脑装的双系统,之前都还好着,今天突然ubuntu开机的时候黑屏了,左上角有光标在闪烁,也查了一些资料,基本上大家的都是驱动有问题,还有内存问题。(个人建议:谨慎删除驱动或重装之类的操作,防止因操作不当导致一系列的麻烦)

    看了一些教程,说下我的调试之路吧。。。

    在黑屏,光标闪烁的那一页,ctrl+shift+f1,然后出现login,输入用户名和密码,下面就会出现和终端一样的界面,我尝试了nvidia-smi,发现输出没问题,那就应该不是驱动的问题。内存我自己感觉也不是,所以再找其他问题。

    中间还进行了一些ubuntu的高级选项中的一些操作,在其他文章中看的解决方法,但是并没有效果。

   然后重启了一下,到了选择ubuntu、ubuntu的高级选项(Advanced ..)、windows...的那个界面<GRUB界面>

一、在 GRUB 启动界面:

  • 选择你当前的 Ubuntu 启动项;
  • e 进入编辑;
  • 确保quiet splash 改成 nomodeset,或直接删掉 quiet splash
  • 不要重复写多个 nomodeset,只保留一个
  • 然后按 Ctrl+XF10 启动。

    等待黑屏 + 光标闪烁出现后,Ctrl + Alt + F3(或 F2~F6) 尝试进入 tty 命令行界面。

若成功进入终端,登录后继续修复。

执行结果:并没有成功进入终端,又进入了之前那个命令行界面。 

    能够成功进入 tty,这说明系统本身是正常启动的,问题出在图形界面(GUI)无法启动。 

    现在的目标是:

二、修复图形界面登录失败问题,重新进入桌面环境。

确认图形登录服务是否运行(gdm3/lightdm/sddm)  

systemctl status gdm3 

看到inactive,输入:

sudo systemctl restart gdm3 

目前的状态是:

    在 tty 中运行 sudo systemctl restart gdm3 后,终端“卡住”,只剩下一个闪烁的光标,无法继续输入。

这是正常现象(这是预期行为,不是卡死!)。原因如下:

    gdm3 是图形登录服务,当执行:

sudo systemctl restart gdm3

  系统会尝试重启图形界面,这时候:

  • tty 所在的图形会话被“杀掉”或中断;
  • 如果图形服务成功启动,你会看到界面自动切换到 GUI;
  • 如果失败,系统可能回退到黑屏 + 光标,或者继续卡住。
查看图形界面崩溃原因日志(看不太懂,不做maybe也行)

执行:

journalctl -xe | grep gdm

或者查看图形界面的日志:

cat ~/.xsession-errors cat /var/log/Xorg.0.log | grep EE

这些日志会告诉我们 gdm3 或 X server 是否崩溃、加载失败。

临时启动图形界面看报错(测试)

执行:

startx
 执行结果:journalctl -xe | grep gdm 无反应,startx运行后未启动图形界面 

问了gpt: 

第 1 步:查看 startx 报错输出内容(关键)

    你说 startx 无图形界面,但没有贴报错。请你执行以下命令,并贴出部分内容:

cat ~/.xsession-errors

或者:

cat /var/log/Xorg.0.log | grep EE

这一步是判断:是不是 X server 根本启动不了,我们才能继续下一步。

第 2 步:重装桌面环境(直接覆盖修复)

    无论问题是 GNOME 损坏、X server 崩溃、配置错误等,以下命令会强制恢复你默认的 Ubuntu 桌面环境:

sudo apt update sudo apt install --reinstall ubuntu-desktop gdm3 xorg dbus
 注:这一步不会删除你的文件,但会重装 GUI 相关组件。
运行结果;

sudo apt update

报错apt:error while loading shared libraries:libstdc++.so.6: cannot open shares object file: no such file or directory 

这意味着:

  • 你的系统中 C++ 运行时库 libstdc++.so.6 丢失或损坏
  • 所有依赖它的工具(如 aptdpkggcc、图形界面等)都会无法正常工作;
  • 这可能是系统更新时中断、误删或磁盘错误导致的。

 然后就在想能不能先跳过这一步,修复图形化界面后再解决这个问题,结果:

你现在无法跳过修复 libstdc++.so.6,也就无法修复图形化界面。

原因如下:

    你现在的系统缺失了关键运行库:libstdc++.so.6,它是 GCC 和 C++ 程序运行的必需组件,影响范围非常广。

  • apt 无法运行;
  • dpkgsystemctlgdm3Xorgstartx这些 GUI 相关程序全部依赖它
  • 甚至 桌面环境本身(如 GNOME)启动器、显示服务等也用不到。
所以:图形界面的一切恢复行为都会失败,除非你先修复这个库。

二、修复步骤:(主要的解决方法)

1、libstdc++6(适用于 Ubuntu 20.04)国内镜像地址:

下载这个 .deb 文件:

阿里云镜像站直链

https://mirrors.aliyun.com/ubuntu/pool/main/g/gcc-10/libstdc++6_10.5.0-1ubuntu1~20.04_amd64.deb

文件名:

libstdc++6_10.5.0-1ubuntu1~20.04_amd64.deb

下载后:

  1. 把这个 .deb 文件放到 U 盘;
  2. 插入 Ubuntu;
  3. 进入 tty;

2、重新识别 U 盘设备名

执行 lsblk 看设备结构
lsblk

看到类似这样的输出:

重点是找到带有 RM 1(表示可移动设备) 的项,如:

表示 U 盘的设备是:/dev/sda1


3、正确挂载 U 盘并修复步骤如下

(1)挂载 U 盘
sudo mkdir -p /mnt/usb sudo mount /dev/sda1 /mnt/usb cd /mnt/usb ls

确认你能看到:

libstdc++6_10.5.0-1ubuntu1~20.04_amd64.deb

(2)解压并复制库文件
dpkg-deb -x libstdc++6_*.deb temp sudo cp temp/usr/lib/x86_64-linux-gnu/libstdc++.so.6* /usr/lib/x86_64-linux-gnu/ sudo ldconfig

(3)验证是否修复成功
apt --version
apt --version 运行后apt 2.0.10(amd64)

4、修复图形界面(GUI)

(1)更新软件列表
sudo apt update

(2)重装桌面环境 + 图形服务
sudo apt install --reinstall ubuntu-desktop gdm3 xorg

这一步可能会下载几十~几百 MB,稍等片刻。

(3)设置默认显示管理器为 GDM3(图形登录服务)
sudo dpkg-reconfigure gdm3

如果出现界面,选择 gdm3,然后回车确认。

报错:gdm.service is not active,cannot reload ...
具体操作步骤:
1) 查看 gdm 服务状态
sudo systemctl status gdm.service

看看有没有报错信息。

2.)尝试启动 gdm 服务
sudo systemctl start gdm.service

如果成功,执行:

sudo systemctl status gdm.service

确认是否已激活。

 运行结果:sudo systemctl start gdm.service 回车后进入了图形化界面 
3.)重启测试

执行:

sudo reboot

看开机是否能直接进入图形界面。

4、正常使用系统

如果开机能正常进入桌面,问题就彻底解决了。

Read more

C++微服务实战中好友管理子服务的全面解析

C++微服务实战中好友管理子服务的全面解析

【C++ 微服务实战】IM 好友管理子服务全解析:从 Proto 定义到高可用部署 在即时通讯(IM)系统中,好友管理子服务是连接 “用户社交关系” 与 “聊天会话” 的核心枢纽 —— 它既要处理好友申请、关系维护,也要管理单聊 / 群聊会话的创建与成员维护。本文基于实际项目代码(C++/brpc/Protobuf/ODB),从 “接口设计”“数据模型”“核心逻辑”“高可用部署” 四个维度,完整拆解好友管理子服务的实现细节,带你理解如何构建一个解耦、可靠的微服务。 一、服务定位与技术栈 在 IM 微服务架构中,好友管理子服务(Friend Server)的核心职责是 **“管理用户社交关系” 与 “维护聊天会话容器”**,向上对接网关服务接收客户端请求,向下依赖 MySQL/ES 存储数据,

By Ne0inhk
Re:从零开始的 C++ 入門篇(十一):全站最全面的C/C++内存管理的底层剖析与硬核指南

Re:从零开始的 C++ 入門篇(十一):全站最全面的C/C++内存管理的底层剖析与硬核指南

◆ 博主名称: 晓此方-ZEEKLOG博客 大家好,欢迎来到晓此方的博客。 ⭐️C++系列个人专栏: Re:从零开始的C++_晓此方的博客-ZEEKLOG博客  ⭐️踏破千山志未空,拨开云雾见晴虹。 人生何必叹萧瑟,心在凌霄第一峰 目录 0.1概要&序論 一,布局模型与常见误区解析 1.1C/C++内存布局 1.2内存布局易误解点 二,复习C语言的内存管理方法 2.1malloc 2.2calloc 2.3relloc 2.4free 2.5罗列常见的内存管理错误 三,C++内存管理方法 3.1new/delete管理体系 3.1.1开辟单个空间与释放 3.1.2开辟多个连续的空间与释放

By Ne0inhk
C++之基于正倒排索引的Boost搜索引擎项目searcher部分代码及详解

C++之基于正倒排索引的Boost搜索引擎项目searcher部分代码及详解

这个searcher.hpp的本质是一种使用其他文件,然后实现自己功能的一种更上层的封装。 它主要实现的是就是他用户的搜索词进行处理,接着根据这个处理结果来返回网页给用户。 1. 单例模式 这边的话我们使用的是单例模式来进行实例化。同时我们建立正倒排索引。 private: ns_index::Index* index; public: Searcher(){}; ~Searcher(){}; public: void InitSearcher(const std::string& input) { //1 创建(获取)一个index对象 //在这里我们用的是单例模式 index=ns_index::Index::Getinstance(); //2根据对象建立索引 index->BuildIndex(input); //std::cout<<"建立索引成功"<<std:

By Ne0inhk
【C++】深入解析AVL树:平衡搜索树的核心概念与实现

【C++】深入解析AVL树:平衡搜索树的核心概念与实现

【C++】深入解析AVL树:平衡搜索树的核心概念与实现 * 摘要 * 目录 * 一、AVL树的概念 * 二、AVL树的模拟实现 * 1. 节点结构体和树的类模板 * 2. 平衡因子的概念和实现 * 3. 插入 * 4. 旋转操作 * 4.1 右单旋 * 4.2 左单旋 * 4.3 左右双旋 * 4.4 右左双旋 * 三、AVL树的平衡检测 * 总结 摘要 本文深入解析了AVL树的核心概念与实现,包括节点结构设计、平衡因子定义及其更新机制、插入操作的自下而上平衡调整策略,以及四种旋转方式(左单旋、右单旋、左右双旋、右左双旋)对保持树平衡的重要作用。同时,提供了AVL树高度计算与平衡检测的实现方法,确保每个节点的平衡因子正确维护,从而保证树在插入操作后的高效性与稳定性。通过本文内容,读者可以系统掌握AVL树的原理、实现与调试技巧,

By Ne0inhk