سؤال

أقوم بتطوير نظام مضمن يعمل حاليًا على تشغيل Linux مع إخراج وحدة التحكم على المنفذ التسلسلي 1 (باستخدام معلمة تمهيد وحدة التحكم من أداة تحميل التمهيد).ومع ذلك، في نهاية المطاف سوف نستخدم هذا المنفذ التسلسلي.ما هو الحل الأفضل لإخراج وحدة تحكم kernel؟/ديف/خالية؟هل يمكن وضعه على pty بطريقة ما حتى نتمكن من الوصول إليه؟

هل كانت مفيدة؟

المحلول

إذا كنت تريد فقط قراءة رسائل kernel printk من وحدة التحكم، وعدم تشغيل getty أو shell عليها فعليًا، فيمكنك استخدام netconsole.يمكنك توفير ما يلي لخيارات kernel الخاصة بأداة تحميل التشغيل (أو إلى modprobe netconsole):

netconsole=4444@10.0.0.1/eth1,9353@10.0.0.2/12:34:56:78:9a:bc

حيث 4444 هو المنفذ المحلي، 10.0.0.1 هو عنوان IP المحلي، eth1 هي الواجهة المحلية لإرسال الرسائل منها.9353 هو المنفذ البعيد، 10.0.0.2 هو عنوان IP البعيد لإرسال الرسائل إليه، والوسيطة النهائية هي جهاز التحكم عن بعد (على سبيل المثال:سطح المكتب الخاص بك) عنوان mac الخاص بالنظام.

ثم لعرض تشغيل الرسائل:

netcat -u -l -p 9353

يمكنك قراءة المزيد عن هذا في الوثائق/الشبكات/netconsole.txt

نصائح أخرى

يمكنك الوصول إلى المخزن المؤقت لرسائل printk من الصدفة باستخدام dmesg.المخزن المؤقت لـ kernel ذو حجم محدود وسيستبدل أقدم الإدخالات بأحدث الإدخالات، لذلك ستحتاج إما إلى التحقق من dmesg بشكل دوري أو ربط netconsole كما يقترحbmdhacks.

إذا لم تكن هناك وحدة تحكم، فسوف تفوت أي معلومات عفوًا مطبوعة بسبب تعطل kernel.حتى استخدام netconsole قد لا يساعد في هذا الأمر، إذا ماتت النواة وبدأت في إعادة التشغيل قبل أن يتمكن TCP من توصيل الإخراج إلى المقبس البعيد.نقوم عمومًا بتعديل kernel/panic.c:panic() لحفظ محتويات التسجيل والحالة الأخرى في منطقة NOR flash، لذلك ستكون هناك على الأقل بعض المعلومات المتاحة لتصحيح الأخطاء بعد الوفاة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top