Kernel Oops, palaižot VPN: pierādījumi, ko ir vērts saglabāt
Avārija VPN palaišanas laikā prasa atbilstošu kernela būvējumu un pirmo pēdu, nevis pēdējās rindas ekrānuzņēmumu. Izlemiet, ko saglabāt pirms atkārtotas pārstartēšanas.
VPN klienta palaišana ir ērts laika zīmogs, nevis cēlonis, un šī atšķirība nosaka, kas notiks tālāk. Kad kernela Oops notiek netālu no šī brīža, izvēle ir starp lietderīga bojājuma ziņojuma savākšanu un tā paša avārijas izraisīšanu vēl piecas reizes ražošanas mašīnā. Pirms pārstartēšanas saglabājiet četras lietas: precīzu kernela būvējumu, pirmo bojājuma pēdu, taint stāvokli un īsu aprakstu par visu pārējo, kas mainījās tajā pašā minūtē. Pārējais ir interpretācija, un interpretācija var pagaidīt, līdz pierādījumi ir drošā vietā.
Noķeriet pirmo bojājumu, nevis pēdējo rindu
Pirmais Oops žurnālā ir tas, kam ir nozīme, jo katrs vēlākais bojājums var būt jau nevesela kernela blakuspostījums. Nokopējiet galveni kopā ar izsaukumu pēdu, jo galvene satur bojāto instrukciju un reģistru stāvokli, kas identificē koda ceļu. Ziņojums, kas sākas ar pēdējo rindu, ir ļoti maz vērts tam, kurš to lasīs pēc nedēļas.
Ja mašīna jau ir pārstartēta, iepriekšējās palaišanas kernela buferis bieži vēl ir žurnālā, ar nosacījumu, ka tajā laikā bija iespējota pastāvīga glabāšana. Lasiet to no saglabātās faila, nevis veidojiet darba slodzi no jauna, jo otra reproducēšana var pārrakstīt to, kas jums nepieciešams. Tur, kur mašīna nevar saglabāt žurnālu starp pārstartēšanām, sērijas konsole vai netconsole ir vienīgais veids, kā bojājums kādreiz kļūs redzams.
Nofiksējiet būvējumu, pirms lasāt jebkuru simbolu
Funkciju nosaukumiem un nobīdēm ir nozīme tikai attiecībā pret bināro failu, kas tos radīja, tāpēc pierakstiet kernela izlaiduma virkni un distribūcijas būvējuma identifikatoru kopā. Simbolu fails no cita būvējuma ar pilnīgu pārliecību norāda uz nepareizo rindu, kas ir sliktāk nekā vispār nebūt simbolam. Saglabājiet kernela pakotnes versiju, ne tikai upstream numuru, jo distribūcijas daudz ko pārnes atpakaļ.
Moduļi ārpus koka ir pelnījuši savu rindu ierakstā, jo taintēts kernelis ierobežo, ko uzturētājs drīkst secināt. Lasiet taint vērtību, nevis seciniet to no moduļu saraksta.
Taint, kas nav nulle, nav apsūdzība un nepadara ziņojumu bezvērtīgu. Tas stāsta lasītājam, kuri komponenti bija ielādēti bojājuma laikā, un daži karodziņi liek ziņojuma prioritāti pazemināt politikas, nevis sprieduma dēļ. Pierakstiet vērtību, moduļu nosaukumus un vai tā pati aparatūra un darba slodze kādreiz ir darbinājusi kerneli bez tiem. Tieši šis pēdējais salīdzinājums atšķir jaunu regresiju no senas kļūdas.
Atdaliet ierosinātāju no defekta
Tuneļa palaišana parasti izmanto ceļu, kas jau pastāvēja: tīkla draiveri, rindas disciplīnu, offload funkciju vai enerģijas stāvokli. Ierosinātājs izskaidro, kad bojājums parādās, nevis kurš kods ir nepareizs, un ierosinātāja uzskatīšana par cēloni noved pie konfigurācijas izmaiņu virknes, kas neko nelabo.
Darbojošs agrākais attēls ir pierādījums, nevis pierādīšana. Salīdzinot, mainiet vienu komponentu uz katru palaišanu, un glabājiet rezultātus vietā, kas pārdzīvo mašīnu.
Pārbaudiet, ko uzturētājs faktiski var izmantot
Pirms nosūtīšanas izlasiet ziņojumu tā, kā to lasītu svešinieks. Ja konfigurācija, precīzā secība un būvējuma identitāte ir klāt, un akreditācijas dati ir noņemti, ziņojums ir izmantojams. Ja tas ir steka pēdas ekrānuzņēmums, tas atgriezīsies ar lūgumu pēc tās pašas informācijas. Kernela kļūdu meklēšanas rokasgrāmata apraksta, kā izskatās lietderīga pēda un atbilstoš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:'
Katra komanda iepriekš tikai nolasa stāvokli, un pirmās divas būtu jāpalaiž pirms nākamās pārstartēšanas, ja mašīna vēl spēj uz tām atbildēt. Tur, kur žurnāls nav pastāvīgs, tieši šīs divas ir vienīgās, kas kādreiz atkal darbosies.
Noņemiet atslēgas, paroles un nesaistītu satiksmi, bet saglabājiet funkciju nosaukumus un nobīdes, kas kādam nepieciešamas pēdas nolasīšanai. Sūtiet materiālu pa ziņošanas ceļu, kas attiecas uz distribūciju vai kerneli, nevis publisku ielīmējumu ar pievienotu resursdatora nosaukumu. Pēc tam gaidiet jautājumu, nevis vāciet vairāk avāriju, jo lokalizēts bojājums pret atbilstošu būvējumu ir vienīgais rezultāts, kas virza ziņojumu uz priekšu. Ja nekas neatgriežas, rezerves variants ir kontrolēta reproducēšana rezerves aparatūrā, nekad mašīnā, no kuras ir atkarīgi citi cilvēki.