Linux启动黑屏卡住Logo登录界面无法进入系统的终极解决方式

news2024/11/27 13:46:23

Linux启动黑屏 卡住Logo登录界面无法进入系统的终极解决方式 "⮫适用于ubuntu系统⮨"

  • 起因
  • 经过
    • 方法1--甲说
    • 方法2--乙说
    • 方法3--丙说
    • 方法4--丁说
  • 结果
    • 中途误删ubuntu的etc文件如何恢复
    • 于是,我重装了系统,没想到有意外收获(中途还把新系统的etc文件copy到错误的系统中试了还是黑屏卡住...)
  • 到目前为止我是解决了它们(gdm3与lightdm)

为了避坑,有针对性的解决相应的问题,对阵下药,同时以便后续回忆与参考,特此记录。

起因

因为深度学习的需要,得适配CUDA和Pytorch-GPU,因此在安装Nvidia驱动-535的时候,ubuntu自带的gdm3图形界面与该驱动之间冲突了。

补充:我是单系统,之前的Windows被我移除了。

因此导致开机黑屏或Logo卡住或只显示光标在闪或页面Error在跳…

在这里插入图片描述

经过

方法1–甲说

甲说:
造成该问题的原因是由于显卡驱动问题导致的,Ubuntu系统使用的nouveau导致的。当系统作者自己开发的第三方驱动与显卡不适配时,就会导致黑屏问题。

将nouveau驱动禁用掉不就好了吗,nouveau驱动问题通常发生在Nvida显卡上,因为Nvida没有将他们的显卡驱动开源给Linux系统开发者。

临时解决办法:
按ctrl+alt+(F1或者F2或者F3)进入命令行界面,输入用户名和密码,reboot,重新启动。
或者参考按键重启(最好不要直接按电源开关启动):

在这里插入图片描述
在UEFI引导界面,光标移动至Ubuntu,如下图所示:

在这里插入图片描述
按键盘E键,进入该引导的编辑模式:

在这里插入图片描述
在linux这行末尾加入nomodeset,视情况也可以将ro改写为rw。

在这里插入图片描述
按cttl+X或者F10保存退出,再次尝试。

PS:(有的教程说所有系统内核都要设置为rw,加入nomodeset,我好像都试了没有很大的效果。

以上步骤是间断性的,可以尝试彻底解决,即安装Nvidia驱动步骤之一:参考:Ubuntu18.04安装Nvidia驱动【全网不坑,超全步骤】(亲测~)

  1. 打开一个终端,输入:
sudo gedit /etc/modprobe.d/blacklist.conf

在这里插入图片描述

  1. 在文件最后输入:
blacklist nouveau

在这里插入图片描述

保存后在终端输入:

sudo update-initramfs -u

在这里插入图片描述

来更新系统文件。

方法2–乙说

甲的方式他用不了,他尝试重装桌面:

  1. 进入TTF2或者3或者4…的界面,即在闪烁界面时,按Ctrl+Alt+1(或者2-6任意数字键)进入tty界面
  2. 登入tty后,按照顺序重装:
sudo apt-get update
sudo apt-get install ubuntu-desktop #安装ubuntu桌面托管器
sudo apt-get install unity
sudo apt-get install lightdm #安装lightdm
sudo service lightdm restart #重启lightdm

当然你要搞清楚桌面的形式,如果是gonme或gdm3就是:

sudo apt-get update
sudo apt-get install ubuntu-desktop #安装ubuntu桌面托管器
sudo apt-get install unity
sudo apt-get install gdm3 #安装gdm3
sudo service gdm3 restart #重启gdm3

如若没有效果,可考虑重装显卡驱动:
Ubuntu18.04安装Nvidia驱动【全网不坑,超全步骤】(亲测~)

参考命令:

sudo apt-get purge nvidia* #删除旧的驱动
sudo  ./NVIDIA.run #安装驱动
sudo service lightdm start #重新启动桌面

最后更改一下自己的默认开启方式:

sudo systemctl set-default graphical.target 

补充:使用命令检查当前正在使用哪个显示管理器:

cat /etc/X11/default-display-manager

使用命令:

sudo dpkg-reconfigure lightdm

在这里插入图片描述

可以更换图形显示模式gdm3与lightdm,但是在我的ubuntu22.04中,gdm3与lightdm不是很兼容。

再次尝试。

方法3–丙说

利用对应内核的恢复模式进行修复就好了,实在不行还可以先恢复再加上提到的:linux行末尾加入nomodeset,将ro改写为rw。

在启动页面,或者黑屏重启的时候一直按SHIFT,直到页面显示:
在这里插入图片描述

选择相应内核的恢复模式:

在这里插入图片描述

这只是个例子,ubuntu22.04对应Linux 6.2.27或6.2.28

选择修复即可:

在这里插入图片描述
在这里插入图片描述

有的人可能使用老版本的内核可以进去系统,新版本的进不去,这是因为:内核升级,导致无法正常启动。

使用命令列出正在使用的内核:

uname -ar

使用命令sudo update-grub列出所有的内核,然后删除异常的内核包:

sudo apt-get purge linux-image-4.4.0-146-generic
sudo apt-get purge linux-headers-4.4.0-146

reboot。

还有人是因为内存爆了,不足,可以使用恢复模式删除文件或自动删除文件:
参考:Ubuntu系统用户登陆陷入登陆循环—权限、.xsession-errors、内存不足问题

方法4–丁说

xorg.conf 是X服务器的配置文件。当配置出错时,会导致X服务器无法启动,从而退出到命令行界面。可以查看硬件配置,然后根据xorg.conf的配置说明,正确配置。有时候删掉就解决了问题:sudo rm /etc/X11/xorg.conf,具体可以参考:Ubuntu系列弹性云服务器如何安装图形化界面

在NVIDIA驱动安装的过程中,会弹出这么一个问题:

Would you like to run the nvidia-xconfig utility to automatically update your X 
configuration file so that the NVIDIA X driver will be used when you restart X? 
Any pre-existing X configuration file will be backed up.
Yes   No

该设置默认为No,保持默认设置最好,如果安装过程中选择了Yes,可以按以下方法进行补救:

找到xorg.conf,xorg.cong-nvidia-xconfig这两个文件。xorg.conf是驱动安装过程中被修改过的(选择Yes的后果),修改了系统的X服务器配置文件/etc/X11/xorg.conf,来让X服务器自动指向NVIDIA X来作为图形驱动。xorg.cong-nvidia-xconfig是备份的原文件。解决办法是,只需要删除修改过的xorg.conf,并将xorg.cong-nvidia-xconfig重命名为xorg.conf。

sudo pkill Xorg  或者  sudo restart lightdm

最后,reboot。
重新启动尝试进入图形界面。

还有其它方式待补充…

结果

凭借3-4天的琢磨是解决了,估计之间还有一些小问题没被发现…

  1. 移除Nvidia所有驱动

通过以下命令查看本机安装的所有与nvidia有关的包:

dpkg -l | grep -i nvidia  

停止所有Nvidia驱动程序:

sudo systemctl stop nvidia-persistenced.service
sudo systemctl stop nvidia-fallback.service
sudo systemctl stop nvidia-kernel.service
sudo systemctl stop nvidia-smi.service
sudo systemctl stop nvidia-uvm.service
sudo systemctl stop nvidia-drm.service
sudo systemctl stop nvidia.service

进行移除:

sudo apt-get --purge remove nvidia*
sudo apt-get purge nvidia*
sudo apt autoremove  #此命令少用,可能删除其它依赖的库文件

再次检查:

lsmod | grep nouveau

如果有输出结果,则表示Nvidia驱动程序已成功卸载,并且系统现在正在使用开源的Nouveau驱动程序。

PS:若删不掉,进入相应的内核,选择root,去这里面用命令删除。

  1. 移除gdm3和lightdm:
sudo apt-get --purge remove lightdm
sudo apt-get --purge remove gdm3 #可选
  1. 进入恢复模式,进行修复:
    在这里插入图片描述
  2. 修复完,再利用命令安装:
sudo apt-get update
sudo apt-get install ubuntu-desktop #安装ubuntu桌面托管器
sudo apt-get install unity
sudo apt-get install gdm3 #安装gdm3
sudo service gdm3 restart #重启gdm3
sudo chmod +x ./NVIDIA-Linux-x86_64-535.104.05.run
sudo ./NVIDIA-Linux-x86_64-535.104.05.run --no-x-check -no-opengl-files

-no-opengl-files:只安装驱动文件,不安装OpenGL文件。
-no-x-check:安装驱动时关闭X服务,不设置可能导致安装失败。
在这里插入图片描述
返回图形界面后打开终端输入:

nvidia-smi

出现以下说明安装成功:
在这里插入图片描述

  1. 如果你们能按照上面步骤成功那真好啦,可我手残,把ubuntu中的etc文件误删了,在设置etc/X11.conf的时候:

在这里插入图片描述
在这里插入图片描述

中途误删ubuntu的etc文件如何恢复

【技术分享】如何恢复Linux下误删/etc目录数据
linux重要的目录之etc
在这里插入图片描述
尝试拷贝另一台机的etc文件(系统要类似),复制到/根目录,重启…
因此有条件的同志可以试试这个:extundelete,它能够恢复某一个时间节点前的样子。
rm 命令表示永久删除,但是不代表文件就一定找不回来,只是找回的几率有大有小。

在这里插入图片描述
在这里插入图片描述

有其他人成功了,但是有人测试失败,释放内存崩溃,此处存疑,后续再测,记录一下常用参数:

查询inode文件状态:/usr/local/extundelete/bin/extundelete /dev/vda1 --inode 1311798
恢复指定节点数据:/usr/local/extundelete/bin/extundelete /dev/vda1 --restore-inode 1311798
恢复单个文件:/usr/local/extundelete/bin/extundelete /dev/vda1 --restore-file root/examples/extundelete-0.2.4.tar.bz2
恢复一个目录:/usr/local/extundelete/bin/extundelete /dev/vda1 --restore-files root/examples
恢复所有文件:/usr/local/extundelete/bin/extundelete /dev/vda1 --restore-all

于是,我重装了系统,没想到有意外收获(中途还把新系统的etc文件copy到错误的系统中试了还是黑屏卡住…)

按照流程:https://www.cnblogs.com/yxh23/p/13621432.html安装系统。

然后使用命令查看:

cat /etc/X11/default-display-manager

通常返回:

/usr/sbin/gdm3
或
/usr/sbin/lightdm
或
/usr/sbin/sddm

而我输出的是/usr/sbin/gdm3。

则我按照步骤:Ubuntu18.04安装Nvidia驱动【全网不坑,超全步骤】(亲测~)当中的第三步开始:

在这里插入图片描述

禁用nouveau,关闭gdm3图形界面,然后安装lightdm:

sudo service gdm3 stop
sudo apt-get install lightdm

PS:后续可以使用sudo dpkg-reconfigure lightdm更换图形显示。
继续安装下载好的驱动NVIDIA-Linux-x86_64-535.104.05.run:

sudo chmod +x ./NVIDIA-Linux-x86_64-535.104.05.run
sudo ./NVIDIA-Linux-x86_64-535.104.05.run --no-x-check -no-opengl-files

在这里插入图片描述

然后直接启动图形界面:

sudo service lightdm restart
或
sudo service gdm3 restart

这时候我发现 两个图形界面可以轻松切换:

即打开ttf模式,输入哪个命令就进入哪个图形界面sudo service lightdm restart或者sudo service gdm3 restart

如果没记错的话,按照第一个选项启用的是lightdm会出现蓝屏:
在这里插入图片描述

可以打开桌面环境选择,更换其它的除了最后一个默认的外,其它的均可以正常进入:

在这里插入图片描述

而且其它的进入后,你再次进入锁屏界面选择桌面模式的话,所有的都可以进入了,就不会有蓝屏…(这我也很奇怪,但是问题从现象上来说都解决掉了)

另外,关于gdm3和lightdm之间的区别和问题,可以参考:
Ubuntu22.04利用lightdm替换gdm3出现的问题或Bug
主要是:

Ubuntu22.04利用lightdm替换gdm3出现的问题或Bug

到目前为止我是解决了它们(gdm3与lightdm)

因为是完成后记录的,写的难免有些些不完整,后续还会继续完善和补充~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/952523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言每日一练-------Day(9)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:字符个数统计 多数元素 投票法 💓博主csdn个人主页&#xf…

ITMS介绍

ITMS(Integrated Terminal Management System),终端综合管理系统。 主要用于家庭网关的设备注册,初始化自动配置,软件版本升级,远程故障诊断修复和设备监控等。它通过北向连接服开系统用于接收业务工单&am…

CorelDRAW快捷键大全

CorelDRAW是一款非常优秀且专业的平面设计软件,为用户多种强大的平面设计所需要用到的功能,帮助用户能够更好的进行设计,快速的达到自己想要的标准。下面小编就给大家分享一下CorelDRAW快捷键大全,有需要的小伙伴快来看一看吧。 …

Vue2023 面试归纳及复习

1. Vue 3中的Composition API(Hooks)是什么?它与Options API有何不同? 答:Composition API是Vue 3中引入的一种新的API风格, 用于组织和重用组件逻辑。它与Options API相比, 提供了更灵活和可…

SQL sever中库管理

目录 一、创建数据库 1.1库界面方式 1.2SQL命令方式 二、修改数据库 2.1库界面方式 2.2SQL命令方式 三、删除数据库 3.1库界面方式 3.2SQL命令方式 四、附加和分离数据库 4.1附加和分离数据库概述 4.2作用 4.3附加和分离数据库方法 4.4示例 一、创建数据库 1.1库…

Spring——Spring读取文件

文章目录 1.通过 value 读取比较简单的配置信息2.通过ConfigurationProperties读取并与 bean 绑定3.通过ConfigurationProperties读取并校验4. PropertySource 读取指定 properties 文件5.题外话:Spring加载配置文件的优先级 很多时候我们需要将一些常用的配置信息比如阿里云os…

protobuf生成golang和grpc代码踩坑记

错误提示:seems to be defined in "*.proto", which is not imported by "*proto". To use it here, please add the necessary import. 这个地方主要是因为包名的问题,假设user.proto文件被product.proto import了,则u…

《Python趣味工具》——文字RPG游戏的开发(附人生选择模拟器的详细讲解及其他多种RPG游戏的源码)

今天我们来学习如何制作一个文字RPG游戏 。 内容主要分为3个部分: part1. 文字游戏(MUD)的趣味历史 part2. 文字游戏的设计方法 part3. 文字游戏功能实现 文章目录 一、文字游戏(MUD)的趣味历史:1. 什么是MUD游戏:2. …

未找到System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid) 方法错误

记录此问题实际上是由于.netFrame框架配置太高引起的,一般常见于二次开发中,因为二次开发一般都是引用的com组件,在引用过程中后台代码调用了 Method not found: System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(Syste…

研发规范第十三讲:阿里 - 如何进行项目稳定性建设

研发规范第十三讲:阿里 - 如何进行项目稳定性建设 本文是研发规范第13讲,阿里巴巴高级技术专家云狄将结合自己多年的经验,从开发规范、开发流程、技术规划与管理三个角度出发,分享对技术TL这一角色的理解与思考,欢迎一…

2、QT的信号与槽

一、什么是信号与槽 一个对象发送一个信号出去,另外一个对象接收到该信号后,会触发相应的槽函数 二、信号与槽的语法 connect(信号的发送者,SIGNAL(信号名称),信号的接收者,SLOT(槽函数)); 1、写法: QT 4 的写法 connect(sende…

Python爬虫:一个爬取豆瓣电影人像的小案例

从谷歌浏览器的开发工具进入 选择图片右键点击检查 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1b38c2a942c441fb8cb545a28bb35015.png 翻页之后发现网址变化的只有start数值,每次变化值为30 Python代码 import requests from bs4 import BeautifulSou…

零基础安装pycuda

零基础安装pycuda 前言安装Visual Studio安装C/C环境添加环境变量 安装pycuda查看系统位数查看python版本下载whl文件 前言 最近开始学习基于python的cuda编程,记录一下pycuda的安装。 在安装pycuda之前,首先需要有NVIDIA的独立显卡并且要安装CUDA和CUD…

程序与进程

一、程序是怎么被执行的 1.在程序中,由引导代码去调用程序中得main函数,而这个过程由链接器完成,链接器将引导代码链接到我们的应用程序构成可执行文件。 2.程序运行需要通过操作系统的加载器来实现,加载器是操作系统中的程序&a…

【javascript实操记录】

功能描述: 1. 利用split()方法对测试数据进行解析:学科,日期 2. 将测试数据封装成对象数组的格式 3. 使用数组的sort()方法和Date对象,将测试数据按照日期从早到晚进行排序 4. 表格数据的静态填充 5. 距离最近考试的倒计时天…

使用 NestJS 和 Prisma 构建 REST API

NestJS是Node.js框架之一,它最近获得了很多开发人员的喜爱和牵引力。本文将教你如何使用NestJS,Prisma,PostgreSQL和Swagger构建后端REST API。 文章目录 介绍您将使用的技术 先决条件假定的知识开发环境 生成 NestJS 项目创建 PostgreSQL 实…

链路聚合原理

文章目录 一、定义二、功能三、负载分担四、分类五、常用命令 首先可以看下思维导图,以便更好的理解接下来的内容。 一、定义 在网络中,端口聚合是一种将连接到同一台交换机的多个物理端口捆绑在一起,形成一个逻辑端口的技术。通过端口聚合&…

数据结构--5.0.1图的存储结构

目录 一、邻接矩阵(无向图) 二、邻接矩阵(有向图) 三、邻接矩阵(网) 四、邻接表(无向图) 五、邻接表(有向图) ——图的存储结构相比较线性表与树来说就复…

AIGC全流程赋能:从剧本到宣发,影视内容全新呈现

“猕猴桃”视频平台在今日发布了2023年第二季度财报,首次公布引入AIGC辅助剧本评估。内部数据显示,AIGC帮助提升剧本评估、预算规划等效率超过90%。“猕猴桃”视频平台还通过AIGC技术实现对影视剧的剧情理解,从而改进搜索结果、推荐和用户互动…

kubernetes deploy standalone mysql demo

kubernetes 集群内部署 单节点 mysql ansible all -m shell -a "mkdir -p /mnt/mysql/data"cat mysql-pv-pvc.yaml apiVersion: v1 kind: PersistentVolume metadata:name: mysql-pv-volumelabels:type: local spec:storageClassName: manualcapacity:storage: 5Gi…