تعطُّل عميل VPN على Pi؟ التقط العملية أولًا
تطبع الصدفة Segmentation fault وتُعاد كتابة البطاقة. سجّل الملف التنفيذي والإصدار وسجل الانهيار قبل أن تستبدل أي عتاد.
تشغّل العميل، فتطبع الطرفية Segmentation fault (core dumped)، وتذهب الساعة التالية في إعادة كتابة البطاقة. تلك الرسالة تصف كيف ماتت عملية واحدة في لحظة واحدة. وهي لا تقول إن اللوحة تالفة، ولا تنفي كذلك مشكلة في مزود الطاقة أو التخزين أو الصورة.
ابدأ من السطر الذي طبعته الصدفة وارجع إلى العملية التي تقف خلفه. الحقائق المفيدة هي أي ملف تنفيذي فشل، وفي أي بيئة، وفي أي مرحلة من الاتصال.
ابدأ من السطر الذي طبعته الصدفة
الاسم في أمرك غالبًا ما يكون غلافًا أو مشغّلًا يبدأ ملفًا ثنائيًا مختلفًا، لذا تأكد من الملف التنفيذي الذي أنهاه النواة فعليًا. اكتب المسار الكامل، وإصدار الحزمة والتطبيق، والمعمارية، وإصدار نظام التشغيل والنواة، والحساب الذي شغّله، والوقت الدقيق. من السهل أن يبدأ أمر صدفة يحمل اسم VPN عملية مساعدة، وسيذكر السجل العملية المساعدة. نسخ سلسلة الإصدار من حزمة ثبّتها الشهر الماضي لا يخبرك بشيء عما جرى تشغيله.
دوّن ما سبق الانهيار مباشرة: بدء التشغيل، أو تحليل الملف الشخصي، أو المصادقة، أو جلسة كانت تمرّر حركة المرور بالفعل. تلك المراحل الأربع تضيّق البحث أكثر بكثير من كلمة segfault. احتفظ بنافذة السجل القصيرة حول ذلك الحدث، واترك التخمينات حول أي تغيير حديث تسبب فيه حتى يقول السجل ذلك.
اعرف ما إذا كانت صورة الذاكرة موجودة
يصف مرجع ملف core التفريغ بأنه صورة لذاكرة العملية تُكتب عند الإنهاء، ويسرد أيضًا الشروط التي تمنع حدوث تلك الكتابة. تشمل تلك الشروط حدًا للموارد بقيمة صفر ونمط core يوجّه التفريغ إلى مكان غير دليل العمل. لذلك فإن غياب ملف باسم core لا يثبت شيئًا عن وقوع انهيار. تحقق من النمط المضبوط والحد قبل أن تستنتج أن النظام لم ينتج أي دليل.
على نظام يستخدم جامع systemd، تربط طريقة العرض المدعومة بين سجل مخزّن وملف تنفيذي ووقت. إن مدخل سجل اليوميات وصورة ذاكرة قابلة للقراءة أثران مختلفان: سياسة الاحتفاظ والأذونات قد تتركك مع أحدهما دون الآخر. اسأل التوزيعة أو مشرف التطبيق عن سير العمل التشخيصي الذي يدعمونه، لأن أثرًا منتجًا من بناء مختلف أو من مجموعة مكتبات مختلفة يهدر وقتهم عادةً.
sysctl kernel.core_pattern
ulimit -c
coredumpctl list --since "1 hour ago" --no-pager
coredumpctl info /usr/sbin/openvpn
أعد تلك القراءات على الجهاز الذي انهار فعليًا. تنفيذها على تثبيت جديد يجيب عن سؤال لم يسأله أحد.
تعامل مع التفريغ كمادة تحمل أسرارًا
قد تحتوي ذاكرة العملية على بيانات اعتماد ومفاتيح جلسات ومحتويات ملفات شخصية، ما يجعل التفريغ أكثر حساسية من السجل النصي المجاور. حجب السجل لا يفعل شيئًا لصورة ذاكرة غير قابلة للتفسير، ومتتبعات المشكلات العادية تحتفظ بالمرفقات أطول بكثير مما تدوم محادثة الدعم. انقل الملف عبر القناة الخاصة التي يوفرها البائع أو المشرف. نشر تفريغ خام في مشكلة عامة يكشف كل ما كان مقيمًا عند موت العملية، ولا يمكنك معرفة ذلك حتى يفحصه أحد.
إذا طلب مشرف أثرًا، فاسأل من أي ملف تنفيذي وأي مكتبات يريدونه. الأثر الذي لا تطابق إطاره البناء المُبلَّغ عنه يصعب الوثوق به ويسهل قراءته خطأ.
تحقق من المصدر قبل أن تستبدل أي شيء
تحقق من مصدر الحزمة وسلامة الملف لدى من يملك التثبيت، واحفظ الإعدادات ومواد الهوية قبل أي إصلاح مضبوط. لا تستبدل النسخة الوحيدة من الدليل لمجرد معرفة ما إذا كان تثبيت نظيف يبدأ. صورة جديدة تُقلع تخبرك أن الصورة الجديدة تُقلع. ولا تخبرك ما إذا كانت القديمة تحتوي حزمة تالفة أو بطاقة معطلة أو ملفًا ثنائيًا كان سيفشل دائمًا على هذه المعمارية.
إذا فشلت أيضًا برامج غير ذات صلة، أو سجّل النظام أخطاء في التخزين أو الطاقة أو النواة، فاحتفظ بتلك الملاحظات لتحقيق المنصة. فهي توسّع النطاق، لكنها لا تثبت أن كل segfault يأتي من ذاكرة RAM معطلة أو صورة تالفة.
بعد إصلاح موجّه، أعد نفس التشغيل المصرح به ونفس عملية VPN على نفس العتاد. بيّن أي فشل توقف وفي أي إصدار. الإقلاع النظيف وحده لا يحدد مكوّنًا معطوبًا ولا يتنبأ بعطل العتاد التالي.