Kernel Oops ob zagonu VPN: dokazi, ki jih je vredno shraniti
Zrušitev ob zagonu VPN potrebuje ustrezno gradnjo jedra in prvo sled, ne posnetka zadnje vrstice. Odločite se, kaj shraniti, preden znova zaženete.
Zagon odjemalca VPN je priročna časovna oznaka, ne vzrok, in ta razlika odloča, kaj se zgodi naprej. Ko se v tistem trenutku pojavi kernel Oops, je izbira med zbiranjem uporabnega poročila o napaki in sprožitvijo iste zrušitve še petkrat na produkcijskem stroju. Pred ponovnim zagonom shranite štiri stvari: natančno gradnjo jedra, prvo sled napake, stanje taint in kratek opis vsega drugega, kar se je spremenilo v isti minuti. Ostalo je razlaga, in razlaga lahko počaka, dokler dokazi niso na varnem.
Ujemite prvo napako, ne zadnje vrstice
Prvi Oops v dnevniku je tisti, ki je pomemben, ker je lahko vsaka poznejša napaka stranska škoda jedra, ki ni več zdravo. Kopirajte glavo skupaj s sledjo klicev, saj glava nosi ukaz, ki je spodletel, in stanje registrov, ki določa pot kode. Poročilo, ki se začne pri zadnji vrstici, je za tistega, ki ga bo prebral teden pozneje, vredno zelo malo.
Če je stroj že znova zagnan, je medpomnilnik jedra prejšnjega zagona pogosto še v dnevniku, če je bil takrat omogočen trajni pomnilnik. Preberite ga iz shranjene datoteke, namesto da bi znova ustvarili obremenitev, ker lahko druga ponovitev prepiše tisto, kar potrebujete. Kjer stroj ne more hraniti dnevnika med ponovnimi zagona, je serijska konzola ali netconsole edini način, da napaka kdaj postane vidna.
Določite gradnjo, preden preberete kateri koli simbol
Imena funkcij in odmiki imajo pomen le glede na binarno datoteko, ki jih je ustvarila, zato zapišite niz izdaje jedra in identifikator gradnje distribucije skupaj. Datoteka simbolov iz druge gradnje s popolno gotovostjo kaže na napačno vrstico, kar je slabše kot nimate nobenega simbola. Ohranite različico paketa jedra, ne le številke upstream, ker distribucije veliko prenašajo nazaj.
Moduli zunaj drevesa si zaslužijo svojo vrstico v zapisu, saj jedro z oznako taint omejuje, kaj sme vzdrževalec sklepati. Preberite vrednost taint, namesto da bi jo izpeljali s seznama modulov.
Taint, ki ni nič, ni obtožba in poročila ne naredi brezvrednega. Pove bralcu, katere komponente so bile naložene ob napaki, in nekatere zastavice povzročijo, da je poročilo po politikah manj prednostno, ne po presoji. Zapišite vrednost, imena modulov in ali sta ista strojna oprema in obremenitev kdaj poganjala jedro brez njih. Prav ta zadnja primerjava loči novo regresijo od dolgoletne napake.
Ločite sprožilec od napake
Zagon tunela običajno izvaja pot, ki je že obstajala: omrežni gonilnik, disciplino čakalne vrste, funkcijo offload ali energijsko stanje. Sprožilec pojasni, kdaj se napaka pojavi, ne katera koda je napačna, in obravnavanje sprožilca kot vzroka vodi v vrsto sprememb konfiguracije, ki ničesar ne popravijo.
Delujoča prejšnja slika je dokaz, ne dokazovanje. Pri primerjavi spreminjajte eno komponento na zagon in rezultate hranite nekje, kar preživi stroj.
Preverite, kaj lahko vzdrževalec dejansko uporabi
Preberite poročilo tako, kot bi ga prebral tujec, preden ga pošljete. Če so konfiguracija, natančno zaporedje in identiteta gradnje prisotni ter so poverilnice odstranjene, je poročilo uporabno. Če je to posnetek zaslona sledi sklada, se vrne z zahtevo po istih informacijah. Vodnik za iskanje napak v jedru opisuje, kako izgledata uporabna sled in ustrezni 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:'
Vsak ukaz zgoraj samo bere stanje, prva dva pa bi bilo treba zagnati pred naslednjim ponovnim zagonom, če jima stroj še lahko odgovori. Kjer dnevnik ni trajen, sta prav ta dva edina, ki bosta kdaj znova delovala.
Odstranite ključe, gesla in nepovezan promet, vendar ohranite imena funkcij in odmike, ki jih nekdo potrebuje za branje sledi. Gradivo pošljite po poti prijave, ki velja za distribucijo ali jedro, ne z javnim lepljenjem s priloženim imenom gostitelja. Nato počakajte na vprašanje, namesto da bi pobirali več zrušitev, ker je lokalizirana napaka proti ustrezni gradnji edini izid, ki poročilo premakne naprej. Če se nič ne vrne, je rezerva nadzorovana ponovitev na rezervni strojni opremi, nikoli na stroju, od katerega so odvisni drugi ljudje.