Memecahkan masalah booting VM Linux karena kernel panic


Dokumen ini berisi informasi pemecahan masalah tentang VM yang menjadi tidak responsif karena error panic kernel.

Sebelum memulai

  • Jika ingin mencatat output port serial ke dalam log di Cloud Logging, pahami Cloud Logging.
  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init

Kernel panic

Kernel panic dapat terjadi saat kernel tidak dapat memuat modul initramfs dengan benar, yang diperlukan agar OS tamu dapat melakukan booting.

Bentuk lain dari kernel panic dapat terjadi jika kernel tidak tahu cara menangani permintaan tertentu dan melindungi dirinya sendiri dengan berhenti. Kernel panic dapat terjadi pada VM Compute Engine yang menjalankan RedHat, SUSE, CentOS, atau Ubuntu.

Pesan error umum

Di bawah ini adalah beberapa peristiwa kernel panic yang paling umum sebagai referensi:

Kernel panic - not syncing: hung_task: blocked tasks
Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Kernel panic - not syncing: NMI: Not continuing
Kernel panic - not syncing: out of memory. panic_on_oom is selected
Kernel panic - not syncing: Fatal Machine check 

Penyebab umum

Error kernel panic dapat terjadi karena berbagai alasan. Beberapa alasan umumnya adalah:

  • Entri terkait file initramfs yang sesuai dengan kernel tidak ada dalam file grub.cfg.
  • File initramfs tidak dibuat dalam direktori /boot selama penginstalan kernel.
  • File initramfs hanya dibuat sebagian atau rusak.

Gejala

Ketika Anda mengalami kernel panic pada instance VM, gejala umumnya adalah kernel tidak mengizinkan Anda terhubung ke VM, meskipun saat menggunakan konsol serial.

Anda harus memeriksa log konsol serial untuk mengidentifikasi kernel yang dimuat oleh OS tamu, misalnya:

[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.0-1160.95.1.el7.x86_64 (mockbuild@x86-vm-42.build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Thu Aug 10 10:46:21 EDT 2023
Periksa juga error kernel panic. Error ini biasanya terlihat pada baris kernel saat VM dimulai atau di akhir log konsol serial dengan beberapa pelacakan panggilan stack.

Contoh berikut menunjukkan peristiwa kernel panic karena masalah initramfs:

[    1.520840] No filesystem could mount root, tried:
[    1.520840]
[    1.521964] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    1.523495] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.10.0-1160.95.1.el7.x86_64 #1
[    1.524932] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/11/2022
[    1.526901] Call Trace:
[    1.527421]  dump_stack+0x41/0x60
[    1.527978]  panic+0xe7/0x2ac
[    1.528578]  mount_block_root+0x2be/0x2e6
[    1.529693]  ? do_early_param+0x95/0x95
[    1.530441]  prepare_namespace+0x135/0x16b
[    1.531237]  kernel_init_freeable+0x203/0x22d
[    1.532081]  ? rest_init+0xaa/0xaa
[    1.532808]  kernel_init+0xa/0x103
[    1.533395]  ret_from_fork+0x35/0x40
[    1.535229] Kernel Offset: 0x23a00000 from 0xffffffff81000000  

Mengatasi error kernel panic

Untuk mengatasi error kernel panic, lakukan langkah-langkah berikut:

  1. Hubungkan ke konsol serial dan login ke VM dari Konsol Google Cloud.

  2. Klik Reset untuk VM di Konsol Google Cloud.

  3. Setelah layar pembuka GRUB muncul, pilih kernel yang sebelumnya berfungsi atau kernel rescue, lalu booting sistem. Tindakan ini menyebabkan VM dimulai dengan kernel yang dipilih.

    kernel panic

  4. Ketika VM dapat diakses, Anda dapat memulai koneksi SSH ke VM.

  5. Mengidentifikasi penyebab masalahnya dan mengambil tindakan yang sesuai.

    Misalnya, jika file initramfs tidak ada atau rusak, selesaikan langkah-langkah berikut:

    1. Buat file initramfs yang sesuai dengan kernel asli menggunakan perintah dracut, misalnya:

      dracut -f /boot/initramfs-3.10.0-1160.95.1.el7.x86_64.img 3.10.0-1160.95.1.el7.x86_64
      
    2. Update file grub2.cfg menggunakan perintah grub2-mkconfig, misalnya:

      grub2-mkconfig -o /boot/grub2/grub.cfg
      
    3. Setelah file initramfs dibuat, Anda dapat memulai ulang VM tanpa error.