VPN иштөөсүндөгү kernel Oops: сактоого татыктуу далилдер
VPN ишке киргендеги бузулуу тиешелүү kernel-build жана биринчи изди талап кылат, акыркы саптын скриншоту эмес. Кайра жүктөө алдында эмнени сактоону чечиңиз.
VPN кардарын ишке киргизүү — ыңгайлуу убакыт белгиси, себеп эмес, жана ушул айырма кийин эмне болорун аныктайт. Ошол учурда kernel Oops болгондо, тандоо пайдалуу каталык отчётун жыйноо менен ошол эле бузулууну өндүрүштүк машинада дагы беш жолу жаратуунун ортосунда. Кайра жүктөө алдында төрт нерсени сактаңыз: kernelдин так buildин, каталыктын биринчи изин, taint абалын жана ошол эле мүнөттө өзгөргөн калган бардык нерсенин кыскача сүрөттөмөсүн. Калганы чечмелөө, ал эми чечмелөө далилдер коопсуз жерде болгонго чейин күтө алады.
Акыркы сапты эмес, биринчи каталыкты кармаңыз
Журналдагы биринчи Oops маанилүү, анткени ар бир кийинки каталык мурунтан эле ден соолугу начар kernelдин кошумча зыяны болушу мүмкүн. Чалуу изи менен бирге аталышын көчүрүңүз, анткени аталыш каталык кылган буйрукту жана код жолун аныктаган регистр абалын камтыйт. Акыркы саптан башталган отчёт бир жумадан кийин аны окуган адам үчүн абдан аз баалуу.
Эгер машина мурунтан эле кайра жүктөлгөн болсо, мурунку жүктөөнүн kernel буфери көбүнчө журналда калат, эгер ошол учурда туруктуу сактоо күйгүзүлгөн болсо. Жумуш жүгүн кайра түзүүнүн ордуна аны сакталган файлдан окуңуз, анткени экинчи кайталоо керектүү нерсени басып жазышы мүмкүн. Машина кайра жүктөөлөрдүн ортосунда журнал кармай албаган жерде, сериялык консоль же netconsole каталыктын көрүнүшүнүн жалгыз жолу.
Кандайдыр бир символду окуудан мурун buildди бекемдеңиз
Функция аттары менен офсеттер аларды жараткан бинардык файлга гана карата мааниге ээ, ошондуктан kernelдин чыгарылыш сабын жана дистрибутивдин build идентификаторун бирге жазыңыз. Башка buildдин символ файлы толук ишеним менен туура эмес сапты көрсөтөт, бул такыр символ болбогондон да жаман. Upstream номерин гана эмес, kernel пакетинин версиясын сактаңыз, анткени дистрибутивдер көп нерсени артка которушат.
Дарактын сыртындагы модулдар жазууда өз сабына татыктуу, анткени taint кылынган kernel тейлөөчүнүн кандай корутундуга келе аларын чектейт. taint маанисин модулдар тизмесинен божомолдоонун ордуна окуңуз.
Нөлгө барабар эмес taint айып эмес жана отчётту пайдасыз кылбайт. Ал окуучуга каталык учурунда кайсы компоненттер жүктөлгөнүн айтат, ал эми айрым желектер отчёттун артыкчылыгын пайымдоо менен эмес, саясат менен төмөндөтөт. Маанини, модулдардын аттарын жана ошол эле аппараттык камсыздоо менен жүк аларсыз kernel иштеткенин жазыңыз. Ушул акыркы салыштыруу жаңы регрессияны эски катадан ажыратат.
Триггерди кемчиликтен бөлүңүз
Туннелди ишке киргизүү адатта мурунтан бар жолду колдонот: тармак драйвери, кезек тартиби, offload өзгөчөлүгү же энергия абалы. Триггер каталык качан пайда болорун түшүндүрөт, кайсы код туура эмес экенин эмес, жана триггерди себеп деп эсептөө эч нерсени оңдобогон конфигурация өзгөртүүлөрүнүн тизмегине алып келет.
Иштеген мурунку образ далил, бирок далилдөө эмес. Салыштырганда ар бир жүктөөдө бир компонентти өзгөртүңүз, ал эми жыйынтыктарды машинадан узак жашай турган жерде сактаңыз.
Тейлөөчү чындыгында эмнени колдоно аларын текшериңиз
Жөнөтүүдөн мурун отчётту бөтөн адам окугандай окуңуз. Конфигурация, так тартип жана build идентификатору бар болсо, ал эми эсептик маалыматтар өчүрүлгөн болсо, отчёт жарактуу. Эгер бул стек изинин скриншоту болсо, ал ошол эле маалыматты сурап кайтат. Kernel каталарын издөө боюнча колдонмо пайдалуу из менен дал келген символдор кандай болорун сүрөттөйт.
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:'
Жогорудагы ар бир буйрук гана абалды окуйт, ал эми алгачкы экөөнү кийинки кайра жүктөөдөн мурун иштетүү керек, эгер машина аларга дагы жооп бере алса. Журнал туруктуу эмес жерде дал ошол экөө гана кайра иштейт.
Ачкычтарды, сырсөздөрдү жана байланышсыз трафикти алып салыңыз, бирок изди окуу үчүн бирөөгө керектүү функция аттарын жана офсеттерди сактаңыз. Материалды дистрибутивге же kernelге тиешелүү отчёт жолу аркылуу жөнөтүңүз, хост аты тиркелген коомдук чаптоо аркылуу эмес. Андан кийин дагы бузулууларды жыйноонун ордуна суроону күтүңүз, анткени дал келген buildге каршы локалдаштырылган каталык отчётту алдыга жылдырган жалгыз жыйынтык. Эгер эч нерсе кайтпаса, камдык вариант — камдык аппараттык камсыздоодо көзөмөлдөнгөн кайталоо, эч качан башкалар көз каранды болгон машинада эмес.