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-ке қарсы локалданған ақаулық есепті алға жылжытатын жалғыз нәтиже. Егер ештеңе қайтпаса, қосалқы нұсқа — қосалқы аппараттық құралда бақыланатын қайталау, ешқашан басқалар тәуелді машинада емес.

Қатысты мақалалар