It starten fan ’e VPN-klant is in handich tiidstimpel ynstee fan in oarsaak, en dat ûnderskied bepaalt wat der dêrnei bart. As in kernel-Oops tichtby dat momint falt, is de kar tusken it sammeljen fan in brûkber flaterrapport en it noch fiif kear opwekken fan deselde crash op in produksjemasine. Bewarje fjouwer dingen foardat jo opnij starte: de krekte kernel-build, it earste flaterspoar, de taint-tastân en in koarte beskriuwing fan al it oare dat yn deselde minút feroare. De rest is ynterpretaasje, en dy kin wachtsje oant it bewiis op in feilich plak is.

Fange it earste flater, net de lêste rigel

De earste Oops yn it log is dejinge dy’t fan belang is, om’t elke lettere flater kollaterale skea wêze kin fan in kernel dy’t al net sûn is. Kopiearje de kop tegearre mei de call trace, om’t de kop de flaterjende ynstruksje en de registertastân befettet dy’t it kodepaard identifisearje. In rapport dat by de lêste rigel begjint, is foar wa’t it in wike letter lêst mar hiel lyts bytsje wurdich.

As de masine al opnij start is, stiet de kernelbuffer fan ’e foarige start faak noch yn it sjoernaal, mits doetiids permaninte opslach oan stie. Lês dy út it bewarre bestân ynstee fan ’e wurklast opnij te meitsjen, om’t in twadde reproduksje oerskriuwe kin wat jo nedich hawwe. Dêr’t de masine gjin sjoernaal oer opnij starten hinne hâlde kin, is in searjele console of netconsole de iennige manier wêrop de flater ea sichtber wurdt.

Fêstigje de build foardat jo hokker symboal dan ek lêze

Funksjenammen en offsets betsjutte allinnich wat tsjin it binêre bestân dat se makke hat, dus skriuw de kernel-release-string en de build-identifikaasje fan ’e distribúsje tegearre op. In symboalbestân út in oare build wiist mei folsleine fertrouwen nei de ferkearde rigel, wat slimmer is as hielendal gjin symboal hawwe. Hâld de ferzje fan it kernelpakket, net allinnich it upstream-nûmer, om’t distribúsjes in soad backporte.

Modules bûten de beam fertsjinje har eigen rigel yn it ferslach, om’t in taint-e kernel beheint wat in ûnderhâlder konkludearje meie. Lês de taint-wearde ynstee fan dy út in modulelist ôf te lieden.

In net-nul taint is gjin beskuldiging en makket it rapport net weardeleas. It fertelt de lêzer hokker komponinten laden wiene doe’t de flater barde, en guon flaggen soargje derfoar dat in rapport troch belied ynstee fan troch oardiel yn prioriteit ferlege wurdt. Skriuw de wearde, de modulenammen en oft deselde hardware en wurklast ea in kernel sûnder se draaid hawwe. Krekt dy lêste ferliking skiedt in nije regression fan in langsteande bug.

Skied in trigger fan in defekt

It starten fan ’e tunnel brûkt normaal in paad dat al bestie: in netwurkdriver, in wachtrige-dissipline, in offload-funksje of in enerzjy-tastân. De trigger ferklearret wannear’t de flater ferskynt, net hokker koade ferkeard is, en de trigger as oarsaak behannelje liedt ta in rige konfiguraasjeferoarings dy’t neat reparearje.

In wurkjend earder image is bewiis, gjin bewiisfoering. Feroarje by it ferliken ien komponint per start, en hâld de resultaten earne dy’t de masine oerlibje.

Kontrolearje wat de ûnderhâlder echt brûke kin

Lês it rapport sa’t in frjemdling it lêze soe foardat jo it stjoere. As de konfiguraasje, de krekte folchoarder en de build-identiteit oanwêzich binne, en de oanmeldgegevens fuort binne, is it rapport brûkber. As it in skermprint fan in stacktrace is, komt it werom mei in fersyk om deselde ynformaasje. De gids foar kernel-flateropsiking beskriuwt hoe’t in brûkber spoar en passende symboalen derút sjogge.

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

Elk kommando hjirboppe lêst allinnich tastân, en de earste twa moatte foar de folgjende opnij start draaie as de masine se noch beantwurdzje kin. Dêr’t it sjoernaal net permanint is, binne dy twa de iennigen dy’t ea wer wurkje sille.

Feroarje kaaien, wachtwurden en net-relatearre ferkear, mar hâld de funksjenammen en offsets dy’t immen nedich hat om it spoar te lêzen. Stjoer it materiaal fia it meldpaad dat jildt foar de distribúsje of de kernel, net in iepenbiere paste mei in hostnamme deroan. Wachtsje dan op in fraach ynstee fan mear crashes te rispjen, om’t in lokalisearre flater tsjin in passende build it iennige resultaat is dat it rapport foarút helpt. As der neat weromkomt, is de fallback in kontrolearre reproduksje op reservehardware, nea op ’e masine dêr’t oare minsken fan ôfhinklik binne.

Relatearre artikelen