
الكود المصدري لنواة لينكس 4.1.15 مع التركيز على CVE-2023-4128، مخصص لتحليل الثغرات والدراسة التعليمية لأمن النواة.
إصدار نواة لينكس 4.x http://kernel.org/
هذه هي ملاحظات الإصدار لإصدار لينكس 4. اقرأها بعناية، لأنها توضح لك ماهية هذا الأمر، وتشرح كيفية تثبيت النواة، وماذا تفعل إذا حدث خطأ ما.
ما هو لينكس؟
لينكس هو نسخة من نظام التشغيل يونكس، مكتوبة من الصفر بواسطة لينوس تورفالدس بمساعدة فريق غير مترابط من الهاكرز عبر الإنترنت. يهدف إلى الامتثال لمعايير POSIX ومواصفة يونكس الموحدة.
يتمتع بجميع الميزات التي تتوقعها في نظام يونكس حديث مكتمل، بما في ذلك تعدد المهام الحقيقي، والذاكرة الافتراضية، والمكتبات المشتركة، والتحميل عند الطلب، والملفات التنفيذية المشتركة بنسخ-عند-الكتابة، وإدارة الذاكرة السليمة، والشبكات متعددة الأكوام بما في ذلك IPv4 وIPv6.
يتم توزيعه بموجب رخصة جنو العمومية العامة - انظر ملف COPYING المرفق لمزيد من التفاصيل.
على أي عتاد يعمل؟
على الرغم من أنه طُوّر في الأصل لأجهزة الكمبيوتر الشخصية القائمة على x86 ذات 32 بت (386 أو أعلى)، يعمل لينكس اليوم أيضًا على (على الأقل) معماريات Compaq Alpha AXP وSun SPARC و UltraSPARC وMotorola 68000 وPowerPC وPowerPC64 وARM وHitachi SuperH وCell و IBM S/390 وMIPS وHP PA-RISC وIntel IA-64 وDEC VAX وAMD x86-64 وAXIS CRIS و Xtensa وTilera TILE وAVR32 وRenesas M32R.
لينكس قابل للنقل بسهولة إلى معظم المعماريات العامة ذات 32 أو 64 بت طالما أنها تمتلك وحدة إدارة ذاكرة مقسمة (PMMU) وتم نقل مترجم GNU C (gcc) إليها (جزء من مجموعة مترجمات GNU، GCC). تم أيضًا نقل لينكس إلى عدد من المعماريات دون PMMU، على الرغم من أن الوظائف تكون محدودة بشكل واضح عندئذٍ. تم أيضًا نقل لينكس إلى نفسه. يمكنك الآن تشغيل النواة كتطبيق في مساحة المستخدم - وهذا ما يسمى لينكس بنمط المستخدم (UserMode Linux - UML).
التوثيق:
هناك الكثير من التوثيق المتاح سواء في شكل إلكتروني على الإنترنت أو في الكتب، سواء كان خاصًا بلينكس أم متعلقًا بأسئلة يونكس العامة. أوصي بالاطلاع على الدلائل الفرعية للتوثيق في أي موقع FTP خاص بلينكس للحصول على كتب LDP (مشروع توثيق لينكس). هذا README ليس المقصود منه أن يكون توثيقًا للنظام: فهناك مصادر أفضل بكثير متاحة.
توجد ملفات README مختلفة في الدليل الفرعي Documentation/: تحتوي عادةً على ملاحظات تثبيت خاصة بالنواة لبعض برامج التشغيل على سبيل المثال. انظر Documentation/00-INDEX للحصول على قائمة بما تحتويه كل ملف. يرجى قراءة ملف Changes، لأنه يحتوي على معلومات حول المشكلات التي قد تنتج عن ترقية نواتك.
يحتوي الدليل الفرعي Documentation/DocBook/ على عدة أدلة لمطوري النواة ومستخدميها. يمكن عرض هذه الأدلة بعدد من التنسيقات: PostScript (.ps) وPDF وHTML وصفحات الرجل (man-pages)، من بين أخرى. بعد التثبيت، "make psdocs" أو "make pdfdocs" أو "make htmldocs" أو "make mandocs" ستعرض التوثيق بالتنسيق المطلوب.
تثبيت مصدر النواة:
إذا قمت بتثبيت المصادر الكاملة، ضع الحزمة المضغوطة الخاصة بالنواة في دليل لديك فيه صلاحيات (مثل دليل منزلك) وفك ضغطها:
xz -cd linux-4.X.tar.xz | tar xvf -
استبدل "X" برقم إصدار أحدث نواة.
لا تستخدم منطقة /usr/src/linux! تحتوي هذه المنطقة على مجموعة (عادة غير مكتملة) من ترويسات النواة التي تستخدمها ملفات ترويسات المكتبة. يجب أن تتطابق هذه الترويسات مع المكتبة، وألا تُفسد بأيًا كانت النواة السائدة في ذلك اليوم.
يمكنك أيضًا الترقية بين إصدارات 4.x عن طريق التصحيحات. تُوزَّع التصحيحات بتنسيق xz. للتثبيت عن طريق التصحيح، احصل على جميع ملفات التصحيح الأحدث، وادخل إلى الدليل العلوي لمصدر النواة (linux-4.X) ونفّذ:
xz -cd ../patch-4.x.xz | patch -p1
استبدل "x" بجميع الإصدارات الأكبر من الإصدار "X" لشجرة المصدر الحالية، بالترتيب، وستكون بخير. قد ترغب في إزالة ملفات النسخ الاحتياطي (some-file-name~ أو some-file-name.orig)، وتأكد من عدم وجود تصحيحات فاشلة (some-file-name# أو some-file-name.rej). إذا وُجدت، فإما أنك أو أنا ارتكبنا خطأ.
على عكس تصحيحات نوى 4.x، فإن تصحيحات نوى 4.x.y (المعروفة أيضًا بنوى -stable) ليست تراكمية، بل تُطبَّق مباشرة على نواة 4.x الأساسية. على سبيل المثال، إذا كانت نواتك الأساسية هي 4.0 وتريد تطبيق تصحيح 4.0.3، فلا يجب عليك أولاً تطبيق تصحيحي 4.0.1 و4.0.2. وبالمثل، إذا كنت تعمل بإصدار النواة 4.0.2 وتريد الانتقال إلى 4.0.3، فيجب عليك أولاً عكس تصحيح 4.0.2 (أي patch -R) قبل تطبيق تصحيح 4.0.3. يمكنك قراءة المزيد حول هذا في Documentation/applying-patches.txt
بدلاً من ذلك، يمكن استخدام السكربت patch-kernel لأتمتة هذه العملية. فهو يحدد إصدار النواة الحالي ويطبق أي تصحيحات موجودة.
linux/scripts/patch-kernel linux
الوسيطة الأولى في الأمر أعلاه هي موقع مصدر النواة. تُطبَّق التصحيحات من الدليل الحالي، ولكن يمكن تحديد دليل بديل كوسيطة ثانية.
تأكد من عدم وجود ملفات .o قديمة وتبعيات متناثرة:
cd linux make mrproper
يجب أن تكون المصادر مثبتة بشكل صحيح الآن.
متطلبات البرمجيات
يتطلب تجميع وتشغيل نوى 4.x إصدارات محدّثة من حزم برمجيات مختلفة. راجع Documentation/Changes للحصول على أرقام الإصدارات الدنيا المطلوبة وكيفية الحصول على تحديثات لهذه الحزم. احذر: استخدام إصدارات قديمة جدًا من هذه الحزم يمكن أن يسبب أخطاء غير مباشرة يصعب جدًا تتبعها، لذا لا تفترض أنه يمكنك فقط تحديث الحزم عند ظهور مشكلات واضحة أثناء البناء أو التشغيل.
دليل البناء للنواة:
عند تجميع النواة، سيتم تخزين جميع ملفات الإخراج افتراضيًا مع كود مصدر النواة. استخدام الخيار "make O=output/dir" يتيح لك تحديد مكان بديل لملفات الإخراج (بما في ذلك .config). مثال:
kernel source code: /usr/src/linux-4.X
build directory: /home/name/build/kernel
لتكوين النواة وبنائها، استخدم:
cd /usr/src/linux-4.X
make O=/home/name/build/kernel menuconfig
make O=/home/name/build/kernel
sudo make O=/home/name/build/kernel modules_install install
يرجى ملاحظة: إذا تم استخدام خيار 'O=output/dir'، فيجب استخدامه في جميع استدعاءات make.
تكوين النواة:
لا تتخطَّ هذه الخطوة حتى لو كنت تقوم فقط بترقية إصدار ثانوي واحد. تُضاف خيارات تكوين جديدة في كل إصدار، وستظهر مشكلات غريبة إذا لم يتم إعداد ملفات التكوين كما هو متوقع. إذا كنت تريد نقل تكوينك الحالي إلى إصدار جديد بأقل جهد، استخدم "make oldconfig"، الذي سيسألك فقط عن الإجابات على الأسئلة الجديدة.
أوامر التكوين البديلة هي:
"make config" واجهة نصية عادية.
"make menuconfig" قوائم ملونة نصية، وقوائم راديو وحوارات.
"make nconfig" قوائم ملونة نصية محسّنة.
"make xconfig" أداة تكوين قائمة على نوافذ X (Qt).
"make gconfig" أداة تكوين قائمة على نوافذ X (Gtk).
"make oldconfig" يجعل جميع الأسئلة افتراضية بناءً على محتويات ملف ./.config الحالي، ويسأل عن رموز التكوين الجديدة.
"make silentoldconfig" مثل ما سبق، لكنه يتجنب إرباك الشاشة بأسئلة تمت الإجابة عنها بالفعل. بالإضافة إلى ذلك، يحدّث التبعيات.
"make olddefconfig" مثل ما سبق، لكنه يضبط الرموز الجديدة على قيمها الافتراضية دون مطالبة.
"make defconfig" ينشئ ملف ./.config باستخدام قيم الرموز الافتراضية إما من arch/$ARCH/defconfig أو arch/$ARCH/configs/${PLATFORM}_defconfig، اعتمادًا على المعمارية.
"make ${PLATFORM}_defconfig" ينشئ ملف ./.config باستخدام قيم الرموز الافتراضية من arch/$ARCH/configs/${PLATFORM}_defconfig. استخدم "make help" للحصول على قائمة بجميع المنصات المتاحة لمعماريتك.
"make allyesconfig" ينشئ ملف ./.config عن طريق تعيين قيم الرموز إلى 'y' قدر الإمكان.
"make allmodconfig" ينشئ ملف ./.config عن طريق تعيين قيم الرموز إلى 'm' قدر الإمكان.
"make allnoconfig" ينشئ ملف ./.config عن طريق تعيين قيم الرموز إلى 'n' قدر الإمكان.
"make randconfig" ينشئ ملف ./.config عن طريق تعيين قيم الرموز إلى قيم عشوائية.
"make localmodconfig" ينشئ تكوينًا بناءً على التكوين الحالي والوحدات المحملة (lsmod). يعطّل أي خيار وحدة غير مطلوب للوحدات المحملة.