Linux

如何在不刪除整個 ~/.kde4 目錄的情況下恢復失敗的 KDE4 桌面?

  • July 4, 2016

這是兩個配備 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 文件夾結構時文件名會更改。

我是怎麼得出這個結論的?首先,我觸發了桌面故障,用 殺死了KDECtrl-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恢復了。

接下來,由於大多數人手頭沒有文件的好副本,我決定嘗試刪除它而不是“修復”它。刪除文件也恢復了桌面。

引用自:https://unix.stackexchange.com/questions/293844