Ubuntu 16.04陷入登录循环

最近我的Ubuntu16.04系统将驱动升级,并且有安装cuda-9.0,安装了不少关于显卡有关的驱动,当我重启后发现Ubuntu系统一直在输入密码上死循环,进入不了桌面系统,确定不是密码的问题后,N次登录屏幕都只是闪一下,然后又回到登录页面。

Ubuntu 16.04陷入登录循环_第1张图片
百度后发现不少这种情况,解决的方式也比较多,但是我尝试了多种方式依然不行,解决的方式比较特殊,特此记录:


原因一:主目录下的.Xauthority文件拥有者变成了root,从而以用户登陆的时候无法都取.Xauthority文件。
说明:Xauthority,是startx脚本记录文件。Xserver启动时,读文件~/.Xauthority,读入对应其display的记录。当一个需要显示的客户程序启动调用XOpenDisplay()也读这个文 件,并把找到的magic code 发送给Xserver。当Xserver验证这个magic code正确以后,就同意连接啦。观察startx脚本也可以看到,每次startx运行,都在调用xinit以前使用了xauth的add命令添加了一个新的记录到~/.Xauthority,用来这次运行X使用认证。Ubuntu 输入正确的密码后,黑屏一闪,重新返回到登陆界面。
解决方法:将.Xauthority的拥有者改为登陆用户
开机后在登陆界面按下shift + ctrl + F1进入tty命令行终端登陆后输入(本人的用户名为hp,因此chown后面跟了hp:hp若为其他用户名修改成相应的名称即可,如果.Xauthorit文件是用户权限和组权限的话就不是这个问题)
cd ~
sudo chown hp:hp .Xauthority
成功后显示:
-rw------- 1 hp hp 80  1月 27 10:41 .Xauthority
此时拥有者已经变为用户。按下shift + ctrl + F7切换回图形登陆界面登陆即可。


原因二: tmp目录权限问题
此时进入~/.xsession-errors文件,里边可以找到解决问题的原因。
若是提示:“mkdtemp: private socket dir:Permission denied”就使tmp权限问题(如果不是权限问题也就不用修改,不是这个问题)
解决途径:
sudo chmod 0777 /tmp


原因三: 环境变量的问题
可能是配置了系统无法识别的环境变量使得系统无法开启,删除对应的环境变量即可
解决途径:
1.进入非图形化界面:在登录界面同时按下ctrl+alt+f1(有的需要同时按下ctrl+alt+f1+fn)
2.输入你的账户名和密码
3.进入配置环境变量的文件中:sudo vi /ect/profile或者sudo vi ~/.bashrc或者sudo vi /etc/environment,删除对应的环境变量
4.重启:sudo reboot


原因四: NVIDIA驱动冲突问题
查看了.xsession-errors文件,发现cannot connect to brltty at:0这个字段
可能是我在之前安装了NVIDIA驱动和很多NVIDIA的其他驱动及一些软件,可能是相互之间发生了冲突导致
解决途径1:
1.进入非图形化界面:在登录界面同时按下ctrl+alt+f1(有的需要同时按下ctrl+alt+f1+fn)
2. 命令: sudo apt-get update
             sudo apt-get upgrade
             dpkg -l | grep nvidia(查看对应的系统NVIDIA的版本:我的是nvidia-384)
             sudo apt-get install nvidia-384(注:装那个版本的需要根据自己的显卡型号等实际情况而定!)
             sudo dpkg-reconfigure nvidia-384
             sudo reboot
解决途径2:
(以上的4种方法都有试过,但都不行,随着最后一种方式的提示,越发觉得就是显卡驱动的问题)
没有办法只能将显卡驱动都卸载掉了
1.进入非图形化界面:在登录界面同时按下ctrl+alt+f1(有的需要同时按下ctrl+alt+f1+fn)
2. 命令: sudo apt-get autoremove nvidia375 
             sudo apt-get --purge remove nvidia * 
             dpkg -l | grep nvidia 
             从上一个命令输出确认没有安装nvidia软件包。此后,我跑了:
             sudo update-grub 
             sudo update-initramfs -u 
             sudo reboot

你可能感兴趣的:(Ubuntu 16.04陷入登录循环)