VPN ishga tushganda yadro Oops: saqlashga arzigulik dalillar
VPN ishga tushganda yuz bergan halokat mos yadro build'i va birinchi izni talab qiladi, oxirgi satr ekran suratini emas. Yana qayta yuklashdan oldin nima saqlashni hal qiling.
VPN mijozini ishga tushirish qulay vaqt belgisi bo'lib, sabab emas, va bu farq keyin nima bo'lishini belgilaydi. Yadro Oops o'sha lahzaga yaqin sodir bo'lganda, tanlov foydali xato hisobotini yig'ish va o'sha halokatni ishlab chiqarish mashinasida yana besh marta keltirib chiqarish o'rtasida bo'ladi. Qayta yuklashdan oldin to'rt narsani saqlang: aniq yadro build'i, xatoning birinchi izi, taint holati va o'sha daqiqada o'zgargan qolgan hamma narsaning qisqa tavsifi. Qolgani talqin, va talqin dalillar xavfsiz joyga yetguncha kutishi mumkin.
Oxirgi satrni emas, birinchi xatoni tuting
Jurnaldagi birinchi Oops muhim, chunki keyingi har bir xato allaqachon sog'lom bo'lmagan yadroning yon zarari bo'lishi mumkin. Chaqiruv izi bilan birga sarlavhani nusxalang, chunki sarlavha xatoga sabab bo'lgan ko'rsatma va kod yo'lini aniqlaydigan registr holatini olib yuradi. Oxirgi satrdan boshlanadigan hisobot bir hafta o'tib uni o'qigan kishi uchun juda kam qiymatga ega.
Agar mashina allaqachon qayta yuklangan bo'lsa, oldingi yuklanishning yadro buferi ko'pincha jurnalda qoladi, agar o'sha paytda doimiy saqlash yoqilgan bo'lsa. Ish yuklamasini qayta yaratish o'rniga uni saqlangan fayldan o'qing, chunki ikkinchi takrorlash sizga kerakli narsani ustiga yozishi mumkin. Mashina qayta yuklanishlar orasida jurnal saqlay olmaydigan joyda, ketma-ket konsol yoki netconsole xatoning ko'rinadigan bo'lishining yagona yo'li.
Har qanday belgini o'qishdan oldin buildni qulflang
Funksiya nomlari va ofsetlar faqat ularni yaratgan binar faylga nisbatan ma'noga ega, shuning uchun yadro chiqarilish satri va distributiv build identifikatorini birga yozib qo'ying. Boshqa buildning belgi fayli to'liq ishonch bilan noto'g'ri satrni ko'rsatadi, bu esa umuman belgi bo'lmasligidan yomonroq. Faqat upstream raqamini emas, yadro paketi versiyasini saqlang, chunki distributivlar ko'p narsani orqaga ko'chiradi.
Daraxtdan tashqari modullar yozuvda o'z satriga loyiq, chunki taint qilingan yadro xizmatchining qanday xulosa chiqarishi mumkinligini cheklaydi. taint qiymatini modullar ro'yxatidan taxmin qilish o'rniga o'qing.
Nolga teng bo'lmagan taint ayblov emas va hisobotni foydasiz qilmaydi. U o'quvchiga xato sodir bo'lganda qaysi komponentlar yuklanganini aytadi, va ba'zi bayroqlar hisobotning ustuvorligini hukm bilan emas, siyosat bilan pasaytiradi. Qiymatni, modul nomlarini va o'sha apparat hamda ish yuklamasi ularsiz yadro ishga tushirganmi-yo'qmi yozib qo'ying. Aynan shu oxirgi taqqoslash yangi regressiyani eski xatodan ajratadi.
Triggerdi nuqsondan ajrating
Tunnelni ishga tushirish odatda allaqachon mavjud bo'lgan yo'lni ishlatadi: tarmoq drayveri, navbat tartibi, offload xususiyati yoki quvvat holati. Trigger xato qachon paydo bo'lishini tushuntiradi, qaysi kod noto'g'ri ekanini emas, va triggerni sabab deb hisoblash hech narsani tuzatmaydigan konfiguratsiya o'zgarishlari qatoriga olib keladi.
Ishlagan oldingi obraz dalil, isbot emas. Taqqoslashda har yuklanishda bitta komponentni o'zgartiring, natijalarni mashinadan keyin ham qoladigan joyda saqlang.
Xizmatchi haqiqatan nimani ishlata olishini tekshiring
Yuborishdan oldin hisobotni begona odam o'qigandek o'qing. Agar konfiguratsiya, aniq ketma-ketlik va build identifikatori mavjud bo'lsa, va hisob ma'lumotlari olib tashlangan bo'lsa, hisobot foydali. Agar u stek izining ekran surati bo'lsa, o'sha ma'lumotni so'rab qaytadi. Yadro xatolarini izlash qo'llanmasi foydali iz va mos belgilar qanday ko'rinishini tushuntiradi.
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:'
Yuqoridagi har bir buyruq faqat holatni o'qiydi, va mashina hali javob bera olsa, birinchi ikkitasini keyingi qayta yuklashdan oldin ishga tushirish kerak. Jurnal doimiy bo'lmagan joyda faqat o'sha ikkitasi qayta ishlaydi.
Kalitlar, parollar va aloqasiz trafikni olib tashlang, lekin izni o'qish uchun kimgadir kerak bo'lgan funksiya nomlari va ofsetlarni saqlang. Materialni distributiv yoki yadroga tegishli hisobot yo'li orqali yuboring, xost nomi ilova qilingan ommaviy joylashtirish orqali emas. Keyin yana halokatlar yig'ish o'rniga savolni kuting, chunki mos buildga qarshi joylashgan xato hisobotni oldinga suradigan yagona natijadir. Agar hech narsa qaytmasa, zaxira variant — zaxira apparatda boshqariladigan takrorlash, hech qachon boshqalar tayanadigan mashinada emas.