文章中包含了一些探索的过程,如果只想解决问题,请直接看最后!
事情的经过:
已经在ubuntu上安装了好多东西,配置了好多环境,最近突然莫名卡死。我遇到的问题是:
1.如果开机之后只是打开终端,打开编辑器之类的操作,系统不会卡死。
2.一旦打开firefox火狐浏览器,一段时间后就会突然卡屏,且无法打卡tty。
3.最开始以为是swap分区满了,所以尝试过扩大swap分区,和定时清空缓存,但是都无效。
问题分析:
1.遇到死机的问题之后查看了好多博客,发现大家的情况都和我不一样,我在卡死后不能进行任何包括tty的操作,而且电脑的风扇会快速的旋转。
2.查看了系统的日志 vim /var/log/syslog,发现无线网卡有如下错误:
rtw_8821ce 0000:03:00.0:firmware failed to leave lps state
3.所以,我以为是rtw_8821ce出了问题,于是,我进入 软件和更新 在 附加驱动 选项卡中将他禁用,打开firefox浏览器依旧会死机。
4.于是,我决定卸载firefox。
解决办法:
1.我尝试卸载firefox,并且安装了chorme:
查找火狐具体内容:
dpkg --get-selections |grep firefox
卸载查找到的内容
sudo apt-get purge firefox firefox-globalmenu firefox-gnome-support firefox-locale-en firefox-locale-zh-hans
安装chorme:参考ubuntu三行命令安装chrome浏览器_cheney康的博客-CSDN博客
2.但至此,打开chorme,人仍会出现卡死的现象。我们还需要关闭cpu加速才能解决我的问题。操作步骤如下:
打开chorme设置 --> 高级 --> 系统 --> 使用硬件加速模式(如果可用)
这个选项默认是打开的,我们将它关闭,至此,再也没有出现卡死的问题。如果以后还是出现,我会继续更新
2021年9月10日20:14:58
------------------------------------分界线-------------------------------------
还是老问题,我以为我胜利了,但是没有,我渐渐的发现不是浏览器的问题。之前的操作虽然使得卡死的频率降低了,但还是没有解决问题。
但是最近,我做了一些改动,至此已经两天了,还没有出现卡死的情况。我的做法如下:
我接下来的操作和上述一点关系都没有,因为我重新安装了ubuntu20.04LTS系统,并且没有做上述工作。因此,对于和我问题相似的朋友们,从这里向下作就可以了:
1.问题描述:
死机之前的报告还是:
rtw_8821ce 0000:03:00.0:firmware failed to leave lps state
2.我的操作
【1】在附加驱动中使用无线网卡驱动RTL.
【2】进入BIOS界面,关闭了《安全启动》选项
【3】进入系统之后
1 sudo gedit /etc/default/grub
找到
1 GRUB_CMDLINE_LINUX_DEFAULT=quiet splash
改为
1 GRUB_CMDLINE_LINUX_DEFAULT=quiet splash nomodeset
保存之后
1 sudo update-grub
在此之后没有卡死。如果有后续情况,我会继续更新。
2021年10月22日17:13:39
--------------------------分界线---------------------------------
注意:如果修改为nomodeset之后无法进入系统,在进入系统选择界面之后按e找到nomodeset并删除,然后按F10保存并退出。就可以顺利进入到系统。之后,把之前加的nomodeset在文件里面删除掉。
--------------------------分界线--------------------------------
好,我又失败了,又卡死了.......报错还是:
rtw_8821ce 0000:03:00.0:firmware failed to leave lps state
我很好奇,这个网卡驱动模块为什么这么顽固,于是,我直接找到了rtw_88的项目rtw88,仔细的阅读了他的介绍。其中有一段是这样说的:
他的意思是,每一次更新内核之后都要重新编译安装rtw88模块。所以我怀疑,很可能是因为更新内核后没有重新编译安装导致的。但是接下来的一件事情确实让我无语了,我竟然连rtw_8821ce这个模块都没有?各位好兄弟也可以检查一下,自己是否真的有这个模块,你可以通过下面这条代码检查:
sudo modprobe -r rtw_8821ce
这条代码的作用是禁用rtw_8821ce模块,如果你没有,你将会报错:
modprobe: FATAL: Module rtw_8822be not found.
很好,看来频繁卡死的原因不只是没有在内核更新后重新编译安装,这个模块可能在我不知情的情况下被什么东西破坏的只剩下空壳了。于是,为了禁用它,我先按照项目地址中的步骤安装了rtw_88,而后,再将其禁用。具体步骤如下:
sudo apt-get update
sudo apt-get install make gcc linux-headers-$(uname -r) build-essential git
git clone https://github.com/lwfinger/rtw88.git
cd rtw88
make
sudo make install
最后再将其禁用:
sudo modprobe -r rtw_8821ce
2022年3月27日17:48
如果之后又卡死,我会继续更新。
----------------------分界线----------------
不要将其禁用!!!!
不要将其禁用!!!!
不要将其禁用!!!!
如果之前禁用了,则使用如下命令解除:
sudo modprobe rtw_8821ce
改成这个之后已经三天没卡过了。
2022年3月30日21:10
如果之后又卡死,我会继续更新。