之前用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 Managersudo service gdm3 stop #强制停止当前的gdm3进程,如果一次没成功就重新返回tyy,再次执行该命令sudo dpkg-reconfigure lightdm # 将默认的 Display Manager 设置成lightdmsudo 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 sddmsudo 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/
Execute sudo apt install gnome-session-wayland (执行该命令)Open /etc/gdm3/custom.conf and ensure WaylandEnable=false is commented. (用nano或者其他打开该文件,把 WaylandEnable=false 这句标记成评论,保存退出)Open /usr/lib/udev/rules.d/61-gdm.rules and comment all lines. (把该文件内所有行都标记成评论,就是句首加个#,但我个人经验是只把“DRIVER=="nvidia", RUN”那一行标记成评论,你们可以试试)Execute sudo systemctl restart gdm3/ sudo service gdm3 restart (重启下桌面服务)Click on the cogwheel and select GNOME or Ubuntu on Wayland. (看看右下角有小齿轮的话,打开,选择Wayland登录)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。