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

起因

因为深度学习的需要,得适配CUDAPytorch-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)

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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐