
مدير نواة لينكس ومراقب النشاط 🐧💻
النواة هي جزء من نظام التشغيل تسهل التفاعلات بين مكونات العَتاد و_البرمجيات_. في معظم الأنظمة، يتم تحميلها عند بدء التشغيل بعد مُحمل الإقلاع وتعالج طلبات الإدخال/الإخراج بالإضافة إلى الأجهزة الطرفية مثل لوحات المفاتيح والشاشات ومحولات الشبكة ومكبرات الصوت. عادةً، تكون النواة مسؤولة عن إدارة الذاكرة، إدارة العمليات، إدارة الأجهزة، استدعاءات النظام، والأمان.
تستخدم التطبيقات آلية استدعاء النظام لطلب خدمة من نظام التشغيل، وفي أغلب الأحيان، يُمرر هذا الطلب إلى النواة باستخدام مكتبة يقدمها نظام التشغيل لاستدعاء وظيفة النواة ذات الصلة. بينما تقوم النواة بهذه المهام منخفضة المستوى، فهي تقيم في جزء منفصل من الذاكرة يُسمى مساحة النواة المحمية، ولا يمكن للتطبيقات والأجزاء الأخرى من النظام الوصول إليها. في المقابل، تستخدم التطبيقات مثل المتصفحات ومحررات النصوص ومديري النوافذ أو مشغلات الصوت/الفيديو منطقة منفصلة مختلفة من الذاكرة، وهي مساحة المستخدم. هذا الفصل يمنع تداخل بيانات المستخدم وبيانات النواة مع بعضها البعض مما يسبب عدم الاستقرار والبطء، كما يمنع البرامج التطبيقية المعطلة من تعطيل نظام التشغيل بأكمله.
توجد تصاميم مختلفة للنواة بسبب الطرق المختلفة لإدارة استدعاءات النظام والموارد. على سبيل المثال، بينما تقوم النوى المتجانسة بتشغيل جميع تعليمات نظام التشغيل في نفس مساحة العنوان للسرعة، تستخدم النوى الدقيقة مساحات مختلفة لخدمات المستخدم والنواة للنمطية. بالإضافة إلى ذلك، هناك النوى الهجينة، النوى النانوية، والنوى الخارجية. تعتمد بنية النواة الهجينة على الجمع بين جوانب النوى الدقيقة والمتجانسة.
نواة لينكس هي النواة مفتوحة المصدر والمتجانسة والشبيهة بيونكس المستخدمة في توزيعات لينكس، والعديد من الأنظمة المدمجة مثل أجهزة التوجيه، وكذلك في جميع الأنظمة القائمة على أندرويد. لينوس تورفالدس هو من ابتكر وأنشأ نواة لينكس في عام 1991، وما زالت قيد التطوير من قبل آلاف المطورين حتى اليوم. إنها مثال بارز على البرمجيات الحرة ومفتوحة المصدر وتستخدم في مشاريع برمجية حرة أخرى، ولا سيما نظام تشغيل جي.إن.يو. على الرغم من أن أنظمة التشغيل القائمة على لينكس تهيمن على معظم أجهزة الحوسبة، إلا أنها لا تزال تحمل بعض عيوب التصميم التي كانت موضع جدل كبير في الأيام الأولى للينكس. على سبيل المثال، تحتوي على أكبر حجم وأعلى تعقيد مقارنة بالأنواع الأخرى من النوى. لكنها سمة تصميمية متأصلة في النوى المتجانسة. أدت هذه الأنواع من المشكلات التصميمية إلى قيام المطورين بإضافة ميزات وآليات جديدة إلى نواة لينكس لا تمتلكها النوى الأخرى.
على عكس النوى المتجانسة القياسية، فإن نواة لينكس هي أيضًا نمطية، حيث تقبل وحدات النواة القابلة للتحميل (LKM) والتي تُستخدم عادةً لإضافة دعم لعَتاد جديد (كوحدات تشغيل أجهزة) و/أو أنظمة ملفات، أو لإضافة استدعاءات نظام. نظرًا لأنه يمكن تحميل وحدات LKM وإلغاء تحميلها إلى النظام أثناء التشغيل، فإن لها ميزة تمديد النواة دون الحاجة لإعادة التشغيل وإعادة الترجمة. وبالتالي، فإن وظائف النواة التي توفرها الوحدات لا تبقى في الذاكرة دون استخدام، ويمكن إلغاء تحميل الوحدة ذات الصلة لتحرير الذاكرة والموارد الأخرى.
توجد وحدات النواة القابلة للتحميل في /lib/modules بامتداد .ko (كائن النواة) في لينكس. بينما يمكن استخدام الأمر lsmod لسرد وحدات النواة المحملة، يُستخدم modprobe أو insmod/rmmod لتحميل أو إلغاء تحميل وحدة نواة. تُستخدم insmod/rmmod للوحدات المستقلة عن modprobe ودون الحاجة إلى تثبيتها في /lib/modules/$(uname -r).
فيما يلي مثال بسيط لوحدة نواة لينكس تطبع رسالة عند تحميلها وإلغاء تحميلها. خطوات البناء والتثبيت للـوحدة باستخدام ملف Makefile موضحة أدناه.``` make # build sudo make install # install sudo modprobe lkm_example # load sudo modprobe -r lkm_example # unload
يستخدم الأمر [dmesg](https://linux.die.net/man/8/dmesg) أدناه لاسترجاع مخزن رسائل النواة.```
[16994.295552] [+] Example kernel module loaded.
[16996.325674] [-] Example kernel module unloaded.
kmon يُوفّر واجهة مستخدم نصية لإدارة وحدات نواة لينكس ومراقبة أنشطة النواة. من خلال الإدارة، يُقصد التحميل، الإلغاء، الإدراج في القائمة السوداء وعرض معلومات الوحدة. يمكن تتبّع التغييرات في وحدات النواة، سجلات الأجهزة ورسائل النواة الأخرى باستخدام مراقب الأنشطة الفوري في kmon. نظرًا لأن استخدام أدوات مختلفة مثل dmesg و kmod مطلوب لهذه المهام في لينكس، يهدف kmon إلى جمعها في نافذة طرفية واحدة وتسهيل الاستخدام قدر الإمكان مع الحفاظ على الوظائف.
kmon مكتوب بلغة Rust ويستخدم مكتبات Ratatui و termion لواجهته النصية.