Kernel Oops paleidus VPN: įrodymai, kuriuos verta išsaugoti
Staigus nulūžimas paleidus VPN reikalauja atitinkančio kernelio kompiliavimo ir pirmojo pėdsako, o ne paskutinės eilutės ekrano kopijos. Nuspręskite, ką išsaugoti prieš paleidžiant iš naujo.
VPN kliento paleidimas yra patogi laiko žyma, o ne priežastis, ir šis skirtumas lemia, kas nutiks toliau. Kai netoli tos akimirkos įvyksta kernelio Oops, pasirinkimas yra tarp naudingo gedimo ataskaitos surinkimo ir to paties nulūžimo sukėlimo dar penkis kartus gamybinėje mašinoje. Prieš paleisdami iš naujo išsaugokite keturis dalykus: tikslią kernelio kompiliavimą, pirmąjį gedimo pėdsaką, taint būseną ir trumpą aprašymą visko kito, kas pasikeitė tą pačią minutę. Likusioji dalis yra interpretacija, o interpretacija gali palaukti, kol įrodymai bus saugioje vietoje.
Pagaukite pirmąjį gedimą, o ne paskutinę eilutę
Pirmasis žurnalo Oops yra tas, kuris svarbus, nes kiekvienas vėlesnis gedimas gali būti jau nesveiko kernelio šalutinė žala. Nukopijuokite antraštę kartu su iškvietimų pėdsaku, nes antraštėje yra gedimą sukėlusi instrukcija ir registrų būsena, nurodanti kodo kelią. Ataskaita, prasidedanti paskutine eilute, yra labai mažai verta tam, kas ją perskaitys po savaitės.
Jei mašina jau paleista iš naujo, ankstesnio paleidimo kernelio buferis dažnai dar yra žurnale, jei tuo metu buvo įjungta nuolatinė saugykla. Skaitykite jį iš išsaugoto failo, o ne kurkite darbo krūvio iš naujo, nes antra reprodukcija gali perrašyti tai, ko jums reikia. Ten, kur mašina negali išlaikyti žurnalo tarp paleidimų, serijinė konsolė arba netconsole yra vienintelis būdas, kuriuo gedimas kada nors taps matomas.
Užfiksuokite kompiliavimą prieš skaitydami bet kurį simbolį
Funkcijų pavadinimai ir poslinkiai turi prasmę tik to dvejetainio failo atžvilgiu, kuris juos sukūrė, todėl užrašykite kernelio išleidimo eilutę ir distribucijos kompiliavimo identifikatorių kartu. Kito kompiliavimo simbolių failas visiškai užtikrintai nurodo netinkamą eilutę, o tai yra blogiau nei visiškai neturėti simbolio. Saugokite kernelio paketo versiją, o ne tik upstream numerį, nes distribucijos daug ką perkelia atgal.
Už medžio ribų esantys moduliai nusipelno savo eilutės įraše, nes taintintas kernelis apriboja, ką prižiūrėtojas gali daryti išvadas. Skaitykite taint reikšmę, o ne išveskite ją iš modulių sąrašo.
Nenulinis taint nėra kaltinimas ir nedaro ataskaitos bevertės. Jis pasako skaitytojui, kurie komponentai buvo įkelti gedimo metu, o kai kurios vėliavėlės lemia, kad ataskaitos prioritetas sumažinamas pagal politiką, o ne pagal sprendimą. Užrašykite reikšmę, modulių pavadinimus ir ar ta pati aparatinė įranga bei darbo krūvis kada nors paleido kernelį be jų. Būtent šis paskutinis palyginimas atskiria naują regresiją nuo senos klaidos.
Atskirkite sukėlėją nuo defekto
Tunelio paleidimas paprastai naudoja jau egzistavusį kelią: tinklo tvarkyklę, eilės discipliną, offload funkciją arba maitinimo būseną. Sukėlėjas paaiškina, kada gedimas pasirodo, o ne kuris kodas neteisingas, ir sukėlėjo laikymas priežastimi veda prie konfigūracijos pakeitimų serijos, kuri nieko nesutvarko.
Veikiantis ankstesnis atvaizdas yra įrodymas, o ne įrodinėjimas. Lyginant keiskite vieną komponentą per paleidimą, o rezultatus laikykite ten, kur jie išlieka po mašinos.
Patikrinkite, ką prižiūrėtojas iš tikrųjų gali naudoti
Prieš siųsdami perskaitykite ataskaitą taip, kaip skaitytų nepažįstamas žmogus. Jei konfigūracija, tiksli seka ir kompiliavimo tapatybė yra, o prisijungimo duomenys pašalinti, ataskaita yra naudinga. Jei tai krūvos pėdsako ekrano kopija, ji grįš su prašymu tų pačių duomenų. Kernelio klaidų paieškos vadovas aprašo, kaip atrodo naudingas pėdsakas ir atitinkantys simboliai.
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:'
Kiekviena aukščiau pateikta komanda tik skaito būseną, o pirmąsias dvi reikėtų paleisti prieš kitą paleidimą, jei mašina dar gali į jas atsakyti. Ten, kur žurnalas nėra nuolatinis, būtent tos dvi yra vienintelės, kurios kada nors vėl veiks.
Pašalinkite raktus, slaptažodžius ir nesusijusį srautą, bet palikite funkcijų pavadinimus ir poslinkius, kurių kam nors reikia pėdsakui perskaityti. Siųskite medžiagą tuo pranešimo keliu, kuris taikomas distribucijai arba kerneliui, o ne viešu įkliju, prie kurio pridėtas pagrindinio kompiuterio vardas. Tada laukite klausimo, o ne rinkite daugiau nulūžimų, nes lokalizuotas gedimas prieš atitinkantį kompiliavimą yra vienintelis rezultatas, kuris pastūmėja ataskaitą į priekį. Jei nieko negrįžta, atsarginis variantas yra kontroliuojama reprodukcija atsarginėje aparatinėje įrangoje, niekada toje mašinoje, nuo kurios priklauso kiti žmonės.