Memulakan klien VPN ialah cap masa yang mudah, bukan punca, dan perbezaan itu menentukan apa yang berlaku seterusnya. Apabila Oops kernel berlaku berhampiran saat itu, pilihannya ialah antara mengumpul laporan kerosakan yang boleh digunakan dan mencetuskan kerosakan yang sama lima kali lagi pada mesin pengeluaran. Simpan empat perkara sebelum but semula: binaan kernel yang tepat, jejak kerosakan pertama, keadaan taint dan penerangan ringkas tentang semua perkara lain yang berubah pada minit yang sama. Selebihnya ialah tafsiran, dan tafsiran boleh menunggu sehingga bukti berada di tempat yang selamat.

Tangkap kerosakan pertama, bukan baris terakhir

Oops pertama dalam log ialah yang penting, kerana setiap kerosakan kemudian mungkin kerosakan sampingan daripada kernel yang sudah tidak sihat. Salin pengepala bersama jejak panggilan, kerana pengepala membawa arahan yang gagal dan keadaan daftar yang mengenal pasti laluan kod. Laporan yang bermula pada baris terakhir bernilai sangat sedikit bagi sesiapa yang membacanya seminggu kemudian.

Jika mesin sudah but semula, penimbal kernel daripada but sebelumnya selalunya masih ada dalam jurnal, dengan syarat storan berterusan diaktifkan ketika itu. Bacanya daripada fail yang disimpan dan bukannya mencipta semula beban kerja, kerana pengeluaran semula kedua boleh menimpa apa yang anda perlukan. Di tempat mesin tidak dapat menyimpan jurnal antara but, konsol bersiri atau netconsole ialah satu-satunya cara kerosakan itu akan kelihatan.

Kunci binaan sebelum membaca mana-mana simbol

Nama fungsi dan offset hanya bermakna berbanding binari yang menghasilkannya, jadi rekodkan rentetan keluaran kernel dan pengecam binaan distribusi bersama-sama. Fail simbol daripada binaan lain menunjuk ke baris yang salah dengan keyakinan penuh, yang lebih teruk daripada tiada simbol sama sekali. Simpan versi pakej kernel, bukan hanya nombor upstream, kerana distribusi banyak membuat backport.

Modul di luar pokok wajar mendapat barisnya sendiri dalam rekod, kerana kernel yang di-taint mengehadkan apa yang boleh disimpulkan penyelenggara. Baca nilai taint dan bukannya menyimpulkannya daripada senarai modul.

Taint bukan sifar bukan tuduhan dan tidak menjadikan laporan tidak berguna. Ia memberitahu pembaca komponen mana yang dimuatkan semasa kerosakan berlaku, dan sesetengah bendera menyebabkan laporan diturunkan keutamaan oleh dasar dan bukan oleh pertimbangan. Rekodkan nilainya, nama modul dan sama ada perkakasan serta beban kerja yang sama pernah menjalankan kernel tanpanya. Perbandingan terakhir itulah yang memisahkan regresi baharu daripada pepijat lama.

Pisahkan pencetus daripada kecacatan

Memulakan terowong biasanya menggunakan laluan yang sudah wujud: pemacu rangkaian, disiplin baris gilir, ciri offload atau keadaan kuasa. Pencetus menjelaskan bila kerosakan muncul, bukan kod mana yang salah, dan menganggap pencetus sebagai punca membawa kepada satu siri perubahan konfigurasi yang tidak membetulkan apa-apa.

Imej terdahulu yang berfungsi ialah bukti, bukan pembuktian. Tukar satu komponen setiap but semasa membandingkan, dan simpan hasilnya di tempat yang bertahan selepas mesin.

Semak apa yang benar-benar boleh digunakan oleh penyelenggara

Baca laporan itu seperti orang asing akan membacanya sebelum menghantarnya. Jika konfigurasi, urutan tepat dan identiti binaan ada, dan kelayakan telah dibuang, laporan itu boleh digunakan. Jika ia tangkapan skrin jejak tindanan, ia akan kembali dengan permintaan maklumat yang sama. Panduan memburu pepijat kernel menerangkan rupa jejak yang berguna dan simbol yang sepadan.

uname -r
cat /proc/sys/kernel/tainted
journalctl -k -b -1 --no-pager | sed -n '/BUG:/,/Call Trace/p'
dmesg -T | grep -A 40 'RIP:'

Setiap arahan di atas hanya membaca keadaan, dan dua yang pertama patut dijalankan sebelum but semula seterusnya jika mesin masih boleh menjawabnya. Di tempat jurnal tidak berterusan, kedua-duanya sahaja yang akan berfungsi semula.

Padamkan kunci, kata laluan dan trafik tidak berkaitan, tetapi kekalkan nama fungsi dan offset yang diperlukan seseorang untuk membaca jejak. Hantar bahan melalui laluan pelaporan yang terpakai kepada distribusi atau kernel, bukan tampalan awam dengan nama hos dilampirkan. Kemudian tunggu soalan dan bukannya menuai lebih banyak kerosakan, kerana kerosakan yang disetempatkan terhadap binaan yang sepadan ialah satu-satunya hasil yang memajukan laporan. Jika tiada apa-apa kembali, alternatifnya ialah pengeluaran semula terkawal pada perkakasan ganti, tidak pernah pada mesin yang diharapkan oleh orang lain.

Artikel berkaitan