بناء نواة لينكس للوحة معينة. تكوين وتجميع Linux Kernel

02.04.2019

تعد إعادة بناء نواة Linux عملاً مثيرًا للاهتمام وغالبًا ما يخيف المبتدئين لسبب ما. ولكن لا يوجد شيء معقد في هذا الأمر، وتجميع نواة Linux ليس أكثر صعوبة من بناء (تجميع) أي برنامج آخر من المصدر. قد تكون إعادة بناء النواة ضرورية عندما تحتاج إلى بعض الميزات غير المضمنة في النواة الحالية، أو على العكس من ذلك، عندما تريد تعطيل شيء ما. سنقوم بتنفيذ جميع الإجراءات الإضافية في أوبونتو لينكس.

تثبيت المرافق

لتكوين نواة Linux وإنشائها، ستحتاج إلى تثبيت العديد من الحزم التي ستكون ضرورية لبناء وتكوين النواة: kernel-package، build-essential، libncurses-dev. يمكنك القيام بذلك باستخدام الأمر:

sudo apt-get install build-essential kernel-package libncurses-dev

قم بتنزيل كود مصدر النواة

أنت الآن بحاجة إلى تنزيل كود مصدر kernel. سنقوم بتنزيل النواة لأوبونتو. يمكنك تحميل نسخة معينةالنواة، على سبيل المثال، تلك التي أنت فيها هذه اللحظةاستخدم أو قم بتنزيل أحدث إصدار. لتحديد إصدار Linux kernel الذي تستخدمه، قم بتشغيل الأمر uname باستخدام الخيار -r:

اسم -r

سيكون إخراج الأمر شيئًا مثل هذا:

$uname -r 2.6.27-11-generic

عادةً ما يكون اسم الحزمة التي تحتوي على مصادر kernel العرض التالي: نسخة مصدر لينكس. على سبيل المثال، بالنسبة لإصدار النواة 2.6.24: linux-source-2.6.24. أكثر احدث اصدارالنواة في مستودعات أوبونتويطلق عليه ببساطة مصدر Linux، دون تحديد الإصدار في النهاية. لتثبيت أحدث مصادر Ubuntu Linux kernel، قم بتشغيل الأمر:

sudo apt-get install linux-source

يقوم هذا الأمر بتنزيل مصادر النواة ووضعها في الدليل /usr/src. وفي وقت كتابة هذا المقال، كان الإصدار الأخير من النواة الذي تم تنزيله هو 2.6.27، وهو ما سنستخدمه. إذا انتقلنا الآن إلى الدليل /usr/src وقمنا بتنفيذ الأمر ls، فسنرى أنه من بين الملفات يوجد ملف linux-source-2.6.27.tar.bz2. هذه هي أكواد مصدر Linux kernel (Ubuntu kernel).

تفريغ الكود المصدري للنواة

دعنا نذهب إلى الدليل /usr/src ونقوم بفك ضغط النواة. للقيام بذلك، قم بتشغيل الأوامر التالية:

Cd /usr/src sudo tar xjf linux-source-2.6.27.tar.bz2 sudo ln -s linux-source-2.6.27 linux

تكوين النواة

الآن دعنا ننتقل إلى تكوين النواة. لكي لا نقوم بإنشاء تكوين من الصفر، سنتخذ كأساس تكوين النواة المستخدم حاليًا. يمكنك الحصول على التكوين الحالي عن طريق تشغيل الأمر make oldconfig. تشغيل في المحطة:

Cd /usr/src/linux Sudo يصنع oldconfig

سيؤدي تشغيل make oldconfig إلى إنشاء ملف .config يحتوي على خيارات تكوين kernel.

يمكنك الحصول على مساعدة بشأن كافة خيارات الإنشاء الخاصة بنواة Linux عن طريق تشغيل أمر make help.

لتغيير تكوين النواة، سوف نستخدم الأداة المساعدة لوحدة التحكم Menuconfig. لتشغيله، قم بتشغيل:

سودو يصنع القائمة

سترى واجهة يمكنك من خلالها تمكين أو تعطيل بعض خيارات kernel:

على سبيل المثال، سأقوم بتفعيل خيار "دعم كتابة NTFS". للقيام بذلك، بالضغط على الزر السفلي، ابحث عن العنصر "أنظمة الملفات" واضغط على Enter.

ستجد نفسك في قائمة إعدادات نظام الملفات. ابحث عن العنصر "أنظمة ملفات DOS/FAT/NT" في هذه القائمة واضغط على Enter.

انتقل إلى عنصر "دعم كتابة NTFS" واضغط على مسافة، ستظهر علامة النجمة بجوار العنصر، تشير إلى أنه سيتم تضمين هذا الخيار في النواة.

الآن حدد "خروج" (عن طريق الضغط على الزر الأيمن ثم أدخل) والخروج من الأداة المساعدة. قبل الخروج من الأداة المساعدة، ستظهر رسالة تطلب منك حفظ التغييرات التي تم إجراؤها، حدد نعم.

تجميع النواة

لقد حان الوقت لتجميع النواة بالتغييرات التي أجريناها في الخطوة السابقة. أولاً، لنقم بتشغيل أمر يحذف الملفات (إن وجدت) المتبقية من التجميع السابق:

Sudo make-kpkg نظيف

وأخيرًا، لبدء تجميع النواة، قم بتشغيل الأمر:

Sudo make-kpkg --initrd --append-to-version=-mykernel kernel_image kernel_headers

يتم استخدام رمز التبديل -append-to-version لإضافة السلسلة -mykernel إلى اسم ملف صورة النواة الذي سنحصل عليه بعد التجميع، بحيث يكون من الأسهل التعرف على النواة الخاصة بنا. بدلاً من -mykernel، يمكنك استخدام أي بادئة.

يستغرق تجميع النواة الكثير من الوقت ويمكن أن يستمر من عدة عشرات من الدقائق إلى عدة ساعات، اعتمادًا على قوة جهاز الكمبيوتر الخاص بك.

تركيب النواة

بعد تجميع النواة، تلقيت ملفي إخراج: linux-image-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00.Custom_i386.deb, linux-headers-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00 Custom_i386.deb. سنستخدم الأمر dpkg -i، الذي سيقوم بتثبيت النواة تلقائيًا وكتابتها إلى أداة تحميل التمهيد GRUB (في الملف  /boot/grub/menu.lst). ألاحظ أنه سيتم تثبيت النواة كنواة افتراضية، لذلك إذا لم يتم التمهيد لك، فستحتاج إلى التمهيد باستخدام النواة السابقة (يجب أن تكون في قائمة قائمة GRUB عند تشغيل الكمبيوتر) وتغيير الإعداد يدويًا ملف Menu.lst. لذلك، لتثبيت النواة، قم بتشغيل الأوامر:

Dpkg -i linux-image-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00.Custom_i386.deb dpkg -i linux-headers-2.6.27.18-mykernel_2.6.27.18-mykernel-10.00.Custom_i386.deb

بدء تشغيل النظام بنواة جديدة

دعونا نتحقق من وظائف النظام بالنواة الجديدة. قم بإعادة تشغيل جهاز الحاسوب الخاص بك. في قائمة أداة تحميل التشغيل GRUB، يجب أن ترى إدخالًا جديدًا يتوافق مع النواة الجديدة لديك، والتي يجب أن يتم تشغيلها افتراضيًا. إذا سارت الأمور على ما يرام، فسيبدأ النظام بالنواة الجديدة.

تحتوي نواة Linux على أكثر من 13 مليون سطر من التعليمات البرمجية وهي واحدة من أكبر المشاريع مفتوحة المصدر في العالم. إذن ما هي نواة لينكس وفيم يتم استخدامها؟

النواة هي أدنى مستوى من البرامج التي تتفاعل مع أجهزة الكمبيوتر. وهو مسؤول عن تفاعل جميع التطبيقات التي تعمل في مساحة المستخدم حتى المعدات المادية. كما يسمح للعمليات المعروفة بالخدمات بتلقي المعلومات من بعضها البعض باستخدام نظام IPC.

أنواع وإصدارات النواة

أنت تعرف بالفعل ما هي نواة Linux، ولكن ما هي أنواع النوى الموجودة؟ هناك طرق مختلفة واعتبارات معمارية عند إنشاء النواة من البداية. معظم النوى يمكن أن تكون واحدة من ثلاثة أنواع: نواة متجانسة، نواة صغيرة، وهجينة. نواة لينكس هي نواة متجانسة، في حين نواة ويندوزونظام التشغيل OS X الهجين. دعونا نلقي نظرة عامة على هذه الأنواع الثلاثة من الحبوب.

النواة الدقيقة

تنفذ Microkernels نهجًا تقوم فيه فقط بإدارة ما يفترض أن تقوم به: وحدة المعالجة المركزية والذاكرة وIPC. يتم التعامل مع كل شيء آخر موجود على الكمبيوتر تقريبًا كملحق ويتم التعامل معه في وضع المستخدم. تتمتع النوى الدقيقة بميزة قابلية النقل؛ حيث يمكن استخدامها على أجهزة أخرى، وحتى على نظام تشغيل آخر، طالما أن نظام التشغيل يحاول الوصول إليها المعداتبطريقة متوافقة.

تحتوي النوى الدقيقة أيضًا على حجم صغيروهي أكثر أمانًا لأن معظم العمليات تعمل في وضع المستخدم مع الحد الأدنى من الامتيازات.

الايجابيات

  • قابلية التنقل
  • حجم صغير
  • انخفاض استهلاك الذاكرة
  • أمان

السلبيات

  • يمكن الوصول إلى الأجهزة عبر برامج التشغيل
  • الأجهزة أبطأ لأن برامج التشغيل تعمل في وضع المستخدم
  • يجب أن تنتظر العمليات دورها لتلقي المعلومات
  • لا يمكن للعمليات الوصول إلى العمليات الأخرى دون انتظار

جوهر متجانسة

تعد النواة المتجانسة عكس النواة الدقيقة لأنها لا تغطي المعالج والذاكرة وIPC فحسب، بل تتضمن أيضًا أشياء مثل برامج تشغيل الأجهزة وإدارة نظام الملفات ونظام الإدخال / الإخراج. حبات متجانسة تعطي وصول أفضلإلى الأجهزة وتمكين تعدد المهام بشكل أفضل لأنه إذا كان البرنامج بحاجة إلى الحصول على معلومات من الذاكرة أو من عملية أخرى، فلن يحتاج إلى الانتظار في قائمة الانتظار. ولكن هذا يمكن أن يسبب بعض المشاكل، لأنه يتم تنفيذ العديد من الأشياء في وضع المستخدم المتميز. وهذا يمكن أن يضر النظام إذا تم بشكل غير صحيح.

الايجابيات:

  • مزيد من الوصول المباشر إلى الأجهزة
  • سهولة تبادل البيانات بين العمليات
  • تستجيب العمليات بشكل أسرع

السلبيات:

  • حجم كبير
  • يستهلك الكثير من ذاكرة الوصول العشوائي
  • أقل أمنا

جوهر الهجين

يمكن للنوى الهجينة اختيار ما يجب العمل به في وضع المستخدم وما في مساحة kernel. غالبًا ما تكون برامج تشغيل الأجهزة ونظام الملفات في مساحة المستخدم، بينما تكون IPC واستدعاءات النظام في مساحة kernel. يأخذ هذا الحل أفضل ما في كلا العالمين، ولكنه يتطلب المزيد من العمل من الشركات المصنعة للمعدات الأصلية. لأن المسؤولية الكاملة عن السائقين تقع الآن على عاتقهم.

الايجابيات

  • القدرة على اختيار ما سيعمل في النواة ومساحة المستخدم
  • أصغر في الحجم من النواة المتجانسة
  • أكثر مرونة

السلبيات

  • قد تعمل بشكل أبطأ
  • يتم إصدار برامج تشغيل الأجهزة من قبل الشركات المصنعة

أين يتم تخزين ملفات النواة؟

أين يقع نواة لينكس؟ توجد ملفات kernel الخاصة بـ Ubuntu أو أي توزيعة Linux أخرى في المجلد /boot وتسمى إصدار vmlinuz. يأتي اسم vmlinuz من عصر Unix. في الستينيات، كانت النوى تُسمى عادةً ببساطة Unix، في التسعينيات سنوات لينكسكانت النواة تسمى أيضًا Linux.

عندما تم تطوير الذاكرة الافتراضية لتسهيل تعدد المهام، ظهرت الحروف vm أمام اسم الملف للإشارة إلى أن النواة تدعم هذه التقنية. لبعض الوقت، كان يسمى النواة vmlinux، ولكن بعد ذلك لم تعد الصورة مناسبة للذاكرة bootstrap، وتم ضغطه. بعد ذلك، تم تغيير الحرف الأخير x إلى z للإشارة إلى استخدام ضغط zlib. لا يتم استخدام هذا الضغط دائمًا؛ في بعض الأحيان يمكنك العثور على LZMA أو BZIP2، لذلك تسمى بعض النوى ببساطة zImage.

يتكون رقم الإصدار من ثلاثة أرقام، ورقم إصدار Linux kernel، ورقم الإصدار الخاص بك والتصحيحات أو الإصلاحات.

لا تحتوي الحزمة /boot على نواة Linux فحسب، بل تحتوي أيضًا على ملفات مثل initrd.img وsystem.map. يتم استخدام Initrd كقرص افتراضي صغير يقوم بجلب ملف kernel الفعلي وتنفيذه. يتم استخدام ملف System.map لإدارة الذاكرة عندما لا يتم تحميل النواة بعد، ويمكن لملفات التكوين تحديد وحدات النواة التي سيتم تضمينها في صورة النواة عند بنائها.

بنية نواة لينكس

نظرًا لأن نواة Linux عبارة عن بنية متجانسة، فهي أكبر حجمًا وأكثر تعقيدًا من الأنواع الأخرى من النوى. هذا ميزة التصميمأثارت الكثير من الجدل في الأيام الأولى لنظام Linux وما زالت تعاني من بعض عيوب التصميم المتأصلة في النوى المتجانسة.

ولكن للتغلب على أوجه القصور هذه، قام مطورو Linux kernel بشيء واحد - وحدات kernel التي يمكن تحميلها في وقت التشغيل. هذا يعني أنه يمكنك إضافة وإزالة مكونات النواة بسرعة. يمكن أن يتجاوز كل شيء إضافة وظائف الأجهزة، حيث يمكنك تشغيل عمليات الخادم وتمكين المحاكاة الافتراضية واستبدال النواة بالكامل دون إعادة التشغيل.

تخيل أنك قادر على تثبيت حزمة تحديثات ويندوزدون الحاجة إلى عمليات إعادة التشغيل المستمرة.

وحدات النواة

ماذا إذا ويندوز بالفعلكان لديه كل شيء السائقين الضروريةبشكل افتراضي، ولكن يمكنك فقط تمكين تلك التي تحتاج إليها؟ هذا هو بالضبط المبدأ الذي تطبقه وحدات Linux kernel. تحتوي وحدات Kernel، المعروفة أيضًا باسم الوحدات القابلة للتحميل (LKM)، على مهملدعم عمل النواة مع جميع الأجهزة دون استهلاك كل ذاكرة الوصول العشوائي.

تتوسع الوحدة وظائفالنواة الأساسية للأجهزة وأنظمة الملفات، مكالمات النظام. الوحدات القابلة للتحميل لها امتداد .ko وعادة ما يتم تخزينها في الدليل /lib/modules/. بفضل طبيعتها النمطية، يمكنك تخصيص النواة بسهولة شديدة عن طريق تثبيت الوحدات وتحميلها. يمكن تكوين التحميل أو التفريغ التلقائي للوحدات في ملفات التكوين أو تفريغها وتحميلها بسرعة باستخدام أوامر خاصة.

تتوفر الوحدات النمطية مغلقة المصدر المملوكة لجهات خارجية في بعض التوزيعات مثل Ubuntu، ولكن لا يتم شحنها افتراضيًا ويجب تثبيتها يدويًا. على سبيل المثال، المطورين برامج تشغيل الفيديو نفيديالا توفر كود المصدر، ولكن بدلاً من ذلك قاموا بتجميع الوحدات النمطية الخاصة بهم بتنسيق .ko. على الرغم من أن هذه الوحدات تبدو مجانية، إلا أنها ليست مجانية. ولهذا السبب لا يتم تضمينها في العديد من التوزيعات بشكل افتراضي. يعتقد المطورون أنه ليست هناك حاجة لتلويث النواة بالبرمجيات الاحتكارية.

أنت الآن أقرب إلى الإجابة على السؤال ما هي نواة لينكس. جوهر ليس السحر. إنه ضروري جدًا لتشغيل أي جهاز كمبيوتر. يختلف Linux kernel عن OS X وWindows لأنه يتضمن جميع برامج التشغيل ويقوم بالكثير من الأشياء المدعومة خارج الصندوق. الآن أنت تعرف المزيد عن كيفية برمجةوما هي الملفات المستخدمة لذلك.

التاريخ والتنظيم المعماري

نظرًا لأن الغرض من هذه المقالة هو تعريفك بنواة Linux وإعطائك نظرة عامة على بنيتها ومكوناتها الرئيسية، فلنبدأ بـ لمحة موجزةتاريخ نواة لينكس، ثم نظرة عامة على بنية نواة لينكس، وأخيرًا مناقشة لأنظمتها الفرعية الرئيسية. تحتوي نواة لينكس على أكثر من ستة ملايين سطر، لذا لا يمكن أن تكون هذه المقدمة شاملة. لمزيد من المعلومات التفصيلية، يرجى استخدام الروابط إلى موارد إضافية.

تاريخ موجز لنظام التشغيل Linux

على الرغم من أن Linux يبدو أكثر أنظمة التشغيل مفتوحة المصدر شيوعًا، إلا أن تاريخه في الواقع قصير نسبيًا مقارنة بأنظمة التشغيل الأخرى. في فجر عصر الكمبيوتر، طور المبرمجون برامجهم للأجهزة العارية، باستخدام لغات يمكن للأجهزة فهمها. في حالة عدم وجود نظام تشغيل، استخدم كل ما هو كبير ومكلف حاسوبيمكن لتطبيق واحد فقط (ومستخدم واحد) القيام بذلك في أي وقت. تم تطوير أنظمة التشغيل الأولى في الخمسينيات من القرن الماضي لتسهيل الحياة على المطورين. تشمل الأمثلة نظام التشغيل جنرال موتورز (GMOS)، الذي تم تطويره لجهاز IBM 701، ونظام المراقبة FORTRAN (FMS)، الذي أنشأته شركة North American Aviation لجهاز IBM 709.

في ستينيات القرن العشرين، قام معهد ماساتشوستس للتكنولوجيا (MIT) وعدد من الشركات بتطوير نظام تشغيل تجريبي Multics (خدمة المعلومات والحوسبة المتعددة الإرسال) للآلة GE-645. أحد مطوري نظام التشغيل هذا، AT&T، ابتعد عن Multics وقام بتطوير نظام Unics الخاص به في عام 1970. تم تصميم لغة C المرفقة مع نظام التشغيل C هذا وكتابتها لجعل تطوير نظام التشغيل محمولاً.

وبعد عشرين عامًا، أنشأ أندرو تانينباوم نسخة ميكروكيرنل من UNIX® تسمى MINIX (Minimal UNIX) والتي يمكن تشغيلها على أجهزة الكمبيوتر الصغيرة. حواسيب شخصية. ألهم نظام التشغيل مفتوح المصدر هذا لينوس تورفالدس لتطوير الإصدار الأول من Linux في أوائل التسعينيات (انظر الشكل 1).

أرز. 1. تاريخ موجز لإصدارات نواة لينكس الرئيسية

لقد نما Linux بسرعة من مبادرة متحمسة واحدة إلى مشروع عالمي يضم آلاف المطورين. أحد أهم القرارات في مصير Linux كان اعتماده تراخيص جنوالترخيص العام (GPL). قامت GPL بحماية نواة Linux من الاستغلال التجاري وفي الوقت نفسه فتحت الطريق لاستخدام مجتمع مستخدمي مشروع GNU، الذي أسسه ريتشارد ستالمان، والذي يتجاوز حجم أكواده بكثير نواة Linux. هذا جعل من الممكن استخدام مثل هذا تطبيقات مفيدة، مثل مجمع المترجمات GNU Compiler Collection (GCC) وقذائف الأوامر المختلفة.

مقدمة إلى نواة لينكس

دعنا ننتقل إلى نظرة عامة على بنية نظام التشغيل GNU/Linux. يمكن تقسيم نظام التشغيل إلى مستويين، كما هو موضح في الشكل. 2.

أرز. 2. البنية الأساسية لنظام التشغيل جنو/لينكس

في المستوى الأعلى توجد مساحة المستخدم (مساحة التطبيق). هذا هو المكان الذي يتم فيه تنفيذ تطبيقات المستخدم. أسفل مساحة المستخدم توجد مساحة kernel. هذا هو المكان الذي تعمل فيه نواة Linux.

توجد أيضًا مكتبة GNU C (glibc). وهو يوفر واجهة استدعاء نظام تتواصل مع النواة وتوفر آلية للانتقال من تطبيق مساحة المستخدم إلى النواة. وهذا أمر مهم لأن النواة و تطبيق مخصصتقع في مساحات العناوين المحمية المختلفة. علاوة على ذلك، في حين أن كل عملية في مساحة المستخدم لها مساحة عنوان افتراضية خاصة بها، فإن النواة تشغل مساحة عنوان مشتركة واحدة. أكثر معلومات مفصلةيمكن العثور عليها في الأدبيات التي ترد مراجع لها في قسم "".

يمكن تقسيم نواة Linux بدورها إلى ثلاث طبقات كبيرة. في الجزء العلوي توجد واجهة استدعاء النظام، والتي يتم تنفيذها وظائف أساسية، مثل القراءة والكتابة. يوجد أسفل واجهة استدعاء النظام رمز kernel، أو بشكل أكثر دقة، رمز kernel المستقل عن البنية. هذا الرمز شائع في جميع بنيات المعالجات التي يدعمها Linux. والأقل من ذلك هو الكود المعتمد على الهندسة المعمارية، والذي يشكل ما يسمى. BSP (حزمة دعم اللوحة - حزمة دعم النظام الأساسي للأجهزة). هذا الرمز مخصص للمعالج والنظام الأساسي لبنية معينة.

خصائص نواة لينكس

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

تم تنفيذها في نواة لينكس خط كاملمهم العناصر المعمارية. على المستويين الأكثر عمومية والأكثر تفصيلاً، يمكن تقسيم النواة إلى عدة مستويات الأنظمة الفرعية المختلفة. من ناحية أخرى، يمكن النظر إلى Linux على أنه وحدة متجانسة، حيث أن كل شيء الخدمات الأساسيةتم جمعها في قلب النظام. يختلف هذا الأسلوب عن بنية النواة الدقيقة، حيث توفر النواة فقط خدمات شائعة جدًا، مثل تبادل المعلومات. يتم تنفيذ الإدخال/الإخراج وإدارة الذاكرة والعمليات وخدمات أكثر تحديدًا في وحدات متصلة بمستوى النواة الدقيقة. ولكل وجهة نظر من وجهات النظر هذه مزاياها، لكنني لن أخوض في هذه المناقشة هنا.

بمرور الوقت، أصبحت نواة Linux أكثر كفاءة من حيث استخدام الذاكرة ووحدة المعالجة المركزية وأصبحت مستقرة للغاية. ومع ذلك، فإن الجانب الأكثر إثارة للاهتمام في Linux، نظرًا لحجم النظام وتعقيده، هو قابليته للنقل. يمكن تجميع Linux لـ كمية ضخمة معالجات مختلفةوالمنصات ذات القيود والاحتياجات المعمارية المختلفة. على سبيل المثال، يمكن تشغيل Linux على معالج مزود بوحدة إدارة الذاكرة (MMU) أو بدون MMU. يتم تنفيذ دعم المعالجات التي لا تحتوي على MMU في إصدار uClinux kernel. لمزيد من المعلومات، راجع القسم " ".

الأنظمة الفرعية الأساسية لنواة لينكس

دعونا نلقي نظرة على بعض المكونات الرئيسية لنواة لينكس، باتباع البنية الموضحة في الشكل. 3.

أرز. 3. عرض واحد محتمل لبنية Linux kernel

واجهة استدعاء النظام

SCI عبارة عن طبقة رقيقة توفر وسيلة لاستدعاء وظائف kernel من مساحة المستخدم. كما ذكرنا سابقًا، يمكن أن تعتمد هذه الواجهة على البنية، حتى داخل نفس عائلة المعالج. SCI هي في الواقع خدمة تعدد الإرسال وإزالة تعدد الإرسال لاستدعاء الوظائف. يقع تطبيق SCI في ./linux/kernel، والجزء الخاص بالبنية موجود في ./linux/arch. يمكن العثور على مزيد من المعلومات التفصيلية حول هذا المكون في القسم.

ادارة العمليات

تركز إدارة العمليات على تنفيذ العمليات. في النواة تسمى هذه العمليات تيارات(الخيوط)؛ أنها تتوافق مع كائنات المعالج الافتراضية الفردية (رمز الموضوع، البيانات، المكدس، سجلات المعالج). في مساحة المستخدم المصطلح شائع الاستخدام هو عمليةعلى الرغم من أن تطبيق Linux لا يميز بين هذين المفهومين (العمليات والخيوط). توفر النواة واجهة برمجة التطبيقات (API) عبر SCI لإنشاء عملية جديدة (إنشاء نسخة، بدء التنفيذ، استدعاء وظائف واجهة نظام التشغيل المحمولة)، إيقاف العملية (القتل، الخروج)، الاتصال والمزامنة بين العمليات (الإشارات أو آليات بوسيكس).

مهمة أخرى لإدارة العملية هي مشاركةالمعالج مع المواضيع النشطة. تطبق النواة خوارزمية جدولة مبتكرة، لا يعتمد وقت تشغيلها على عدد الخيوط المتنافسة على موارد المعالج. يؤكد اسم المجدول - O(1) - على أن الأمر يستغرق نفس القدر من الوقت لجدولة مؤشر ترابط واحد كما هو الحال لجدولة سلاسل رسائل متعددة. يدعم برنامج جدولة O(1) أيضًا تكوينات المعالجات المتعددة المتماثلة (SMP). توجد أكواد المصدر لنظام التحكم في العمليات في /linux/kernel، وأكواد الجزء المعتمد على البنية موجودة في /linux/arch). لمزيد من المعلومات حول هذه الخوارزمية، راجع القسم.

إدارة الذاكرة

المورد المهم الآخر الذي تديره النواة هو الذاكرة. ولزيادة الكفاءة، مع مراعاة آلية عمل الأجهزة مع الذاكرة الافتراضية، يتم تنظيم الذاكرة على شكل ما يسمى. الصفحات(حجمه 4 كيلو بايت في معظم البنيات). يحتوي Linux على أدوات لإدارة الذاكرة المتوفرة، بالإضافة إلى آليات الأجهزة لتعيين الذاكرة الفعلية والافتراضية.

ومع ذلك، فإن إدارة الذاكرة هي أكثر بكثير من مجرد إدارة مخازن مؤقتة بسعة 4 كيلو بايت. يوفر Linux تجريدات لهذه المخازن المؤقتة التي يبلغ حجمها 4 كيلوبايت، مثل مُخصص اللوحة. تعتمد آلية التحكم هذه على مخازن مؤقتة تبلغ سعتها 4 كيلوبايت، ولكنها تقوم بعد ذلك بوضع الهياكل بداخلها، لتتبع الصفحات الممتلئة والصفحات الممتلئة جزئيًا والفارغة. يسمح ذلك بتوسيع الدائرة وتقليصها ديناميكيًا وفقًا لاحتياجات النظام الأساسي.

الموضوع متوفر عدد كبيرقد يواجه مستخدمو الذاكرة مواقف حيث يتم استنفاد كافة الذاكرة المتوفرة. وفي هذا الصدد، يمكن إزالة الصفحات من الذاكرة ونقلها إلى القرص. هذه عملية تبادل الصفحات بين كبشويسمى القرص الصلب مبادلة. توجد أكواد مصدر إدارة الذاكرة في ./linux/mm.

نظام الملفات الظاهري

جانب آخر مثير للاهتمام في نواة Linux هو نظام الملفات الظاهري (VFS)، الذي يوفر فكرة عامة عن واجهة أنظمة الملفات. يوفر VFS طبقة تبديل بين SCI وأنظمة الملفات التي تدعمها النواة (انظر الشكل 4).

أرز. 4. يوفر VFS نسيجًا للتبديل بين المستخدمين وأنظمة الملفات

يوجد في المستوى الأعلى من VFS تجريد واحد لواجهة برمجة التطبيقات (API) لوظائف مثل فتح الملفات وإغلاقها وقراءتها وكتابتها. على المستويات الدنياتحتوي VFSs على تجريدات نظام الملفات التي تحدد كيفية تنفيذ وظائف المستوى الأعلى. إنها مكونات إضافية لأنظمة ملفات محددة (يوجد منها أكثر من 50). توجد أكواد المصدر لأنظمة الملفات في ./linux/fs.

أسفل مستوى نظام الملفات توجد ذاكرة التخزين المؤقت، والتي توفر مجموعة عامة من الوظائف لمستوى نظام الملفات (مستقلة عن نظام الملفات المحدد). تعمل طبقة التخزين المؤقت هذه على تحسين الوصول إلى الأجهزة الماديةمن خلال تخزين البيانات على المدى القصير (أو القراءة المسبقة، مما يضمن أن البيانات جاهزة عند الحاجة إليها). يوجد أسفل ذاكرة التخزين المؤقت برامج تشغيل الأجهزة التي تقوم بتنفيذ واجهات لأجهزة فعلية محددة.

مكدس الشبكة

حسب التصميم، تتمتع حزمة الشبكة ببنية متعددة المستويات تكرر بنية البروتوكولات نفسها. هل تتذكر أن البروتوكول بروتوكول إنترنت(IP) هو البروتوكول الأساسيطبقة الشبكة، الموجودة أسفل بروتوكول نقل الإرسال بروتوكول التحكم، برنامج التعاون الفني). فوق TCP توجد طبقة المقبس، التي يتم استدعاؤها عبر SCI.

طبقة المقبس هي واجهة برمجة تطبيقات قياسية للنظام الفرعي للشبكة. ويوفر واجهة مستخدم لبروتوكولات الشبكة المختلفة. تطبق طبقة المقبس طريقة موحدة لإدارة الاتصالات ونقل البيانات بين نقاط النهاية، بدءًا من الوصول إلى إطارات البيانات الواضحة ووحدات بيانات بروتوكول IP (PDUs) إلى بروتوكولات TCPو مخطط بيانات المستخدمالبروتوكول (UDP). يوجد الكود المصدري للنظام الفرعي لشبكة kernel في الدليل ./linux/net.

برامج تشغيل الأجهزة

تتكون الغالبية العظمى من كود مصدر Linux kernel من برامج تشغيل الأجهزة، والتي توفر القدرة على العمل مع أجهزة محددة. تحتوي شجرة مصدر Linux على دليل فرعي لبرامج التشغيل، والذي بدوره يحتوي على أدلة فرعية لـ أنواع مختلفةالأجهزة المدعومة مثل Bluetooth، I2C، المنافذ التسلسليةإلخ. توجد رموز المصدر لبرامج تشغيل الأجهزة في ./linux/drivers.

كود خاص بالهندسة المعمارية

على الرغم من أن الجزء الأكبر من Linux مستقل عن البنية التي يعمل عليها نظام التشغيل، إلا أن هناك بعض العناصر التي يجب أن تأخذ في الاعتبار البنية لضمان التشغيل والكفاءة بشكل سليم. يحتوي الدليل الفرعي ./linux/arch على الجزء الخاص بالبنية من كود مصدر kernel، مقسمًا إلى عدد من الدلائل الفرعية المقابلة لبنيات معينة. كل هذه الدلائل تشكل معًا BSP. في حالة الكمبيوتر المكتبي العادي، يتم استخدام الدليل i386. يحتوي الدليل الفرعي لكل بنية على عدد من الدلائل الفرعية المتعلقة بجوانب معينة من النواة، مثل التمهيد، والنواة، وإدارة الذاكرة، وما إلى ذلك. الكود المصدري للجزء الخاص بالبنية موجود في ./linux/arch.

إلى جانب قابلية النقل والكفاءة، تحتوي نواة Linux على عدد من الميزات الأخرى المثيرة للاهتمام التي لم يتم تناولها في المناقشة أعلاه.

يعد Linux، باعتباره نظام تشغيل مفتوح المصدر مستخدمًا على نطاق واسع في الممارسة العملية، بمثابة أرض اختبار ممتازة للبروتوكولات الجديدة وتحسيناتها. يدعم لينكس عدد كبير من بروتوكولات الشبكة، بما في ذلك TCP/IP التقليدي وامتداداته عالية السرعة (للشبكات الأسرع من Gigabit Ethernet و10 GbE). يدعم Linux أيضًا بروتوكولات مثل بروتوكول نقل التحكم في التدفق (SCTP)، الذي ينفذ العديد من البروتوكولات وظائف اضافيه، غائب في TCP (يستخدم كبروتوكول طبقة نقل بديل).

وتجدر الإشارة إلى أن نواة لينكس ديناميكية (تدعم إضافة وإزالة مكونات البرامج دون إيقاف النظام). تسمى هذه المكونات وحدات kernel المحملة ديناميكيًا. ويمكن إدخالها إلى النظام حسب الحاجة، كما هو الحال أثناء التمهيد (إذا وجدت جهاز معين، الأمر الذي يتطلب مثل هذه الوحدة)، وفي أي وقت بناءً على طلب المستخدم.

هناك تحسين آخر تم إجراؤه مؤخرًا في Linux وهو القدرة على استخدامه كنظام تشغيل لأنظمة تشغيل أخرى (يُسمى برنامج Hypervisor). في الآونة الأخيرة، تم إجراء تحسين على النواة، يسمى Kernel Based آلة افتراضية(KVM، الجهاز الظاهري القائم على Kernel). ونتيجة لهذا التعديل، تم تنفيذه في مساحة المستخدم واجهة جديدة، والذي يسمح لك بتشغيل أنظمة تشغيل أخرى أعلى نواة تدعم KVM. في هذا الوضع، لا يمكنك تشغيل مثيلات Linux الأخرى فحسب، بل يمكنك أيضًا إضفاء الطابع الافتراضي على Microsoft® Windows®. القيد الوحيد هو أن المعالج المستخدم يجب أن يدعم تعليمات المحاكاة الافتراضية الجديدة. لمزيد من المعلومات، راجع القسم.

المزيد من الدراسة

في هذه المقالة نحن فقط في الأكثر المخطط العامتحدثت عن بنية نواة لينكس ومميزاتها وإمكانياتها. يمكن العثور على معلومات مفصلة حول محتويات النواة في دليل الوثائق، وهو متاح في أي توزيعة لينكس. تأكد من مراجعة القسم الموجود في نهاية هذه المقالة للحصول على روابط للحصول على معلومات أكثر تفصيلاً حول العديد من المواضيع التي تمت مناقشتها هنا.

في بعض الأحيان قد تحتاج إلى بناء بنفسك نواة لينكس. قد تكون أسباب ذلك ما يلي:

  • أنت بحاجة إلى نواة نظيفة، دون تصحيحات التوزيع؛
  • تريد تطبيق التصحيحات الخاصة بك (والتي يوجد منها الكثير)؛
  • إذا كنت ترغب في تجميع نواة لتناسب تكوين أجهزتك، والتخلص من الأشياء غير الضرورية منها و/أو تخصيصها لمهام محددة؛
  • تريد تضمين برنامج تشغيل تجريبي في النواة أو نظام الملفات، الذي ليس في "فانيلا"النواة (على سبيل المثال ZFSأو النافع 4);
لا يوجد شيء معقد في تجميع النواة. من المهم فقط أن تفهم سبب القيام بذلك، وكذلك عدم لمس تلك المعلمات التي لا تفهمها. سأصف في هذا المنشور مثالين لبناء النواة مبني على دبيانتوزيعات. في المثال الأول، سأوضح مدى سهولة تجميع نواة نقية تسمى نواة "الفانيليا" (كما تم إصدارها بواسطة لينوس تورفالدس)، وفي الثانية - كيفية تطبيق التصحيحات الخاصة بك وتحسين النواة. سأكتب على الفور تحذيرين:
  • ستحتاج إلى إعادة بناء النواة في كل مرة يتم تحديثها (قم بتنزيل "تصحيح التحديث"، وقم بتطبيقه وتجميع النواة)؛
  • قد لا تعمل النواة المعاد بناؤها إذا كان نظامك يستخدم بعض الاختراقات لضمان عمل هذا الجهاز أو ذاك؛
  • إذا تم تكوين النواة بشكل غير صحيح، خاصة في حالة التطبيق الأمي أو غير المدروس للتصحيحات، فقد ينتهي بك الأمر إما بنظام بطيء للغاية، أو تفقده تمامًا.
أنت تقوم بجميع الإجراءات على مسؤوليتك الخاصة!

تجميع نواة بسيط بدون تصحيحات.

كود مصدر Linux kernel متاح على kernel.org. هناك أيضا "تحديث التصحيحات". ماذا نحتاج؟ تحميل من الموقع كرة القطران(أرشيف) بأحدث إصدار ثابت من النواة (في وقت كتابة هذا التقرير، هذا هو الإصدار 4.3 ). قم بالتنزيل بأي طريقة مناسبة. بعد ذلك نحتاج إلى أدوات للتجميع:

Sudo apt install تصحيح حزمة النواة الأساسية لدول مجلس التعاون الخليجي
sudo apt-get build-dep linux

بعد تثبيت كل شيء الأدوات اللازمة، قم بفك ضغط الأرشيف باستخدام رمز kernel في أي دليل مناسب. فليكن /الصفحة الرئيسية/المستخدم/KERNEL، أين "مستخدم"- اسم مستخدم النظام. بعد ذلك، افتح Terminal وانتقل إلى هناك:

cd /home/user/KERNEL

كل ما تبقى هو تجميع النواة:

fakeroot make-kpkg -j 3 --initrd --append-to-version=-custom kernel_image kernel_headers #-j 3

رقم 3 بعد ي- هذا هو عدد النوى للمعالج الخاص بك + 1. أي أنه بالنسبة للمعالج ثنائي النواة فهو 3، وللمعالج رباعي النواة هو 5 وهكذا.
-مخصص- هنا يمكنك تحديد اسم مناسب للنواة لتسهيل تمييزها عن التوزيعة.
kernel_imageو kernel_headers- هذه هي النواة نفسها وملفات رأسها على التوالي. الرؤوسضروري لتجميع برامج التشغيل ووحدات kernel، وكذلك لبعض الأغراض الأخرى. بعد تشغيل هذا الأمر، ستبدأ عدة أسئلة حول تكوين kernel في الظهور. وبما أننا نترك كل شيء كإعداد افتراضي، فما عليك سوى الضغط على Enter حتى يبدأ الإنشاء. اعتمادًا على قوة جهاز الكمبيوتر الخاص بك، قد يستغرق التجميع من 15 إلى 20 دقيقة إلى عدة ساعات. بعد التجميع، في الدليل /المستخدمين المنزليينسيظهر اثنان حزمة ديب: الأساسية والرؤوس. قم بتثبيتها باستخدام الأمر:

sudo dpkg -i linux-image-4.3*deb linux-headers-4.3*deb
سودو التحديث-جروب

وإعادة التشغيل. في قائمة GRUB يمكنك الآن تحديد نواة مختلفة لتشغيل النظام.

بناء النواة باستخدام التصحيحات والتكوين الإضافي.

هذه المرة، سنقوم بتجميع نواة محسنة للعمل مع الصوت والفيديو، وكذلك لزيادة استجابة النظام. للقيام بذلك، سوف نقوم بتطبيق تصحيحين: ما يسمى التصحيح في الوقت الحقيقي ( استباقية RT) وتصحيح للمترجم مجلس التعاون الخليجي، للإضافة خيارات اضافيةلتحسينات المعالج. بداية، ما هو التصحيح؟ التصحيح هو ملف نصي يتم إنشاؤه بواسطة البرنامج فرق، تحتوي على تغييرات التعليمات البرمجية في أجزاء معينة، والتي يتم إدخالها عند تطبيق التصحيح الأماكن الصحيحة. لأن التصحيح RTيخرج مع تأخير كبير، أحدث إصدار له هو ل النواة 4.1. ومع ذلك، هذا ليس مهما جدا. باستخدام نفس المخطط، قم بتنزيل kernel 4.1 من kernel.org وقم بفك ضغطه في الدليل /home/user/KERNEL-CUSTOM. الآن قم بتنزيل التصحيحات. PREEMPT_RT وتصحيح دول مجلس التعاون الخليجي. من الأرشيفات التي تم تنزيلها، نحتاج إلى ملفات ذات امتداد .patch، والتي يجب وضعها في الدليل مع الكود المصدري للنواة. التي هي في /home/user/KERNEL-CUSTOM. قبل تطبيق التصحيحات، عليك التأكد من عدم وجود أخطاء. افتح المحطة:

cd /home/user/KERNEL-CUSTOM
patch -p1 -i patch-4.1.13-rt15.patch --dry-run


خيار --ركض جافيسمح لك بمحاكاة تطبيق التصحيح، دون إجراء تغييرات على الملفات. إذا لم يتم العثور على أخطاء (انظر لقطة الشاشة) - فاقبل التصحيح بدون الخيار --ركض جاف. قم بتنفيذ إجراءات مماثلة مع التصحيح الثاني. لا تقم بتطبيق أكثر من رقعة واحدة في وقت واحد!الآن نحن بحاجة إلى تكوين النواة لدينا. لدينا الخيارات التالية للاختيار من بينها:

جعل التكوين- سيتم عرض الأسئلة المتعلقة بتكوين نظام فرعي معين للنواة في الجهاز واحدًا تلو الآخر. عملية طويلة ومملة للغاية. دعنا ننسى الامر :)
جعل التكوين القديم- سيتم استخدام تكوين النواة قيد التشغيل حاليًا. نظرًا لأننا نقوم بتجميع منتجاتنا من الصفر، فهذه الطريقة أيضًا غير مجدية.
جعل إلغاء التكوين- على غرار السابق، فقط القيم ستكون افتراضية. الطريقة التي وضعها مطورو النواة. على غرار طريقة التجميع الأولى.
جعل القائمة التكوين- واجهة رسومية زائفة تعتمد على المكتبة نكورسيس. سيتم عرض واجهة بقائمة هرمية ملائمة على الشاشة. عناصر التحكم باستخدام مفاتيح الاتجاه ومفتاح المسافة ومفتاح TAB. يوصى به إذا كنت تقوم ببناء النواة على نظام لا يحتوي على غلاف رسومي.
جعل gconfig جتك، موصى به في GNOME وMate وXfce وCinnamon وUnity وغيرها من الأجهزة التي تستخدم GTK.
جعل xconfig- تعتمد على واجهة المستخدم الرسومية كيو تي. الموصى بها في كيدي. وبما أن نظامي يستخدم كيدي، سأستخدم هذه الطريقة. بالإضافة إلى ذلك، هناك طريقتان أخريان، لكن تطبيقهما لا يختلف. لذلك، بعد تطبيق التصحيحات، نبدأ جعل xconfigوهذا ما يظهر أمامنا:


أولا وقبل كل شيء، إيقاف dynticks. للقيام بذلك نذهب إلى النظام الفرعي للمؤقتاتو اختار القراد الموقت الدوري


الآن يأتي الجزء الأفضل. لنذهب إلى نوع المعالجات ومميزاتها، أبحث عن عنصر عائلة المعالجوتشير إلى سلسلة المعالج الخاص بك. على سبيل المثال، إذا كان لديك إنتل كور i5-4xxx، يشير هاسويل(معالج الجيل الرابع). إذا لم تكن متأكدًا تمامًا، يمكنك تحديد العنصر تم اكتشاف التحسينات الأصلية تلقائيًا بواسطة دول مجلس التعاون الخليجي. في هذه الحالة، أثناء التجميع، سيحدد المترجم نفسه ما يدعمه المعالج الخاص بك وسيشمل جميع ميزاته.


اذهب أدناه وقم بتمكين المعلمة نواة وقائية كاملة (RT). وضع الوقت الحقيقي الصعب.


قم بالتمرير لأسفل وعند هذه النقطة تردد الموقتاضبط تردد مقاطعة النظام على 1000 هرتز


نقوم بإيقاف أي توفير للطاقة تمامًا. انه مهم! على اليسار نحن نبحث عن عنصر إدارة الطاقةوخيارات ACPIوقم بإلغاء تحديد ACPI. قم أيضًا بإيقاف تشغيل توفير طاقة وحدة المعالجة المركزية

هذا كل شئ. إذا كنت ترغب في ذلك (ودراسة الوثائق بعناية)، يمكنك إجراء تغييرات إضافية على التكوين (تعطيل برامج التشغيل غير الضرورية، واستخدام أنظمة فرعية إضافية، وما إلى ذلك). الآن نقوم بحفظ التكوين عبر حفظ الملف، أغلق المكوِّن وقم بتجميع النواة:

fakeroot make-kpkg -j 3 --initrd --append-to-version=-rt-custom kernel_image kernel_headers #-j 3
سودو التحديث-جروب

على جهاز الكمبيوتر الخاص بي المزود بمعالج Intel Core i3-550 (3.2 جيجا هرتز)، كانت الزيادة في الأداء ملحوظة تمامًا. ولكن الشيء الأكثر أهمية هو عند العمل LMMSو كدينليف، التأتأة الدورية، إلغاء تزامن مسارات الصوت والفيديو، وكذلك التجميد عندما حمل ثقيلعلى الأقراص الصلبة. الخلاصة - إنها تعمل! أخيرًا، سأصف نواتين معدلتين، واللتين تحظىان بشعبية كبيرة في دوائر Linux:

نواة PF- مجموعة الرقع الأكثر شعبية من الأوكراني ألكسندر ناتالينكو (المعروف أيضًا باسم ما بعد الحقيقة). هذه مجموعة من التصحيحات التي لم يتم تضمينها في النواة الرئيسية، ولكنها توفر استجابة متزايدة للنظام، وتوفر نظامًا فرعيًا للإسبات بديلًا أسرع من النظام الرئيسي، كما تقلل أيضًا من استخدام الذاكرة باستخدام تقنية التجميع صفحات متطابقة. تتضمن المجموعة:

  • برنامج جدولة عمليات BFS بواسطة Con Kolivas مع إصلاحات إضافية بواسطة Alfred Chen؛
  • برنامج جدولة BFQ I/O بواسطة باولو فالينتي وأريانا أفانزيني وماورو مارينوني؛
  • نظام السبات الفرعي TuxOnIce من Nigel Cunningham؛
  • تنفيذ تقنية دمج الصفحات المتطابقة في ذاكرة UKSM من Nai Xia؛
  • التصحيح من Graysky، وتوسيع قائمة المعالجات لتحسين kernel بواسطة المترجم (الذي طبقناه أعلاه)
مستودع النواة المعدل. موقع رسمي .

نواة زين- المجموعة الثانية الأكثر شعبية، ولكن الأولى من حيث عدد البقع. يستخدم Zen Kernel مجموعة من العديد من المشاريع، ويقوم بتحديث التعليمات البرمجية عبر مستودع git، ويحتوي أيضًا على العديد من الأشياء الخاصة بـ Zen والتي تهدف إلى تلبية معظم احتياجات المستخدم في نواة واحدة. بعض ميزات التصحيح: drm-next، والاختبار اللاسلكي، واختيار برامج جدولة وحدة المعالجة المركزية (CFS/BFS)، وجدولة الإدخال/الإخراج BFQ، وaufs، وunionfs، وreiser4، وtuxonice، وPHC والعديد من الأشياء الأخرى التي تعتبر رائعة لتحسين أنظمة سطح المكتب أو أجهزة الكمبيوتر المحمولة. كل هذا متوفر على شكل رقعة واحدة لنواة الفانيليا. موقع رسمي . مستودع GIT. حزم لديبيان/أوبونتو.

ربما هذا كل شيء لهذا اليوم. يمكن العثور على مزيد من المعلومات في روابط المقالة. لقد قمت باختبار كل ما هو موضح في المقالة في العديد من التكوينات.

سأحاول اليوم أن أتحدث بأكبر قدر ممكن من الوضوح والإيجاز إدارة نواة Linux/UNIX.سأحاول في هذا الموضوع شرح كيفية: استخدام الصدفة للحصول على معلومات حول وحدات kernel ووحدات kernel، وتحميل وحدات kernel وإزالتها أثناء التشغيل، ومعرفة ما إذا كانت هناك حاجة إلى وحدة متصلة/معطلة على الإطلاق، وتكوين نظام التشغيللتنزيل الوحدات اللازمة.

معلومات عامة

يمكنك عرض قائمة الوحدات المتصلة حاليًا باستخدام فرق:

خادم الطباعة:/tmp/123# lsmod حجم الوحدة المستخدمة بواسطة ipv6 235396 10 حلقة 12748 0 parport_pc 22500 0 parport 31084 1 parport_pc snd_pcm 62660 0 snd_timer 17800 1 snd_pcm snd 45636 2 nd _timer soundcore 6368 1 snd snd_page_alloc 7816 1 snd_pcm psmouse 32336 0 serio_raw 4740 0 pcspkr 2432 0 i2c_piix4 7216 0 i2c_core 19828 1 i2c_piix4 ac 4196 0 زر 6096 0 evdev 8000 0 ext3 105576 5 jbd 39476 1 ext3 mbcache 7 108 1 ex t3 sd_mod 22200 7 ide_cd_mod 27684 0 cdrom 30176 1 ide_cd_mod ata_generic 4676 0 ahci 23596 6 libata 140448 2 ata_generic,ahci scsi_mod 129548 2 sd_mod,libata Dock 8304 1 libata e1000 102656 0 piix 6568 0 ide_pci_generic 3908 0 ide_core 96168 3 ide_cd_mod,piix ,ide_pci_generic حراري 1 5228 0 معالج 32576 1 مروحة حرارية 4196 0 Thermal_sys 10856 3 حراري المعالج، المروحة

في المثال أعلاه، يمكنك أن ترى أن هناك العديد من الوحدات المحملة في النظام. معظمها يأتي مع النواة ومرخصة بحرية. هناك أيضًا وحدات خاصة (على سبيل المثال، برامج تشغيل محول الفيديو NVIDIA). وفقًا لذلك، يسمح النهج المعياري بتضمين المكونات غير الحرة في النواة إذا كان ترخيص الملكية يسمح بذلك، مما يلغي الحاجة إلى الحصول على هذه الوحدات من الشركة المصنعة للأجهزة.

في المثال، يمكنك أيضًا أن ترى أن الوحدات المقابلة تدعم أجهزة مثل الفيديو، وSATA، وSCSI، والأقراص المرنة، وبطاقات الصوت، بالإضافة إلى أجهزة الشبكة، مثل IPV6، ودعم أنظمة الملفات مثل ext3، واستدعاء الإجراءات عن بعد من Sun (RPC).

بجانب اسم وحدة، يعرض الأمر lsmod أيضًا حجم الوحدة وعدد المستخدمين وأسماء المستخدمين.

أمر مودينفو يوفر معلومات حول وحدة واحدة أو أكثر.

Kernel-server:/tmp/123$ /sbin/modinfo ipv6 اسم الملف: /lib/modules/2.6.26-2-686/kernel/net/ipv6/ipv6.ko الاسم المستعار: ترخيص net-pf-10: وصف GPL: مكدس بروتوكول IPv6 لمؤلف Linux: مجموعة من العشرات تعتمد: vermagic: 2.6.26-2-686 SMP mod_unload modversions 686

في المثال أعلاه يمكنك أن ترى أن الأمر com.modinfoيعرض معلومات حول وحدة ipv6، والتي تتضمن معلمات مثل اسم الملف والمسار والترخيص والوصف ومؤلف الوحدة وما إلى ذلك. قد تختلف معلمات الوحدة وفقًا للوحدة.

أود بشكل خاص أن أتطرق إليها معلمة اسم الملفيحتوي على المسار إلى ملف الوحدة النمطية واسم الملف. ينتهي اسم ملف وحدة ipv6 بـ .كو، وهذا يخبرنا بذلك هذه الوحدةيعود الى إصدار النواة 2.6. في وقت سابق نسخة النواة - 2.4، تنتهي أسماء الوحدات بـ .o). كما ترى، توجد الوحدة في الدلائل الفرعية للدليل /lib/modules/2.6.26-2-686/، وفي هذا المسار، يتوافق الدليل 2.6.26-2-686 مع إصدار النواة (وكذلك إخراج الأمر uname -r، والذي يُستخدم بشكل نشط في كتابة البرامج النصية). تعكس بنية الدلائل الفرعية للدليل المحدد العلاقة بين وحدات kernel والغرض من الوحدات، وأعتقد أن المثال أدناه سيوضح ذلك بوضوح:

Kernel-server:/tmp/123# ls -l /lib/modules/2.6.26-2-686/kernel/ Total 12 drwxr-xr-x 3 جذر الجذر 1024 1 أكتوبر 15:40 قوس drwxr-xr-x 3 الجذر الجذر 4096 1 أكتوبر 18:02 التشفير drwxr-xr-x 54 الجذر الجذر 1024 أكتوبر 1 15:40 السائقين drwxr-xr-x 51 الجذر الجذر 3072 أكتوبر 1 18:02 fs drwxr-xr-x 6 الجذر الجذر 1024 أكتوبر 1 18:02 lib drwxr-xr-x 37 root root 1024 1 أكتوبر 15:40 net drwxr-xr-x 11 root root 1024 1 أكتوبر 18:02 صوت

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

كيف نعرف ما هي وحدات النواة المطلوبة، وما هي تلك التي يمكن حذفها؟

انها بسيطة: إذا كان العداد استعمل من قبل يساوي الصفر، فلا يتم استخدام وحدة kernel من قبل أي شخص أو أي شيء. وبناء على ذلك يمكن حذفه.

إزالة وحدة النواةيحدث كفريق com.rmmodاسم وحدة.

قد تكون هناك حاجة إلى وحدة عن بعد أثناء التشغيل؛ لتحميل الوحدة، يجب عليك تشغيل الأمر: com.insmod/path/to/module.ko

مثال مثير للاهتمام لاستخدام insmod مع أوامر أخرى:

# uname -r 2.6.27-ovz-smp-alt9 # insmod /lib/modules/`uname -r`/kernel/drivers/block/floppy.ko # rmmod floppy # modinfo -F filename floppy /lib/modules/2.6 .27-ovz-smp-alt9/kernel/drivers/block/floppy.ko # insmod $(modinfo -F filename floppy) # lsmod | grep القرص المرن 58244 0

هناك أيضا آخر فريقل إدارة الوحدة: . تكمن خصوصية هذا الأمر في أنه يزيل/يضيف وحدات مع مراعاة التبعيات بين الوحدات (يتم كتابة التبعيات بين الوحدات في الملف /lib/modules/version/modules.dep). مثال الاستخدام:

# modprobe -r vfat vfat: الجهاز أو المورد مشغول # lsmod | grep Fat vfat 13132 1 Fat 38744 1 # umount /windows/D # modprobe -r vfat # modprobe -v --show vfat /sbin/insmod /lib/modules/2.4.21-37.0.1.EL/kernel/fs/ Fat/fat.o /sbin/insmod /lib/modules/2.4.21-37.0.1.EL/kernel/fs/vfat/vfat.o # lsmod | grep Fat # modprobe -v vfat /sbin/insmod /lib/modules/2.4.21-37.0.1.EL/kernel/fs/fat/fat.o باستخدام /lib/modules/2.4.21-37.0.1.EL /kernel/fs/fat/fat.o بادئة إصدار الرمز "" /sbin/insmod /lib/modules/2.4.21-37.0.1.EL/kernel/fs/vfat/vfat.o باستخدام /lib/modules/2.4 .21-37.0.1.EL/kernel/fs/vfat/vfat.o # lsmod | دهون grep vfat 13132 0 (غير مستخدمة) دهون 38744 0

كما ذكر أعلاه، وحدات النواة لها تبعيات على بعضها البعض، والتي يتم كتابتها في الملف /lib/modules/version/modules.dep. هذا الملفتم إنشاؤه بواسطة الأمر depmod، والذي عند تنفيذه يبحث في بنية الدليل /lib/modules/current_kernel_version/ويولد معلومات حول التبعيات.

أريد أيضًا أن أشير إلى أنه يوجد في Linux ملف تكوين /etc/modules.conf,الذي يخاطبه com.modprobeو com.debmod. يستخدم هذا الملف في الغالب لضبط الأسماء المستعارة للوحدة النمطية. تستخدم بعض أنظمة التشغيل ملفات تكوين مختلفة، مثل /etc/modprobe.confأو الدليل مع ملفات التكوين - /etc/modprobe.d/.

يوجد مصدر ممتاز آخر للمعلومات حول نواة Linux الحالية على /التمهيد/التكوين-2.6....باستخدامه، يمكنك الحصول على معلومات كافية (على سبيل المثال، ما إذا كانت النواة تدعم نظام الملفات cifs):

خادم Samba:~# grep CONFIG_SMB_FS /boot/config-2.6.32-5-686 # لم يتم تعيين CONFIG_SMB_FS خادم samba:~# grep CONFIG_CIFS /boot/config-2.6.32-5-686 CONFIG_CIFS=m # CONFIG_CIFS_STATS لم يتم تعيين CONFIG_CIFS_WEAK_PW_HASH=y CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y # CONFIG_CIFS_DEBUG2 لم يتم تعيينه CONFIG_CIFS_DFS_UPCALL=y CONFIG_CIFS_EXPERIMENTAL=y

هذا كل شيء لهذا اليوم. كما هو الحال دائمًا، سأكون سعيدًا جدًا برؤية تعليقاتك! في سوف نتعلم كيفية تجميع جوهرنا.

مع أطيب التحيات، مكسيم!