Setelah beberapa pembaruan terakhir, komputer saya tidak lagi melakukan boot! Inilah yang bisa saya tentukan:
- Ini adalah komputer yang sangat baru yang diberikan kepada saya oleh IT perusahaan. Ini memiliki CPU Intel terbaru (generasi Skylake).
- Komputer menjalankan Ubuntu 16.04.
- Komputer terakhir kali boot dengan benar pada bulan Maret. Masalahnya mungkin karena pembaruan perangkat lunak atau bug perangkat keras.
- Saya memiliki komputer lain yang menjalankan 16,04 dengan cukup banyak perangkat lunak yang sama diinstal (saya gunakan
apt-clone
), dan itu berfungsi dengan baik. Ini memiliki perangkat keras yang berbeda (juga amd64, tetapi CPU berbeda, GPU berbeda, dll.). - Kernel mulai, initrd berfungsi dengan benar. Ketika saya boot dengan splash screen dalam mode grafik, saya diminta untuk memasukkan kata sandi untuk volume dm-crypt saya, dan hal terakhir yang saya lihat adalah berhasil dipasang.
- Gantung terjadi sebelum saya mendapatkan prompt masuk. Ketika komputer hang, itu sulit diatasi. Bahkan Alt+ SysRqtidak merespons. CPU jelas dipatok pada 100% sejak kipas menyala penuh.
- Saya masih memiliki kernel yang saya jalankan sebelum reboot. Ketika saya memilih kernel ini di menu Grub, saya mendapatkan penguncian yang sama. Jadi sepertinya ini adalah bug kernel yang sudah ada sebelumnya yang dipicu oleh sesuatu yang lain - tapi apa?
- Jika saya mematikan layar splash (hapus
splash
darilinux
baris perintah di Grub), saya melihat sejumlah layanan dimulai, kemudian terkunci. Saya bisa mendapatkan shell root dengan menambahkan
init=/bin/sh
kelinux
baris perintah di Grub. Saya bahkan bisa melangkah lebih jauh dengan menambahkansystemd.unit=basic.target systemd.shell
Ini memulai sejumlah layanan dan menjalankan shell root pada tty9.
- Jika saya lari
systemctl start multi-user.target
dari shell root, komputer terkunci. Jadi mungkin masalahnya dipicu oleh salah satu layanan ini. - Saya berlari
systemctl list-dependencies multi-user.target
untuk melihat layanan apa yang memulai. Saya secara manual memulai dependensi yang tercantum satu per satu, dan semuanya dimulai dengan baik.
Jadi ini terlihat seperti bug perangkat keras (karena terjadi pada satu komputer tetapi tidak pada yang lain) yang dipicu oleh beberapa perangkat lunak. Tapi perangkat lunak apa? Karena komputer terkunci sangat keras, saya tidak bisa mendapatkan log. Saya bahkan tidak bisa mendapatkan output konsol yang berguna.
Teknik debugging yang berguna:
- Alt+ SysRq: kunci SysRq ajaib , yang memungkinkan Anda melakukan hal-hal seperti reboot darurat. Ini mengakses kernel pada tingkat yang sangat rendah, sehingga bekerja di semua kecuali yang terburuk crash. Dalam kasus saya, Alt+ SysRqtidak merespons, yang menunjukkan seberapa dalam kecelakaan itu berlangsung.
- Untuk memodifikasi parameter boot, tekan dan tahan Shiftbeberapa detik setelah menyalakan power. Anda perlu menekannya setelah BIOS menginisialisasi keyboard, tetapi sebelum sistem operasi melakukan boot. Ini membuat menu Grub muncul.
- Di menu Grub, tekan euntuk mengedit baris perintah untuk entri menu. Untuk mengubah parameter boot Linux, navigasikan ke baris yang dimulai dengan
linux
. Pada Ubuntu modern, Anda akan menemukan kernel lama di bawah "Opsi lanjutan untuk Ubuntu". Setelah Anda membuat perubahan yang diinginkan pada baris perintah, tekan Ctrl+ xuntuk mem-boot. Setiap perubahan yang Anda lakukan di sini hanya untuk boot ini, mereka tidak disimpan ke disk. - Beberapa opsi berguna pada
linux
baris perintah:quiet nosplash
menyembunyikan hampir semua pesan booting. Hapus mereka untuk mendapatkan pesan di konsol saat boot, yang perlu memiliki peluang untuk mendiagnosis masalah.recovery
memberi Anda shell root dengan hampir tanpa layanan. Anda harus mengetahui kata sandi root. Entri menu "mode pemulihan" menggunakan ini.init=/bin/sh
memberi Anda shell root tanpa layanan sama sekali. Untuk melanjutkan boot normal, jalankanexec init
. Anda dapat melewati opsi systemd pada titik ini, misalnyaexec init --unit=basic.target
untuk memulai init dan beberapa layanan (perhatikan bahwa ini tidak memulai cara untuk masuk, jadi Anda sebaiknya menjalankan shell di konsol lain). Perhatikan bahwa sistem file root di-mount hanya-baca; jalankanmount -o remount,rw /
untuk dapat menulis untuk itu.systemd.unit=basic.target
memulai serangkaian layanan yang sangat mendasar. Perhatikan bahwa ini tidak termasuk cara untuk masuk! Anda bisa menjadikan ini sebagai default dengan menjalankansystemctl set-default basic.target
prompt root. Untuk mengembalikan target default asli, jalankansystemctl set-default graphical.target
(atausystemctl set-default multi-user.target
untuk server tanpa GUI).systemd.debug-shell
memulai shell root pada tty9. Anda dapat mengaktifkan ini untuk setiap boot dengan menjalankansystemctl enable debug-shell
prompt root. Jangan lupa untuk menonaktifkan ini setelah Anda menyelesaikan masalah dengansystemctl disable debug-shell
. Tekan Alt+ F9untuk beralih ke tty9.- Lihat juga tips Fedora systemd , kiat masalah boot Arch Linux .
noipbp
sebagian besar sebagai cara untuk boot ke sistem yang mempengaruhi. Saya pikir perbaikan terbaik di sini adalah meng-upgrade kernel.