Linux-Ubuntu 16.04 重复登录问题解决(非重装驱动方法):进入图形界面后,输入密码又重新回到登录界面
问题描述
笔者昨天还在ubuntu下调代码,界面什么的毫无问题,也没有安装什么程序,第二天再进入的时候,直接gg,又遇到之前安装ubuntu的时候出现的重复登录问题,当时应该是驱动程序没有安装好的原因,重新安装了驱动程序就会好,但是这次的问题出现很明显不是驱动没有装好的原因,当然重装驱动又可能会好,但是不太明智。
在命令行输入nvidia-smi,发现:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
我就知道问题出在nvidia驱动上了。
所以,刚开始查了很多方法,后来发现是驱动的问题,就改了查找关键词,不过还是把其他方法整理一下,放在这里。
网上已知方法:
我查找了很多链接:
首先Ctrl+Alt+F1进入命令行模式,或者 sudo service lightedm stop;
通过Ctrl+Alt+F7进入图形界面模式,或者 sudo service lightedm restart;
-
有提到了查看/var/log/Xorg.0.log和~/.xsession-errors,然后观察问题是什么,但感觉我的没什么问题。
sudo vi /var/log/Xorg.0.log
sudo vi ~/.xsession-errors
(假定你已经安装了vim,sudo gedit在命令行下是无法使用的,只能用gedit) -
有很多链接提到了主目录下的.Xauthority文件的所有者变成了root,因此在登录的时候无法获得该文件。
输入 ls -l -a :
可以观察到.Xauthority,如果观察到它的所有者是root而不是你的ubuntu名称,那很可能你的ubuntu出现重复登录是因为该问题。
此时可以通过:
sudo chown xxx:xxx .Xauthority
来更改该文件的所有者(其中xxx是ubuntu的名称)
但很不幸,我的并不是这个问题。 -
tmp目录权限问题,你可以通过第一个方法,进入~./xsession-errors,查看是否是此问题:
“mkdtemp: private socket dir:Permission denied”
出现上述引用内容,就可能是该问题导致的。
可以通过 chmod 1777 /tmp 进行权限更改。 -
修改环境变量,虽然我压根就没改什么环境变量,但还是把这个方法摘出来放在这里。
sudo /usr/bin/vi /etc/profile(注意有空格)
查看打开的文件底部是否有你刚添加过的 export PATH= “xxx/xxx” 的环境变量,如果有的话,先删掉。
执行 source /etc/profile 使修改过的文件生效。
观察是否还存在还重复登录问题。 -
可能是ubuntu系统内核kernel进行了更新,导致和驱动版本不适配。
可以在进入ubuntu系统的时候进入到**“ubuntu高级选项”,选择一个以前的内核版本。
如果没有以前内核版本的话,可以在命令行sudo apt-cache search linux-image** 查看可安装内核,然后sudo apt-get install linux-image-2.6.32-21-generic 安装相应较早内核。 -
重装驱动
(1) 进入命令行模式
(2)卸载原有驱动:
sudo apt-get remove --purge nvidia-*
sudo apt-get autoremove
(3)卸载.run文件安装的驱动,在NVIDIA驱动所在的目录
sudo ./NVIDIA-Linux-x86_64-xxx.run --uninstall
(4)安装驱动
sudo ./NVIDIA-Linux-x86_64-xxx.run --no-opengl-files
(5)安装成功后,重新进入图形界面
问题解决,我使用的方法,应该还是驱动和内核之间的兼容问题
- 安装驱动相应版本的dkms,不知道改的具体哪里,但是笔者是使用该放解决的重复登录问题。
cd /usr/src 查看驱动版本号(我的是396.37)
sudo apt-get install dkms
sudo dkms install -m nvidia -v 396.37
无需重启即可成功看到输入nvidia-smi后熟悉的界面
此时回到图形界面,发现分辨率恢复了原来的,而且可以进入,问题解决!
我没有尝试方法5,但是我感觉应该也可以解决。
最后附上一些 linux查看内核、GPU型号、驱动版本、内核安装的相应命令
uname -r 查看当前内核版本
uname -a 查看系统内核版本和其他系统信息,包括是x86_64还是其他分布式平台
lspci | grep -I nvidia 查看 GPU型号
sudo dpkg --list | grep nvidia- 查看驱动版本
cat /proc/driver/nvidia/version 查看驱动版本
dpkg --get-selections | grep linux-image 查看已经安装的内核
sudo apt-get purge/remove linux-image-2.6.32-21-generic 卸载相应的内核版本(purge更彻底)
sudo apt-get update/sudo apt-get upgrade 升级内核
sudo apt-cache search linux-image 查看可安装内核
sudo apt-get install linux-image-2.6.32-21-generic 安装内核
sudo gedit /boot/grub/grub.cfg set default=“0” 切换内核,内核默认启动顺序从0开始依次类推
切换内核详细流程:
sudo vim /etc/default/grub&
将 GRUB_DEFAULT=0
修改为 GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.16.0-43-generic"
sudo update-grub
sudo reboot
参考链接
Jisongxie:ubuntu重复登录问题
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver
Linux系统无法载入nvidia-smi驱动
Ubuntu 16.04 内核降级
ubuntu 16.04内核更新到113后循环登录的问题解决
ubuntu 无限重复登录界面解决方案-U盘挂载
重装驱动
2019.11.04
希望能帮到你。