VPN müştərisini işə salmaq səbəb deyil, rahat bir zaman möhürüdür və bu fərq sonra nəyin baş verəcəyini müəyyən edir. Kernel Oops həmin ana yaxın düşəndə seçim istifadəyə yararlı xəta hesabatı toplamaqla eyni çökməni istehsal maşınında daha beş dəfə törətmək arasındadır. Yenidən yükləməzdən əvvəl dörd şeyi qeyd edin: dəqiq kernel quruluşunu, ilk xəta izini, taint vəziyyətini və həmin dəqiqədə dəyişən hər şeyin qısa təsvirini. Qalanı şərhdir və şərh sübutlar təhlükəsiz yerdə olana qədər gözləyə bilər.

İlk xətanı tutun, sonuncu sətri deyil

Jurnaldakı ilk Oops vacibdir, çünki hər sonrakı xəta artıq sağlam olmayan kerneldən yan təsir ola bilər. Başlığı çağırış izi ilə birlikdə kopyalayın, çünki başlıq xətanı törədən təlimatı və kod yolunu müəyyən edən registr vəziyyətini daşıyır. Sonuncu sətirdən başlayan hesabat bir həftə sonra onu oxuyan üçün çox az dəyər daşıyır.

Maşın artıq yenidən yüklənibsə, əvvəlki yükləmənin kernel buferi çox vaxt jurnalda qalır, bir şərtlə ki o vaxt davamlı yaddaş aktiv olsun. İş yükünü yenidən yaratmaq əvəzinə onu saxlanmış fayldan oxuyun, çünki ikinci təkrar sizə lazım olanı üzərinə yaza bilər. Qutu yenidən yükləmələr arasında jurnal saxlaya bilmirsə, xətanın görünməsinin yeganə yolu seriyalı konsol və ya netconsole-dur.

Hər hansı simvolu oxumazdan əvvəl quruluşu müəyyənləşdirin

Funksiya adları və ofsetlər yalnız onları istehsal edən binar fayla görə məna daşıyır, ona görə kernel buraxılış sətrini və distributiv quruluş identifikatorunu birlikdə qeyd edin. Fərqli quruluşdan olan simvol faylı tam əminliklə səhv sətri göstərir, bu isə ümumiyyətlə simvolun olmamasından daha pisdir. Yalnız upstream nömrəni deyil, kernel paketinin versiyasını saxlayın, çünki distributivlər çoxlu backport edir.

Ağacdan kənar modullar qeyddə öz sətrinə layiqdir, çünki taint olunmuş kernel bakıcının nəyə gələ biləcəyini məhdudlaşdırır. Taint dəyərini modul siyahısından çıxarmaq əvəzinə birbaşa oxuyun.

Sıfırdan fərqli taint ittiham deyil və hesabatı dəyərsiz etmir. O, oxucuya xəta baş verəndə hansı komponentlərin yükləndiyini bildirir və bəzi bayraqlar hesabatın mühakimə ilə deyil, siyasətlə aşağı prioritetə düşməsinə səbəb olur. Dəyəri, modul adlarını və eyni aparat və iş yükünün onlarsız kernel işlədib-işlətmədiyini qeyd edin. Məhz bu son müqayisə yeni bir regressiyanı uzunmüddətli səhvdən ayırır.

Tətikləyicini qüsurdan ayırın

Tuneli başlatmaq adətən artıq mövcud olan yolu işə salır: şəbəkə sürücüsü, növbə intizamı, offload xüsusiyyəti və ya enerji vəziyyəti. Tətikləyici xətanın nə vaxt göründüyünü izah edir, hansı kodun səhv olduğunu deyil və tətikləyicini səbəb kimi qəbul etmək heç nəyi düzəltməyən bir sıra konfiqurasiya dəyişikliklərinə gətirib çıxarır.

İşləyən əvvəlki obraz sübutdur, isbat deyil. Müqayisə edərkən hər yükləmədə bir komponenti dəyişin və nəticələri maşından sonra da qalan bir yerdə saxlayın.

Bakıcının həqiqətən nə istifadə edə biləcəyini yoxlayın

Hesabatı göndərməzdən əvvəl onu yad birinin oxuyacağı kimi oxuyun. Konfiqurasiya, dəqiq ardıcıllıq və quruluş kimliyi varsa və etimad məlumatları silinibsə, hesabat yararlıdır. Əgər o, stek izinin ekran şəklidirsə, eyni məlumat üçün sorğu ilə geri qayıdacaq. Kernel səhvlərinin axtarışı üzrə təlimat faydalı izin və uyğun simvolların necə göründüyünü izah edir.

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:'

Yuxarıdakı hər əmr yalnız vəziyyəti oxuyur və maşın hələ cavab verə bilirsə, ilk ikisi növbəti yenidən yükləmədən əvvəl işlədilməlidir. Jurnal davamlı olmayan yerdə yalnız o ikisi heç vaxt bir daha işləyəcək.

Açarları, parolları və əlaqəsiz trafiki çıxarın, amma izi oxumaq üçün kiməsə lazım olan funksiya adlarını və ofsetləri saxlayın. Materialı distributivə və ya kernelə aid olan hesabat yolu ilə göndərin, host adı əlavə edilmiş açıq yapışdırma ilə deyil. Sonra daha çox çökmə yığmaq əvəzinə sual gözləyin, çünki uyğun quruluşa qarşı lokallaşdırılmış xəta hesabatı irəli aparan yeganə nəticədir. Heç nə qayıtmazsa, ehtiyat variant başqa insanların asılı olduğu maşında deyil, ehtiyat aparatda nəzarətli təkrar istehsaldır.

Əlaqəli məqalələr