如何在不刪除整個 ~/.kde4 目錄的情況下恢復失敗的 KDE4 桌面?
這是兩個配備 6xx/7xx nVidia顯卡的 64 位Mageia 5 GNU/Linux 系統的故事。每個都配置了KDE4桌面 ( task-kde4-minimal-4.14.3-2.mga5 ),並使用發行版提供的專有驅動程序 ( nvidia-current-kernel-desktop-latest-352.79-10.mga5.nonfree)。需要專有驅動程序,因為nouveau不適用於某些應用程序。一個系統似乎工作得很好,但另一個系統有一個我看不到的最煩人的怪癖:
If a particular application is closed, when it shuts down, the desktop immediately goes to a black screen such that the monitor says the signal is out of range.
重新啟動並不能解決問題。圖形登錄(kdm-4.11.16-5.mga5)工作得很好,但是一旦使用KDE桌面登錄使用者帳戶,問題就會再次出現。
針對 Linux 桌面當機時該怎麼辦發布的解決方案?被認為是無效的。
除了改變kdm配置顯示的 方式之外,重新配置xorg沒有任何影響。KDE會覆蓋在xorg級別設置的任何配置。
故障後,我沒有找到任何
Ctrl-Alt-Backspace
可以恢復圖形桌面控制的鍵,但我可以切換到控制台Ctrl-Alt-F2
,我可以嘗試恢復。編輯:實際上,
Ctrt-Alt-Backspace
確實有效,只是需要耐心或多次嘗試。故障發生後,我可以進入一個故障安全圖形桌面,這是一個非常小的環境。它工作正常。
咬牙切齒之後,我發現停止桌面管理器並刪除
~/kde4
文件夾可以恢復系統行為:# service dm stop # rm -rf /home/user/.kde4 # service dm start
這是一個可怕的解決方法,更不用說它需要提升的權限才能執行。
順便說一句,“特定應用程序”是在 java ( jre1.8.0_91 ) 下執行的**MineCraft 1.8.9,但這個問題不在於它為什麼這樣做或如何防止它。相反,它是關於如何調試這種性質的KDE4破壞,但它可能已經發生。
是否有特定於 KDE 的命令行實用程序在這種情況下可能無法提供幫助?
不需要提升權限,也不需要重新啟動。
Ctrl-Alt-Backspace
用.殺死 KDE- 使用
Ctrl-Alt-F2
(或根據需要使用其他功能鍵)獲取控制台。- 以觸發問題的使用者身份登錄。
- 為了安全,備份
~/.kde4/share/apps/kscreen/????????????????????????????????
- 刪除
~/.kde4/share/apps/kscreen/????????????????????????????????
在此特定實例中,鑑於問題中的詳細資訊,實際文件名 ws
cc3277aaebc0a310157f935da894a119
,但在重建 .kde4 文件夾結構時文件名會更改。我是怎麼得出這個結論的?首先,我觸發了桌面故障,用 殺死了KDE,
Ctrl-Alt-Backspace
重命名了損壞的副本~/.kde
,重新啟動了KDE,然後用損壞的目錄區分了好目錄:$ diff -qr .kde4 kde4.broke Files .kde4/share/apps/activitymanager/activityranking/database and kde4.broke/share/apps/activitymanager/activityranking/database differ Files .kde4/share/apps/kconf_update/log/update.log and kde4.broke/share/apps/kconf_update/log/update.log differ Files .kde4/share/apps/kscreen/cc3277aaebc0a310157f935da894a119 and kde4.broke/share/apps/kscreen/cc3277aaebc0a310157f935da894a119 differ Files .kde4/share/apps/kwallet/kdewallet.kwl and kde4.broke/share/apps/kwallet/kdewallet.kwl differ Files .kde4/share/apps/kwallet/kdewallet.salt and kde4.broke/share/apps/kwallet/kdewallet.salt differ Files .kde4/share/apps/nepomuk/repository/main/data/virtuosobackend/soprano-virtuoso.db and kde4.broke/share/apps/nepomuk/repository/main/data/virtuosobackend/soprano-virtuoso.db differ Files .kde4/share/apps/nepomuk/repository/main/data/virtuosobackend/soprano-virtuoso-temp.db and kde4.broke/share/apps/nepomuk/repository/main/data/virtuosobackend/soprano-virtuoso-temp.db differ Files .kde4/share/config/activitymanagerrc and kde4.broke/share/config/activitymanagerrc differ Files .kde4/share/config/gtkrc and kde4.broke/share/config/gtkrc differ Files .kde4/share/config/gtkrc-2.0 and kde4.broke/share/config/gtkrc-2.0 differ Files .kde4/share/config/kdebugrc and kde4.broke/share/config/kdebugrc differ Files .kde4/share/config/kdeglobals and kde4.broke/share/config/kdeglobals differ Files .kde4/share/config/kglobalshortcutsrc and kde4.broke/share/config/kglobalshortcutsrc differ Files .kde4/share/config/khotkeysrc and kde4.broke/share/config/khotkeysrc differ Files .kde4/share/config/klipperrc and kde4.broke/share/config/klipperrc differ Files .kde4/share/config/plasma-desktop-appletsrc and kde4.broke/share/config/plasma-desktop-appletsrc differ
只有一個文件的差異似乎肯定是相關的:
$ diff -u .kde4/share/apps/kscreen/cc3277aaebc0a310157f935da894a119 kde4.broke/share/apps/kscreen/cc3277aaebc0a310157f935da894a119 --- .kde4/share/apps/kscreen/cc3277aaebc0a310157f935da894a119 2016-07-04 02:47:56.312121742 -0500 +++ kde4.broke/share/apps/kscreen/cc3277aaebc0a310157f935da894a119 2016-07-02 23:51:04.725895881 -0500 @@ -1 +1 @@ -[ { "enabled" : true, "id" : "39a867a4a7600077629a3c27c6fa77bf", "metadata" : { "fullname" : "xrandr-hp L2335-CNP509Z1GW", "name" : "DVI-I-1" }, "mode" : { "refresh" : 59.9502, "size" : { "height" : 1200, "width" : 1920 } }, "pos" : { "x" : 0, "y" : 0 }, "primary" : true, "rotation" : 1 } ] \ No newline at end of file +[ { "enabled" : true, "id" : "39a867a4a7600077629a3c27c6fa77bf", "metadata" : { "fullname" : "xrandr-hp L2335-CNP509Z1GW", "name" : "DVI-I-1" }, "mode" : { "refresh" : 59.8846, "size" : { "height" : 1200, "width" : 1920 } }, "pos" : { "x" : 0, "y" : 0 }, "primary" : true, "rotation" : 1 } ] \ No newline at end of file
請注意,差異似乎很小且無害:59.9502 與 59.8846
大多數其他文件差異源於創建日期並且沒有顯示功能差異,或者與應用程序環境而不是桌面管理器有關。有人提到了“桌面”,但區別僅在於 GUID - 幾乎不可能與問題直接相關。
為了驗證我的假設,我保存了一份好的副本
.kde4/share/apps/kscreen/cc3277aaebc0a310157f935da894a119
,觸發了桌面故障,而不是刪除該文件,而是將已知好的文件複製到系統故障後更改的那個文件上。 KDE恢復了。接下來,由於大多數人手頭沒有文件的好副本,我決定嘗試刪除它而不是“修復”它。刪除文件也恢復了桌面。