Desktop yang rusak datang dalam wujud yang menyulitkan: password diterima, layar login menghilang, dua detik kemudian kita kembali ke layar login — begitu terus. Atau panel atas menghilang, tema kacau, dan aplikasi menolak menyala. Di balik semua drama itu, satu prinsip menenangkan: kernel, jaringan, dan service biasanya tetap sehat, dan kerusakan mayoritas bersembunyi di lapisan paling atas — milik user. Chapter ini melatih prosedur pemulihannya: masuk lewat pintu darurat, memisahkan kerusakan milik user dari milik sistem, lalu merawat konfigurasi tanpa membakar rumahnya.
Pintu Darurat: Login Lewat TTY #
Sebelum apa pun, kita butuh akses ke mesin yang tidak melalui desktop yang rusak. Kombinasi Ctrl+Alt+F3 memindahkan kita ke konsol teks — TTY — yang berjalan terpisah dari sesi grafis; mekanisme lengkapnya sudah dibahas di Black Screen dan Display Issues
. Dari TTY, tiga pemeriksaan murah menyingkirkan penyebab sistem-wide sebelum kita menuduh konfigurasi user:
- Disk masih lega?
df -h ~— home yang penuh membuat sesi gagal menyimpan state-nya, dan pengosongannya dibahas tuntas di Disk Space Problems . - Service desktop hidup?
systemctl status gdm(atausddm,lightdmsesuai display manager Anda). - Log sesi berkata apa?
journalctl -b -u gdm3dan log sesi — inilah saksi kejadian yang paling jujur.
Berikut contoh tampilan potongan log sesi yang menolak naik — pola khas login loop:
Jan 15 11:14:01 laptop-budi gdm-password]: Gdm: session opened for user budi
Jan 15 11:14:02 laptop-budi gnome-shell[4830]: JS ERROR: Extension [email protected]: TypeError: this.indicator is null
Jan 15 11:14:02 laptop-budi gnome-session[4821]: WARNING: App gnome-shell exited with code 1
Jan 15 11:14:03 laptop-budi gdm-password]: Gdm: session_child_loop: exits with code 1, returning to login screenCeritanya tertulis berurutan: sesi dibuka, gnome-shell melempar error JavaScript dari sebuah extension, shell mati dengan kode 1, dan GDM dengan sopan mengembalikan kita ke layar login. Kerusakan semacam ini hampir selalu berakhir di satu dari tiga biang: konfigurasi user yang rusak, ekstensi yang usang, atau driver yang baru diganti — dua yang pertama adalah wilayah kita di chapter ini, yang ketiga sudah dipetakan di Hardware Compatibility
.
Isolasi: Kerusakan Milik Siapa #
Pertanyaan penentu dalam setiap desktop rusak: apakah kerusakan itu menempel pada user atau pada sistem. Ujinya sederhana — buat satu user baru, lalu coba login dengan user tersebut (pembuatan akun dibahas di User Account ). Dua hasil yang mungkin:
- User baru masuk lancar — kerusakan menempel pada konfigurasi user lama, tepatnya berkas-berkas di bawah
~/.configdan kawan-kawannya. Sistem baik-baik saja. - User baru juga gagal — kerusakan sistem-wide: driver, paket yang rusak, atau display manager; kembalikan penyelidikan ke log dan Hardware Compatibility .
Merawat Konfigurasi Tanpa Membunuhnya #
Bila tersangka jatuh ke konfigurasi user, senjatanya bukan rm melainkan mv: pindahkan ke samping, biarkan sistem membuat yang baru, lalu bandingkan. Pola lengkapnya bisa dilatih sebagai skrip mini:
mkdir -p .config/gnome-desktop/pengaya
printf 'panel-atas=false\nikon-sistem=rusak\n' > .config/gnome-desktop/pengaturan
printf '[email protected]\n' > .config/gnome-desktop/pengaya/daftar
cat > pulihkan.sh <<'AKHIR'
#!/bin/bash
# Isolasi masalah desktop: amankan config user, kembalikan default.
if [ -d .config ]; then
if [ -d .config.beku ]; then
echo ".config.beku sudah ada — hentikan, jangan menimpa cadangan"
exit 1
fi
mv .config .config.beku
echo "diamankan : .config -> .config.beku ($(find .config.beku -type f | wc -l) file)"
fi
mkdir -p .config/gnome-desktop
printf 'panel-atas=true\nikon-sistem=ok\n' > .config/gnome-desktop/pengaturan
echo "dibuat : .config/gnome-desktop/pengaturan (default)"
AKHIR
bash pulihkan.sh
ls -aOutput yang Dihasilkan:
diamankan : .config -> .config.beku (2 file)
dibuat : .config/gnome-desktop/pengaturan (default)
.
..
.config
.config.beku
pulihkan.shBedah baris-per-baris skripnya:
- Baris 4-8 (gerbang
.config.beku): sebelum memindahkan apa pun, skrip memastikan cadangan lama tidak ada — pengaman agar dijalankan kedua kalinya tidak menimpa bukti; itulah mengapa menjalankan skrip ini dua kali akan berhenti di pesan peringatan, bukan merusak. - Baris 9 (
mv .config .config.beku): inti polanya — konfigurasi lama tidak dibuang melainkan dipindah satu langkah; bandingkan isinya kapan saja dengandiff -r, dan kembalikan denganmvbalik. - Baris 12-13 (default baru): sesi berikutnya memulai hidup dengan konfigurasi segar; aplikasi membuat sendiri berkas yang belum ada — perilaku yang sama yang kita andalkan di sini.
Dua berkas lama yang layak disebut khusus. .Xauthority di home adalah kunci sesi X11 yang usang setelah crash — cukup dipindahkan, bukan dihapus, karena sistem membuat barunya saat login. Dan bagi yang mengubah tampilan lewat gsettings/dconf, perintah dconf dump / > cadangan-dconf.txt menyimpan seluruh setelan sebelum di-reset dengan dconf reset -f / — pembahasan lengkap perintah-perintah itu ada di Desktop Configuration
.
Ekstensi GNOME Usang #
Ekstensi GNOME Shell adalah kode pihak ketiga yang menempel pada internal shell — dan setiap upgrade versi GNOME bisa mematahkan asumsi yang dipakai ekstensi. Hasilnya gejala paling klasik pasca-upgrade: shell yang macet, panel aneh, atau login loop persis seperti log di awal chapter. Diagnosa cepatnya menimbang versi: setiap ekstensi mencantumkan versi GNOME yang didukungnya di metadata:
cat > daftar-ekstensi.txt <<'AKHIR'
[email protected] 45
[email protected] 45
[email protected] 47
AKHIR
versi_gnome=45
awk -v v="$versi_gnome" '$2+0 > v {print "USANG :", $1, "(butuh GNOME", $2")"}' daftar-ekstensi.txtOutput yang Dihasilkan:
USANG : [email protected] (butuh GNOME 47)Perintahnya sengaja sederhana: $2+0 memaksa awk membandingkan angka, bukan teks — “9” sebagai teks ternyata lebih besar dari “10”, jebakan klasik pembanding versi. Hasilnya menunjuk caffeine yang menuntut GNOME 47 sementara sistem memakai 45 — cocok persis dengan JS ERROR di log sesi kita. Penanganannya bertingkat: matikan sementara semua ekstensi dengan gsettings set org.gnome.shell disable-user-extensions true lalu login ulang, atau singkirkan satu ekstensi dengan memindahkan foldernya dari ~/.local/share/gnome-shell/extensions. Seluruh ekstensi bermasalah akan terlihat begitu desktop kembali hidup: GNOME dengan senang hati menandainya sebagai usang.
Tabel Gejala dan Langkah #
| Gejala | Penyebab paling umum | Langkah pertama |
|---|---|---|
| login loop (kembali ke layar login) | ekstensi usang / config user rusak | TTY; cek log sesi; amankan .config |
| desktop beku, kursor jalan | driver GPU / ekstensi | TTY; systemctl restart gdm (Gnome) |
| panel dan tema kacau | konfigurasi/gsettings rusak | dconf dump, lalu dconf reset -f / |
| hanya satu user yang bermasalah | kerusakan milik user | buat user tes; bandingkan |
| semua user bermasalah | sistem-wide: driver, paket, disk penuh | cek Hardware Compatibility
dan df -h |
| sesi X jalan, Wayland tidak (atau sebaliknya) | kecocokan driver dengan display server | ganti sesi di layar login; Display Server dan Wayland |
Baris terakhir itu jalan pintas yang menghemat satu malam penuh: layar login GDM menyediakan pilihan sesi (gerigi di pojok kanan) untuk berganti antara GNOME di Wayland dan GNOME di Xorg — ketika salah satu jalur rusak, jalur satunya sering tetap hidup, dan dari sanalah perbaikan bisa dikerjakan dengan tenang.
Desktop yang rusak hampir selalu bisa dipulihkan begitu lapisannya ditemukan. Namun ada kerusakan yang lebih dalam dari semua lapisan ini: layar membeku dengan deretan teks putih di atas hitam, dan mesin berhenti total. Wujud pamungkas kegagalan Linux itulah topik chapter berikutnya.
Anatomi GNOME dan sumber ekstensinya dibaca di wiki Arch: GNOME , perilaku display manager-nya di wiki Arch: GDM , dan protokol sesi grafisnya di wiki Arch: Xorg .