引言

之前用Ubuntu 20.04 时候三天两头喜欢折腾功能,每次一折腾完Linux就喜欢要么这里要么哪里撂挑子,进入系统后黑屏就是其中最大的一个问题。

回想刚开始用Linux的小白时期,第一次遇到进入系统后黑屏的时候,虽然之前就听说过桌面环境极度不稳定,但是还是慌得不行,然后尝试过无数网上的解决方案后依旧没能修复,更是吓得直接重装了系统。后来小心翼翼地用,但有时候还是因为各种各样的原因会黑屏进入不了桌面,而且积攒地数据越来越多,不能每次都重装系统,就硬着头皮一种一种方法地试,神农尝百草了属于是。

不过也没算白忙活,总结了一大堆经验,基本上找到了每次黑屏都能恢复的办法。最近升级到21.10,更新了英伟达495驱动,折腾了一下Chrome和cuda,gdm3竟然又给我掉链子黑屏了,不过凭借以往的经验,没慌,安装lightdm,进入X11 Server,修改参数启用Wayland,重启+后续配置,轻松解决,突然觉得我这些瞎折腾的经验说不定可以分享给别人,所以在这里记录一下。

 (https://www.google.com/search?q=gnome+ubuntu&tbm=isch#imgrc=izrNUpilT1yQkM)

黑屏症状/可能原因 + 对应解决方式

首先总结一下我个人瞎折腾导致黑屏的原因,毕竟解决方法也要对症下药。

1> X11 Server里桌面突然冻结,各种按键效果全无,强制关机后重启进系统黑屏

这种问题如果不是经常而且反复出现的话其实还挺好解决的,具体解决思路就是用Lightdm替换掉gdm3,lightdm非常轻快,我平常用gdm3进入GNOME 40要大概四五,lightdm大概只需要一半,一两秒就可以加载完成全部GNOME Extension。

以下是具体步骤,前提是保证网络通畅,后续要用apt下载安装包:

#首先Ctrl + Alt + F2/3/4/5/6 随便,进入一个tty窗口(teletypewriter,其实就是个非GUI终端)
#然后,输入你的用户名,然后输入密码,保证之后可以继续执行命令行

sudo apt install lightdm    #安装好备用的 Display Manager

sudo service gdm3 stop    #强制停止当前的gdm3进程,如果一次没成功就重新返回tyy,再次执行该命令

sudo dpkg-reconfigure lightdm     # 将默认的 Display Manager 设置成lightdm

sudo service lightdm start    # 立马启用新的显示管理器,或者干脆重启更彻底

sudo reboot

这种方法的遗留问题就是,锁屏比较麻烦(Super + L 失效);而且我的机器用lightdm进入桌面后,外设全部需要重新拔插才能重新使用(蓝牙设备除外)。

所以我一般成功进入桌面之后把需要移除的隐患搞定,就立马切换回到gdm3了。虽然gdm3最为GNOME原生的显示管理器容易崩,但是毕竟功能性还是不含糊的,lightdm和sddm虽然大概率能挽救你的GUI,但是功能性上多少差点意思。

这里把sddm的命令行也弄上来,如果lightdm不管用的话(我当时就是连lightdm都进不去),可以试试sddm(不过会给你安装一大堆xde的附带软件)。

sudo apt-add-repository ppa:blue-shell/sddm 

sudo apt-get update && sudo apt-get install sddm

sudo dpkg-reconfigure sddm

2> 修改显示管理器(Display Manager)后桌面仍然不定期冻结,强制关机后进系统黑屏

这种情况其实挺罕见的,因为我只找出一种导致XServer频繁卡死的原因,而且解决之后几乎再没有复现过,其实就是Chrome的显卡硬件加速导致的,启用Wayland的话几乎没有这个问题。

解决办法就是用1>里的方法暂时进入系统桌面后,Chrome右上角Setting/设置 - > 设置页面左栏选择System/系统:

 

 如果下面这项“使用硬件加速”开着的话,关掉,重启系统。

之后如果还是实在需要启用Chrome的GPU加速,可以自己试着再重新开启。确保系统桌面稳定的情况下也不是必须关的,能用就行。

3> 使用Lightdm或者sddm后,系统正常启动下仍然黑屏,无法通过xserver进入桌面

我在桌面冻结+强制关机导致的黑屏无法进入桌面环境的情况下,能正常启用Xserver的概率几乎是不到10%,但是能正常启用Wayland进入桌面的概率就高多了,大概有70-80%。反正每次xserver挂了我就去用lightdm/sddm+Wayland进入桌面

这里就把Ubuntu 20.04-21.10 启用Wayland的方法放一下:

来源:Ubuntu – Wayland in Ubuntu 20.04 (IntelGPU) – iTecTechttps://itectec.com/ubuntu/ubuntu-wayland-in-ubuntu-20-04-intelgpu/

  1. Execute sudo apt install gnome-session-wayland (执行该命令)
  2. Open /etc/gdm3/custom.conf and ensure WaylandEnable=false is commented. (用nano或者其他打开该文件,把 WaylandEnable=false 这句标记成评论,保存退出)
  3. Open /usr/lib/udev/rules.d/61-gdm.rules and comment all lines. (把该文件内所有行都标记成评论,就是句首加个#,但我个人经验是只把“DRIVER=="nvidia", RUN”那一行标记成评论,你们可以试试)
  4. Execute sudo systemctl restart gdm3/ sudo service gdm3 restart (重启下桌面服务)
  5. Click on the cogwheel and select GNOME or Ubuntu on Wayland. (看看右下角有小齿轮的话,打开,选择Wayland登录)
  6. Execute echo $XDG_SESSION_TYPE in order to confirm you are running Wayland (output should be "wayland"). (执行echo命令,查看当前桌面运行的底层协议)

21.10 启用Wayland有点问题,我用gdm3右下角总是无法显示小齿轮,也就无法选择Wayland进入系统。但是lightdm可以选择Wayland。这里先把搜来的启用21.10Wayland的命令行贴一下。(按理说21.10都是默认启用Wayland的,一般直接安装好lightdm就可以选择Wayland了)

来源:How do I enable Wayland on Ubuntu 21.10 (NVIDIA)? - Ask Ubuntuhttps://askubuntu.com/questions/1369250/how-do-i-enable-wayland-on-ubuntu-21-10-nvidia

1. 进入 /etc/default/grub 文件,把以下这行加到grub文件内(本来就有,另起一行加到下面就行)

GRUB_CMDLINE_LINUX="nvidia-drm.modeset=1"

或者把原来那行加一个argument “nvidia-drm.modeset=1” 也行

GRUB_CMDLINE_LINUX="rhgb quiet rd.driver.blacklist=nouveau nvidia-drm.modeset=1"

2. 如果重启还是在lightdm没有Wayland选项的话,就试着先安装一下包

sudo apt install libnvidia-egl-wayland1

以上大概就是我个人应对黑屏的三种办法,总体思路就是:更换display manager + 关闭浏览器GPU硬件加速 + 启用Wayland。

这三个的优先级不是死的,可以灵活调整,另外也不是必须更换dm + 关闭浏览器GPU加速 + 启用wayland的,只要桌面稳定不会定期卡死就可以自行按需求调整,比如我目前的方案就是: gdm3 + 开启浏览器GPU加速 + 启用wayland。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐