今天早上在使用Linux的時候進入終端輸入startx,然後退出圖形界面,進入了命令模式,可能是Ubuntu 14.04的問題,不知怎麼就沒有響應,我就強行重啟了一下操作系統,然後進去發現在使用管理員賬號登錄時一直是重復登錄,怎麼都進不去,網上關於這方面的資料還是很多的,給出的方法也是很多。
1、環境變量問題,進入tty1 或者 tty2 然後 sudo vim profile 或者 environment,將 環境變量還原即可。但我的問題並非出於此。
2、初始化文件問題:刪除.Xauthority , Xinit 等初始文件 並重啟。我的問題也不在於此。
3、/home權限問題:直接將/home chmod 成 777的權限。不過我的還是無效。
4、/tmp權限問題:我的問題就在於此,首選還是那句話,學會找到日志文件,學會分析日志文件,cd 到 /home/user 裡面,然後你會發現一個 啟動X組件相關的日志文件:
.xsession-errors文件,打開這個文件發現有以下錯誤: mkdtemp: private socket dir: Permission denied,可以知道在讀寫/tmp文件時 遇到權限問題而讀寫失敗,所以 直接chmod 777 /tmp 後 然後 重啟 就能進入桌面系統了。
5.ctrl+alt+f1 ,切換到tty1,輸入管理員帳號和密碼
sudo rm -r .Xauthority*
sudo reboot //重啟
ok
下面就說一下關於.Xauthority:startx的腳本文件(資料來源於百度):
Xserver 啟動時,讀文件~/.Xauthority,讀入對應其display的記錄.當一個需要顯示的客戶程序啟動調用XOpenDisplay()也讀這個文 件,並把找到的magic code 發送給Xserver.當Xserver驗證這個magic code正確以後,就同意連接啦.
觀察startx腳本也可以看到,每次startx運行,都在調用xinit以前使用了xauth的add命令添加了一個新的記錄到~/.Xauthority,用來這次運行X使用認證。
解決:
Ctrl+Alt+F1~F6,都可以進入命令行模式,分別為 tty1~tty6。
注:Ctrl+Alt+F7 就是窗口模式。
使用用戶名和密碼進入。
sudo==/usr/bin/sudo
vi==/usr/bin/bi
去掉三個文件中給PATH增加的 /home/sjjz/Android-sdk-linux_86/tools 路徑
whereis=/usr/bin/whereis
cat==//bincat
mv==/bin/mv
ls==/bin/ls
bash==/bin/bash
重啟:
/usr/bin/sudo /sbin/reboot
2.修改了profile文件
解決:
利用Alt+Ctrl+Shift+F1進入命令行模式, 以root的身份更改了/etc/profile文件, 這個文件我昨天在配置JDK運行環境的時候對其進行了修改, 現在又將內容改了回來,終於可以正常進入了。
3.修改了environment
解決:
/usr/lib/sudo /usr/lib/vi /etc/environment,然後將光標移動到PATH=$PATH:/home/user1/program/androidSDK/tools 這一行,按兩次D,即DD就刪除了著一樣,
再輸入命令
4.認證的問題
解決:
今天無緣無故登錄不了系統 在登錄界面輸入正確密碼後 黑屏一閃後又跳轉到登錄界面
黑屏出現的時間太短 經過多次查看發現 卡在check battery state
解決方法:
sudo rm -r .Xauthority*
當然,還有其他的原因,我嘗試了以上幾種方法都沒成功,後來看到有一個博客,簡單說到這個問題的本質是開機時,系統會讀入/home文件夾下的一些初始化文件,如果找不到這些文件就會出錯,出現之前說明的症狀。結合我之前看到的一些解決方法,我認為可能是home的權限受到更改,導致非root用戶無法讀取/home目錄下的初始化文件造成的。