Pokretanje VPN klijenta je zgodna vremenska oznaka, a ne uzrok, i ta razlika odlučuje što se dalje događa. Kada se kernel Oops pojavi blizu tog trenutka, izbor je između prikupljanja upotrebljivog izvještaja o kvaru i izazivanja istog pada još pet puta na produkcijskom računalu. Sačuvajte četiri stvari prije restarta: točnu verziju kernela, prvi trag kvara, stanje taint i kratak opis svega ostalog što se promijenilo u istoj minuti. Ostalo je tumačenje, a tumačenje može čekati dok dokazi nisu na sigurnom.

Uhvatite prvi kvar, a ne zadnji redak

Prvi Oops u zapisu je onaj koji je važan, jer svaki kasniji kvar može biti kolateralna šteta od kernela koji više nije zdrav. Kopirajte zaglavlje zajedno s tragom poziva, jer zaglavlje nosi instrukciju koja je izazvala kvar i stanje registara koje identificira putanju koda. Izvještaj koji počinje od zadnjeg retka vrijedi vrlo malo onome tko ga pročita tjedan kasnije.

Ako se računalo već restartalo, kernelska memorija prethodnog podizanja često je još u dnevniku, pod uvjetom da je tada bila omogućena trajna pohrana. Čitajte je iz spremljene datoteke umjesto da ponovno stvarate radno opterećenje, jer druga reprodukcija može prepisati ono što vam treba. Tamo gdje računalo ne može čuvati dnevnik između restarta, serijska konzola ili netconsole jedini je način da kvar ikada postane vidljiv.

Fiksirajte verziju prije nego što pročitate bilo koji simbol

Imena funkcija i pomaci imaju smisla samo prema binarnom fajlu koji ih je proizveo, zato zapišite verziju kernela i identifikator verzije distribucije zajedno. Datoteka simbola iz druge verzije pokazuje na pogrešan redak s potpunom sigurnošću, što je gore nego da nemate nikakav simbol. Čuvajte verziju paketa kernela, ne samo upstream broj, jer distribucije mnogo toga prenose natrag.

Moduli izvan stabla zaslužuju svoj redak u zapisu, jer označeni kernel ograničava što održavatelj smije zaključiti. Čitajte vrijednost taint umjesto da je izvodite iz popisa modula.

Taint različit od nule nije optužba i ne čini izvještaj bezvrijednim. On govori čitatelju koji su komponenti bili učitani kada se kvar dogodio, a neke zastavice dovode do toga da izvještaj bude smanjenog prioriteta po politici, a ne po prosudbi. Zapišite vrijednost, imena modula i jesu li isti hardver i radno opterećenje ikada radili kernel bez njih. Upravo to posljednje uspoređivanje razdvaja novu regresiju od dugogodišnje greške.

Razdvojite okidač od defekta

Pokretanje tunela obično aktivira putanju koja je već postojala: mrežni drajver, disciplinu reda čekanja, funkciju offloada ili stanje napajanja. Okidač objašnjava kada se kvar pojavljuje, a ne koji je kod pogrešan, a tretiranje okidača kao uzroka vodi nizu promjena konfiguracije koje ništa ne popravljaju.

Ranija slika koja radi jest dokaz, ali ne i dokazano. Pri uspoređivanju mijenjajte po jednu komponentu po podizanju i čuvajte rezultate negdje gdje nadžive računalo.

Provjerite što održavatelj zaista može iskoristiti

Pročitajte izvještaj kao što bi ga pročitao stranac prije nego što ga pošaljete. Ako su konfiguracija, točan slijed i identitet verzije prisutni, a akreditivi uklonjeni, izvještaj je upotrebljiv. Ako je to snimka zaslona stack tracea, vratit će se sa zahtjevom za iste informacije. Vodič za traženje grešaka kernela opisuje kako izgledaju koristan trag i odgovarajući simboli.

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:'

Svaka naredba iznad samo čita stanje, a prve dvije treba pokrenuti prije sljedećeg restarta ako računalo još može odgovoriti na njih. Tamo gdje dnevnik nije trajan, samo će te dvije ikada ponovno raditi.

Uklonite ključeve, lozinke i nepovezani promet, ali zadržite imena funkcija i pomake koji su nekome potrebni da pročita trag. Pošaljite materijal putem prijavnog puta koji se odnosi na distribuciju ili kernel, a ne javnim lijepljenjem s priloženim imenom hosta. Zatim čekajte pitanje umjesto da skupljate još padova, jer lociran kvar prema odgovarajućoj verziji jedini je rezultat koji pomiče izvještaj naprijed. Ako se ništa ne vrati, rezerva je kontrolirana reprodukcija na rezervnom hardveru, nikada na računalu o kojem ovise drugi ljudi.

Povezani članci