Bagaimana cara debug menangguhkan?

29

Saya telah menggunakan Ubuntu selama sekitar lima tahun sekarang, dan saya masih tidak bisa menghentikannya ketika saya mau. Ini cukup menjengkelkan bahwa saya dapat memprogram badai, meretas mesin dengan berbagai cara lain, namun, namun ketika saya mencoba untuk membuatnya menunda atau men-debug menangguhkan, saya gagal total.

Saya membutuhkan bantuan.

Di mana saya mulai menemukan masalah? Apa yang harus saya lakukan untuk memperbaikinya? Saya menempatkan hadiah pada ini, karena saya benar-benar kehilangan berjam-jam hidup saya untuk masalah ini, dan meninggalkan komputer saya pada SEMUA waktu itu mengerikan.

Gejala-gejalanya:

  • Menekan penangguhan membawa komputer saya ke keadaan di mana kursornya berkedip, kipas berjalan, sepertinya HD telah dimatikan (saya pikir), dan saya tidak dapat melakukan apa pun untuk mengembalikannya dari keadaan ini (singkatnya). reboot keras).
  • Kemungkinan terkait: Penggemar saya tetap hidup bahkan setelah shutdown, dan bahkan kemudian, saya harus menekan tombol daya selama lima detik sebelum saya dapat memulai lagi.
  • Saya tidak tahu log apa yang harus dilihat untuk debug masalah, dan saya membayangkan mereka akan tetap nuked saat reboot.

Tolong, tolong bantu. Ini membuat saya benar-benar gila, dan saya sudah hidup dengannya lebih dari setahun.

mlissner
sumber
Apakah Anda beruntung dengan ini? Saya pribadi macet menginisialisasi perangkat keras grafis. Saya mungkin bisa memprogram jalan keluar dari itu diberikan waktu yang cukup ... tetapi akan jauh lebih halus untuk memiliki beberapa metode untuk sampai ke masalah secara langsung.
Henrik
Ya tidak berhasil. Tampaknya tidak ada metode untuk men-debug penangguhan, yang agak mengejutkan.
mlissner
1
Bagaimana Anda menangguhkan? Apakah Anda menjalankan, dari baris perintah pm-suspend? Apakah Anda menggunakan kunci penangguhan pada keyboard Anda? Apakah Anda melakukan panggilan ke acpi (mis. /Etc/acpi/sleep.sh atau /etc/acpi/sleepbtn.sh) ??
M. Tibbits
1
Untuk para pemburu hadiah: Saya mencari resep debugging umum, yaitu pengumpulan informasi, untuk instalasi Ubuntu yang lebih baru menggunakan systemd. Harapan saya adalah bahwa kita dapat menggunakan pertanyaan ini sebagai duplikat kanonik untuk pertanyaan masalah umum yang ditangguhkan oleh pengguna yang tidak berpengalaman.
David Foerster
2
@ pbhj: Either way kita perlu diagnosis masalah yang tepat sebagai langkah pertama di jalan menuju solusi.
David Foerster

Jawaban:

22

Dari https://wiki.ubuntu.com/UnderstandingSuspend

  • Masalah terbesar adalah perangkat keras grafis
  • coba tunda tanpa perangkat terbatas (nvidia, fglrx)
  • Kernel tidak tahu bagaimana menangani perangkat grafis
  • BIOS tahu cara mengembalikan keadaan grafis
    • melalui mode 16 bit segmented, C000: xxxx berisi ROM video 64k yang terlihat.
    • memulai eksekusi pada C000: 0003, biasanya memposting ulang BIOS video (/ usr / sbin / vbetool post)
      • lebih sulit dalam mode 64bit, karena panggilan 16bit perlu ditiru.
      • sebagian memori berada dalam kisaran 3-4G, yang membutuhkan pemetaan ulang saat mengemulasi untuk menghindari menabrak kernel yang dipetakan dalam ruang yang sama. o BIOS video mungkin telah mengeluarkan kode POST dari jendela C000 o nvidia BIOS menulis ulang ROM untuk kembali berhenti menghentikan POSTing, coba tunda dari konsol (via /etc/acpi/sleep.sh)
    • pastikan Anda keluar dari Xorg (atau jalankan sleep.sh dengan argumen "paksa")
    • jika video BIOS tidak dibiarkan dalam kondisi waras, kembali ke Xorg dapat menggantung perangkat keras
    • menguji capslock pada resume (jika tidak ada capslock, kernel digantung)
    • jika lampu latar tidak hidup kembali, video BIOS mungkin tidak menginisialisasi ulang
    • jika layar kosong, tetapi memiliki cahaya latar, coba tekan enter atau beralih antar terminal virtual
    • coba dalam mode single-user (via menambahkan "tunggal" ke opsi boot kernel grub)
    • untuk detail tentang tindakan, coba bash -x /etc/acpi/sleep.sh> /root/sleep.log 2> & 1
    • lihat informasi dmidecode yang cocok dengan pengaturan di /usr/share/acpi-support/*.config
    • jika mode single-user console menunda atau melanjutkan gagal
    • Jejak PM (echo "1"> / sys / power / pm_trace) yang akan menulis hash perangkat ke timer sistem
    • mencoba untuk menunda
    • setelah kegagalan, saat reboot, periksa output dmesg untuk entri "hash perangkat" untuk melacak perangkat yang menggantung sistem selama resume.
    • sadar bahwa ini akan mengatur ulang jam sistem, dan fsck akan panik ("telah hilang tanpa fsck selama 31337 hari"). pertimbangkan tune2fs -c 0 / dev / your / filesystems.
Henrik
sumber
2
Bagaimana cara mematikan perangkat terbatas?
Owen
1
ada tautan ke skrip yang berfungsi untuk masuk akal centang kotak ketika penangguhan gagal? ... masalah semacam ini adalah kutukan dari linux dan memblokir penggunaan massal ...
Scott Stensland
4

Anda dapat menemukan banyak panduan / saran di sini dan di sini .

Dari deskripsi Anda, sepertinya ACPI Anda tidak berfungsi dengan benar, atau driver kernel mencegah penangguhan penuh. Tautan kedua menunjukkan cara menangani masalah semacam itu.

Evgeny
sumber
2
Saya membaca ini semua, tetapi mereka tidak memiliki informasi yang berguna untuk masalah saya. Perlu lebih banyak bantuan, dan keterangan yang lebih baik. Saya telah membuat hadiah untuk pertanyaan ini.
mlissner
4
Jawaban buruk - hanya tautan. Maksud dari Stack *-sites adalah untuk menyediakan tempat untuk pergi ke semua pertanyaan, tidak untuk mengirim pengguna pada pengejaran angsa tanpa akhir atau mengatakan 'just f * google it'. Harap masukkan jawaban Anda ke pertanyaan dan perbarui menurut komentar mlissner.
Henrik
Terima kasih: Terkadang bermanfaat untuk membaca beranda asli!
abu_bua
4

Gejala-gejalanya:

  • Menekan penangguhan membawa komputer saya ke keadaan di mana kursornya berkedip, kipas berjalan, sepertinya HD telah dimatikan (saya pikir), dan saya tidak dapat melakukan apa pun untuk mengembalikannya dari keadaan ini (singkatnya). reboot keras).
  • Kemungkinan terkait: Penggemar saya tetap hidup bahkan setelah shutdown, dan bahkan kemudian, saya harus menekan tombol daya selama lima detik sebelum saya dapat memulai lagi.
  • Saya tidak tahu log apa yang harus dilihat untuk debug masalah, dan saya membayangkan mereka akan tetap nuked saat reboot.

Pergi ke situs saya untuk banyak masalah Linux adalah Arch Linux. Inilah yang diposting tentang masalah yang ditangguhkan / dilanjutkan yang serupa dengan masalah Anda:

Wakeup instan dari menangguhkan

Untuk beberapa sistem Intel Haswell dengan chipset LynxPoint dan LynxPoint-LP, wakeups instan setelah penangguhan dilaporkan. Mereka terkait dengan implementasi BIOS ACPI yang salah dan bagaimana xhci_hcdmodul mengartikannya saat boot. Saat sistem yang dilaporkan terkena dampak ditambahkan ke daftar hitam (dinamai XHCI_SPURIOUS_WAKEUP) oleh kernel kasus per kasus. [ 2 ]

Resume sesaat dapat terjadi, misalnya, jika perangkat USB dicolokkan selama penundaan dan pemicu bangun ACPI diaktifkan. Cara yang dapat dilakukan untuk sistem semacam itu, jika belum ada dalam daftar hitam, adalah untuk menonaktifkan pemicu bangun. Contoh untuk menonaktifkan wakeup melalui USB dijelaskan sebagai berikut. [ 3 ]

Untuk melihat konfigurasi saat ini:

$ cat /proc/acpi/wakeup

Device  S-state   Status   Sysfs node
...
EHC1      S3    *enabled  pci:0000:00:1d.0
EHC2      S3    *enabled  pci:0000:00:1a.0
XHC       S3    *enabled  pci:0000:00:14.0

...

Perangkat yang relevan adalah EHC1, EHC2dan XHC(untuk USB 3.0). Untuk mengganti statusnya, Anda harus menggema nama perangkat ke file sebagai root.

# echo EHC1 > /proc/acpi/wakeup
# echo EHC2 > /proc/acpi/wakeup
# echo XHC > /proc/acpi/wakeup

Ini akan menghasilkan penskorsan bekerja kembali. Namun, pengaturan ini hanya bersifat sementara dan harus ditetapkan pada setiap reboot. Untuk mengotomatisasi ini, lihat file systemd # Writing . Lihat utas BBS untuk solusi yang mungkin dan informasi lebih lanjut.


Seluruh artikel Arch Linux di atas pada Penangguhan / Lanjutkan adalah referensi yang bagus untuk banyak bidang:

1 Low level interfaces
    1.1 kernel (swsusp)
    1.2 uswsusp
2 High level interfaces
    2.1 systemd
3 Hibernation
    3.1 About swap partition/file size
    3.2 Required kernel parameters
        3.2.1 Hibernation into swap file
    3.3 Configure the initramfs
4 Troubleshooting
    4.1 ACPI_OS_NAME
    4.2 VAIO Users
    4.3 Suspend/hibernate doesn't work, or not consistently
    4.4 Wake-on-LAN
    4.5 Instantaneous wakeups from suspend
WinEunuuchs2Unix
sumber
Kelihatan bagus! Saya akan menunggu satu atau dua hari lagi untuk memberi orang lain kesempatan untuk menjawab. Mungkin seseorang akan merasa terinspirasi oleh Anda. :-)
David Foerster
@ DavidFoerster Terima kasih. Sulit untuk menjawab pertanyaan berusia 8 tahun. Ada juga masalah penundaan / lanjutkan dengan NVMe M.2 PCIe SSD yang akan saya tambahkan malam ini. SSD jenis ini tidak ada pada tahun 2010 dan memerlukan argumen kernel grub khusus.
WinEunuuchs2Unix
Saya kurang mencari solusi untuk masalah penangguhan khusus dan lebih untuk resep debugging umum untuk instalasi Ubuntu yang lebih baru menggunakan systemd.
David Foerster
@DavidFoerster Dalam hal ini saya akan membiarkan jawabannya tetap apa adanya :)
WinEunuuchs2Unix