Kernel Oops kur nis VPN: prova që ia vlen të ruhen
Një rrëzim kur nis VPN kërkon ndërtimin përkatës të kernelit dhe gjurmën e parë, jo një pamje ekrani të rreshtit të fundit. Vendosni çfarë të ruani përpara se të rinisni përsëri.
Nisja e klientit VPN është një vulë kohore e përshtatshme, jo një shkak, dhe ky dallim vendos çfarë ndodh më pas. Kur një Oops kernel ndodh afër atij momenti, zgjedhja është midis mbledhjes së një raporti të përdorshëm të defektit dhe shkaktimit të të njëjtit rrëzim edhe pesë herë të tjera në një makinë prodhimi. Ruani katër gjëra përpara rinisjes: ndërtimin e saktë të kernelit, gjurmën e parë të defektit, gjendjen taint dhe një përshkrim të shkurtër të çdo gjëje tjetër që ndryshoi në të njëjtin minutë. Pjesa tjetër është interpretim, dhe interpretimi mund të presë derisa provat të jenë në një vend të sigurt.
Kapni defektin e parë, jo rreshtin e fundit
Oops i parë në regjistër është ai që ka rëndësi, sepse çdo defekt i mëvonshëm mund të jetë dëm anësor i një kerneli tashmë jo të shëndetshëm. Kopjoni kokën së bashku me gjurmën e thirrjeve, pasi koka mban udhëzimin që dështoi dhe gjendjen e regjistrave që identifikojnë rrugën e kodit. Një raport që fillon nga rreshti i fundit vlen shumë pak për këdo që e lexon një javë më vonë.
Nëse makina tashmë është rinisur, buferi i kernelit të nisjes së mëparshme shpesh është ende në regjistrin e sistemit, me kusht që në atë kohë të ishte aktivizuar ruajtja e përhershme. Lexojeni nga skedari i ruajtur në vend që të rikrijoni ngarkesën, sepse një riprodhim i dytë mund të mbishkruajë atë që ju nevojitet. Aty ku makina nuk mund të mbajë një regjistër mes rinisjeve, një konsolë serike ose netconsole është e vetmja mënyrë që defekti të bëhet ndonjëherë i dukshëm.
Fiksoni ndërtimin përpara se të lexoni çfarëdo simboli
Emrat e funksioneve dhe zhvendosjet kanë kuptim vetëm në lidhje me skedarin binar që i prodhoi, prandaj shënoni së bashku vargun e versionit të kernelit dhe identifikuesin e ndërtimit të shpërndarjes. Një skedar simbolesh nga një ndërtim tjetër tregon rreshtin e gabuar me besim të plotë, gjë që është më keq sesa të mos kesh fare simbol. Ruani versionin e paketës së kernelit, jo vetëm numrin upstream, sepse shpërndarjet bëjnë shumë backport.
Modulet jashtë pemës meritojnë rreshtin e tyre në regjistër, pasi një kernel me taint kufizon çfarë lejohet të konkludojë mirëmbajtësi. Lexoni vlerën e taint në vend që ta nxirrni nga një listë modulesh.
Një taint jo zero nuk është akuzë dhe nuk e bën raportin të pavlefshëm. I tregon lexuesit cilët komponentë ishin të ngarkuar kur ndodhi defekti, dhe disa flamuj bëjnë që një raport të ulet në përparësi nga politika dhe jo nga gjykimi. Shënoni vlerën, emrat e moduleve dhe nëse i njëjti harduer dhe e njëjta ngarkesë kanë ekzekutuar ndonjëherë një kernel pa ata. Pikërisht ajo krahasim i fundit ndan një regresion të ri nga një gabim i vjetër.
Ndani shkaktuesin nga defekti
Nisja e tunelit zakonisht ushtron një rrugë që ekzistonte tashmë: një drejtues rrjeti, një disiplinë radhe, një funksion offload ose një gjendje energjie. Shkaktuesi shpjegon kur shfaqet defekti, jo cili kod është i gabuar, dhe trajtimi i shkaktuesit si shkak çon në një sërë ndryshimesh konfigurimi që nuk rregullojnë asgjë.
Një imazh i mëparshëm që funksionon është provë, jo vërtetim. Kur krahasoni, ndryshoni një komponent për çdo nisje dhe mbajini rezultatet diku që i mbijeton makinës.
Kontrolloni çfarë mund të përdorë vërtet mirëmbajtësi
Lexojeni raportin ashtu siç do ta lexonte një i huaj përpara se ta dërgoni. Nëse konfigurimi, sekuenca e saktë dhe identiteti i ndërtimit janë të pranishëm, dhe kredencialet janë hequr, raporti është i përdorshëm. Nëse është një pamje ekrani e një gjurme stack, do të kthehet me një kërkesë për të njëjtat informacione. Udhëzuesi për gjuetinë e defekteve të kernelit përshkruan si duken një gjurmë e dobishme dhe simbolet përkatëse.
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:'
Çdo komandë më sipër lexon vetëm gjendjen, dhe dy të parat duhet të ekzekutohen përpara rinisjes së radhës nëse makina ende mund t'u përgjigjet. Aty ku regjistri nuk është i përhershëm, pikërisht ata dy janë të vetmit që do të funksionojnë ndonjëherë përsëri.
Hiqni çelësat, fjalëkalimet dhe trafikun e palidhur, por mbani emrat e funksioneve dhe zhvendosjet që i duhen dikujt për të lexuar gjurmën. Dërgojeni materialin përmes rrugës së raportimit që vlen për shpërndarjen ose kernelin, jo përmes një ngjitjeje publike me një emër hosti bashkangjitur. Pastaj prisni një pyetje në vend që të korrni më shumë rrëzime, sepse një defekt i lokalizuar kundrejt një ndërtimi përkatës është i vetmi rezultat që e çon raportin përpara. Nëse nuk kthehet asgjë, alternativa është një riprodhim i kontrolluar në harduer rezervë, kurrë në makinën nga e cila varen njerëz të tjerë.