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驱动【全网不坑,超全步骤】(亲测~)
- 打开一个终端,输入:
sudo gedit /etc/modprobe.d/blacklist.conf
- 在文件最后输入:
blacklist nouveau
保存后在终端输入:
sudo update-initramfs -u
来更新系统文件。
方法2–乙说
甲的方式他用不了,他尝试重装桌面:
- 进入TTF2或者3或者4…的界面,即在闪烁界面时,按Ctrl+Alt+1(或者2-6任意数字键)进入tty界面
- 登入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天的琢磨是解决了,估计之间还有一些小问题没被发现…
- 移除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,去这里面用命令删除。
- 移除gdm3和lightdm:
sudo apt-get --purge remove lightdm
sudo apt-get --purge remove 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
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
出现以下说明安装成功:
- 如果你们能按照上面步骤成功那真好啦,可我手残,把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
主要是:
到目前为止我是解决了它们(gdm3与lightdm)
因为是完成后记录的,写的难免有些些不完整,后续还会继续完善和补充~