وحدة النواة:كيفية الحصول على إخراج وحدة التحكم؟

StackOverflow https://stackoverflow.com/questions/9394955

  •  29-10-2019
  •  | 
  •  

سؤال

أنا أكتب وحدة kernel، وأريد أن أكون قادرًا على طباعة شيء ما على مخرجات وحدة التحكم عند تحميلها باستخدامها insmod module.ko.

حاولت استخدام

printk(KERN_EMERG "test kernel emergency\n");

ولكن لا يظهر شيء على وحدة التحكم الخاصة بي.ومع ذلك فإنه يظهر في dmesg.

معلومات اضافية:
أنا أستخدم Intel x86 32 بت مع Linux-3.0.0

و cat /proc/sys/kernel/printk يعطي4 4 1 7

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

المحلول

1- تأكد من أنك في الوضع الطرفي الكامل (اضغط Alt+Ctrl+f1)

2- بدلا من printk(KERN_EMERG "test kernel emergency\n");يحاول

printk(KERN_ALERT "test kernel alert\n");

نصائح أخرى

جينس ،

يتم إرسال مخرجات printk إلى kernel وتجميعها بواسطة البرنامج الخفي syslogd. dmesg يردد البيانات التي تم جمعها بواسطة البرنامج الخفي syslogd.

قد لا تتم طباعة هذه الرسالة بواسطة وحدة التحكم الخاصة بك (من حيث اتصلت بـ insmod) إذا كنت تستخدم إصدارًا رسوميًا من نظام التشغيل Linux.لقد جربت هذا في ubuntu ولا يقوم بطباعة رسائل printk حتى إذا كان مستوى السجل هو ALERT أو EMERGENCY.

تحتاج إلى تعديل سجل النظام لطباعة رسائل kernel للطوارئ لوحدة التحكم (أو مستخدمين معينين أو ttys).

هناك العديد من عفاريت مدونة النظام ، إذا كنت لا تتحكم في ما تستخدمه ولم تكن جذرًا ، فلن يحالفك الحظ.إذا كنت تتحكم في الشخص الذي تستخدمه ، فإن syslog-ng جيد جدًا ولديه أمثلة على كيفية القيام بذلك في دليله.

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