问题背景
大约三四天前的早晨,当我如往常一样准备开启ubuntu系统的时候,发现虽然出现了图形登录界面,但是输入正确密码后,黑屏了一小会儿后,又重新回到了登录界面——它陷入登录循环了。按Ctrl+Alt+F2~F5切换到对应数字的tty
命令行界面,输入帐号密码可以正常登录,下面开启了一次很久的错误探索。
自行探索
这个问题在网上有很多的讨论,这些可能原因和解决方案在以下链接中有比较详细而集中的讨论。
– AskUbuntu | ubuntu gets stuck in a login loop
引发问题的可能原因有很多,间略列举其中一些如下:
-
显卡驱动的问题:如果查询
nvidia-smi
不能正常显示信息,可能是显卡驱动产生了问题,使用sudo apt purge nvidia-*
命令卸载驱动,sudo apt-get update
,然后通过sudo apt-get install nvidia-driver-**(你需要的版本号)
下载驱动程序,或者使用其他途径从Nvidia官网下载’.run’驱动程序到移动存储设备,然后在tty界面进行挂载、安装等操作,reboot查验。 -
身份验证文件的所有者错误:用户目录
~/
下的".Xauthority"文件用于存储xauth身份验证信息,使用指令ls -lA
查看其对应的所有者,如果显示root root
而非用户说明存在所有者错误,使用chown username:username .Xauthority
(username替换为你的用户名)更改所有者信息,另外可能还需要对".ICEauthority"、".gconf"进行相同操作,reboot查验。 -
环境变量文件问题:如果在前一次关机前有过环境变量的修改,可能是这里出现了问题,登录涉及的环境变量文件可以参考以下链接。
(sudo) vi
检查.profile
、.bashrc
、bash_profile
、/etc/profile
、/etc/environment
等文件中是否存在"括号缺半"、"PATH+写成PATH="等问题。
– 知乎 | Linux文件profile、bashrc、bash_profile区别 -
磁盘空间不足:使用
df -h
查询磁盘空间:(1)sudo apt-get clean
,强调!千万不要轻易使用autoremove
。(2)使用journalctl
清理\var\log
下的日志文件,journalctl --vacuum-time=1w
设定保留日志周数,journalctl --vacuum-size=500M
设定保留日志大小。(3)使用(sudo) du -sh *| sort -h
查看命令行目录下的大小排在前十的文件夹或文件,找到可以删除的删除,清理磁盘空间。具体可以一下两个链接。
– 系统极客 | Ubuntu系统释放磁盘空间的7种简单方法
– 知乎 | Linix / 清理空间的几个办法 -
gnome管理器问题:ubuntu默认使用的gnome管理器是gdm3,可以安装
sudo apt-get install lightdm
等其他gnome管理器,或者使用sudo apt install --reinstall lightdm/gdm3
进行重新安装后,使用sudo dpkg-reconfigure lightdm/gdm3
切换默认gnome管理器,reboot查验。 -
用户对系统临时文件"/tmp"缺乏可写权:
sudo chmod a+wt /tmp
,reboot查验。
朋友建议
然而,在经过这一系列尝试之后我还是没能解决循环登录问题,于是发朋友圈进行了求助,也得到了一些可能的解决方案或者可能的建议:
首先谈朋友们提供的解决方案建议(上面没有尝试过的):
- 制作U盘ubuntu启动盘,使用
boot-repair
进行修复,具体过程参考以下链接:
– linuxhint | Ubuntu Boot Repair Tutorial -
手动修复grub。
– system76 | Repair the Bootloader -
重新安装ubuntu桌面。
sudo apt remove ubuntu-desktop
,sudo apt install ubuntu-desktop
,但是细想desktop这个东西肯定是很久之前就装好的,作为二进制程序用户无法修改,一直没有问题。如果循环登录的问题出在这里的话,一定是什么别的内容变化触发了其中的问题,而使用sudo apt install ubuntu-desktop=
Tab出来的版本编号有一种,所以可以预想到,重新安装完之后还是不起作用。
另外也收到了朋友们一些修复问题之外的建议,比如选用其他的Linux发行版(如Debian、CentOS、Arch、Manjaro)或者干脆使用Windows而规避Ubuntu的不稳定问题,以及替换机械硬盘为固态硬盘、升级内存以优化计算机运行性能等等,不过介于最近手头工作预配置的依赖很多很杂(也是不停尝试各种办法而不想重装系统的原因),暂且先不着急大换方案了,以后好好考虑。
淘宝救援
经历了上面的尝试,我!!还是没能解决循环登录的问题,就在快要放弃、准备重装的时候,我想到了淘宝,搜索“Ubuntu问题解决”咨询了一个店家,然后花了¥100解决了,淘宝你真是我的神。
应该是我ping
通网络之后,bash
店家给的连接,店家连接到了我的IP地址进行修复的,最终终于成功登录成功进入了桌面,具体过程我不太看得懂了(如下面左图所示是翻滚的IP访问)。
在我的询问下店家告诉我应该是现在~/.local/share.backup/
下的某个文件存在问题,修复前这些文件在~/.local/share/
目录下,如果移动回去还是会出现一样的问题(可以挨个尝试排查出具体出问题的文件),由于时间问题我就先不排查,贴出目前~/.local/share.backup/
目录下的文件列表(下面右图),以供遇到同样问题而迟迟不能解决的朋友们参考。
![Ubuntu18.04 陷入登录循环的问题解决历程(输入正确密码后无限重回登录界面)](https://imgs.yssmx.com/Uploads/2023/04/415258-1.jpeg)
![Ubuntu18.04 陷入登录循环的问题解决历程(输入正确密码后无限重回登录界面)](https://imgs.yssmx.com/Uploads/2023/04/415258-2.png)
补充:用户管理中的 useradd & adduser
在问题解决之前,我曾经在root
权限(su
指令进入)下使用useradd
新建一个新用户,然后设置密码,然后在登录界面尝试登录,发现也出现了循环登录的问题,依此判断问题出在根目录/
下而非/home/<user>
下。后来当店家修复完成后,我在进行这个操作时,发现仍然无法登录新建的用户。
然后后来被指出这个验证过程是有问题的,如果使用adduser
指令创建的用户则可以成功登录。
进行一番搜索后了解到,useradd
指令只创建用户、注册信息,并不在/home
下自动生成对应目录,也不主动询问需要设置的密码,而adduser
指令则会默认生成/home
下的目录,并且主动询问密码设置。所以这两个创建用户的指令所影响或产生的文件是不同的,也一定程度上影响了我对于问题层面的判断。
总结
进行了连续多天各种方案的尝试,也算是对Linux的认识稍进了一步,以及多熟悉了一下各种指令以及vim操作吧,一些解决方案应该边尝试边记录,如此可以避免一些重复的尝试,以及最后不要丧失希望,真的不想重装或者珍惜时间、精力成本的可以考虑一下淘宝,确实是由高手在。文章来源:https://www.toymoban.com/news/detail-415258.html
希望遇到相应问题看到这篇博客的朋友们都能顺利解决问题吧。文章来源地址https://www.toymoban.com/news/detail-415258.html
到了这里,关于Ubuntu18.04 陷入登录循环的问题解决历程(输入正确密码后无限重回登录界面)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!