
شجرة مصدر نواة لينكس 3.0.35 مع التركيز على CVE-2019-10220، توفر مرجعًا لتحليل الثغرات وأبحاث الاستغلال.
إصدار نواة لينكس 3.x http://kernel.org/
هذه هي ملاحظات الإصدار لإصدار لينكس 3. اقرأها بعناية، فهي تخبرك ما هذا كل شيء، وتشرح كيفية تثبيت النواة، وماذا تفعل إذا حدث خطأ ما.
ما هو لينكس؟
لينكس هو نسخة من نظام التشغيل يونكس، كُتب من الصفر بواسطة لينوس تورفالدز بمساعدة فريق غير مترابط من المخترقين عبر الإنترنت. يهدف إلى الامتثال لـ POSIX ومواصفات يونكس الموحدة.
يتميز بجميع الميزات التي تتوقعها في نظام يونكس حديث كامل، بما في ذلك تعدد المهام الحقيقي، الذاكرة الافتراضية، المكتبات المشتركة، التحميل عند الطلب، الملفات التنفيذية المشتركة ذات النسخ عند الكتابة، إدارة الذاكرة السليمة، والشبكات متعددة الأكوام بما في ذلك IPv4 و IPv6.
يتم توزيعه بموجب رخصة جنو العمومية العامة - انظر ملف COPYING المرفق لمزيد من التفاصيل.
على أي أجهزة يعمل؟
على الرغم من أنه تم تطويره في البداية لأجهزة الكمبيوتر الشخصية 32-bit x86 (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، وصفحات الدليل، من بين أمور أخرى. بعد التثبيت، "make psdocs"، "make pdfdocs"، "make htmldocs"، أو "make mandocs" ستعرض التوثيق بالتنسيق المطلوب.
تثبيت مصدر النواة:
إذا قمت بتثبيت المصادر الكاملة، ضع ملف النواة المضغوط في دليل لديك فيه صلاحيات (مثل دليل منزلك) وقم بفك ضغطه:
gzip -cd linux-3.X.tar.gz | tar xvf -
أو bzip2 -dc linux-3.X.tar.bz2 | tar xvf -
استبدل "XX" برقم إصدار أحدث نواة.
لا تستخدم المنطقة /usr/src/linux/! هذه المنطقة تحتوي على مجموعة (عادة غير كاملة) من رؤوس النواة التي تستخدمها ملفات رؤوس المكتبة. يجب أن تتطابق مع المكتبة، ولا يجب أن تتلف بسبب أي نواة اليوم.
يمكنك أيضًا الترقية بين إصدارات 3.x عن طريق التصحيح. يتم توزيع التصحيحات بتنسيق gzip التقليدي وتنسيق bzip2 الأحدث. للتثبيت عن طريق التصحيح، احصل على جميع ملفات التصحيح الأحدث، وادخل إلى الدليل الأعلى لمصدر النواة (linux-3.x) ونفذ:
gzip -cd ../patch-3.x.gz | patch -p1
أو bzip2 -dc ../patch-3.x.bz2 | patch -p1
(كرر xx لجميع الإصدارات الأكبر من إصدار شجرة المصدر الحالية، بالترتيب) ويجب أن يكون كل شيء على ما يرام. قد ترغب في إزالة ملفات النسخ الاحتياطي (xxx~ أو xxx.orig)، وتأكد من عدم وجود تصحيحات فاشلة (xxx# أو xxx.rej). إذا كانت موجودة، فقد ارتكبت أنت أو أنا خطأ.
على عكس التصحيحات لنواة 3.x، فإن التصحيحات لنواة 3.x.y (المعروفة أيضًا باسم نواة المستقرة) ليست تزايدية بل يتم تطبيقها مباشرة على نواة 3.x الأساسية. يرجى قراءة Documentation/applying-patches.txt لمزيد من المعلومات.
بدلاً من ذلك، يمكن استخدام البرنامج النصي patch-kernel لأتمتة هذه العملية. يحدد إصدار النواة الحالي ويطبق أي تصحيحات موجودة.
linux/scripts/patch-kernel linux
الوسيطة الأولى في الأمر أعلاه هي موقع مصدر النواة. يتم تطبيق التصحيحات من الدليل الحالي، ولكن يمكن تحديد دليل بديل كوسيطة ثانية.
إذا كنت تقوم بالترقية بين الإصدارات باستخدام تصحيحات السلسلة المستقرة (على سبيل المثال، patch-3.x.y)، لاحظ أن هذه "الإصدارات النقطية" هي ليست تزايدية ويجب تطبيقها على شجرة 3.x الأساسية. على سبيل المثال، إذا كانت نواتك الأساسية هي 3.0 وتريد تطبيق تصحيح 3.0.3، فلا تقم ولا يجب عليك أولاً تطبيق تصحيحات 3.0.1 و 3.0.2. بالمثل، إذا كنت تعمل بنواة الإصدار 3.0.2 وتريد الانتقال إلى 3.0.3، يجب عليك أولاً عكس تصحيح 3.0.2 (أي patch -R) قبل تطبيق تصحيح 3.0.3. يمكنك قراءة المزيد حول هذا في Documentation/applying-patches.txt
تأكد من عدم وجود ملفات .o قديمة وتبعيات متناثرة:
cd linux
make mrproper
يجب أن تكون الآن قد قمت بتثبيت المصادر بشكل صحيح.
متطلبات البرامج
يتطلب تجميع وتشغيل نوى 3.x إصدارات محدثة من حزم البرامج المختلفة. راجع Documentation/Changes للحصول على أرقام الإصدارات الدنيا المطلوبة وكيفية الحصول على تحديثات لهذه الحزم. احذر من أن استخدام إصدارات قديمة جدًا من هذه الحزم يمكن أن يسبب أخطاء غير مباشرة يصعب تتبعها، لذا لا تفترض أنه يمكنك فقط تحديث الحزم عند ظهور مشاكل واضحة أثناء البناء أو التشغيل.
دليل البناء للنواة:
عند تجميع النواة، سيتم تخزين جميع ملفات الإخراج افتراضيًا مع رمز مصدر النواة. باستخدام الخيار "make O=output/dir" يمكنك تحديد مكان بديل لملفات الإخراج (بما في ذلك .config). مثال: رمز مصدر النواة: /usr/src/linux-3.N دليل البناء: /home/name/build/kernel
لتكوين وبناء النواة استخدم: cd /usr/src/linux-3.N 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 windows (Qt). "make gconfig" أداة تكوين قائمة على X windows (Gtk). "make oldconfig" افتراض جميع الأسئلة بناءً على محتويات ملف ./.config الحالي والسؤال عن رموز التكوين الجديدة. "make silentoldconfig" مثل أعلاه، لكن يتجنب إزدحام الشاشة بأسئلة تمت الإجابة عليها بالفعل. بالإضافة إلى تحديث التبعيات. "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 عن طريق تعيين قيم الرموز إلى قيم عشوائية.
يمكنك العثور على مزيد من المعلومات حول استخدام أدوات تكوين نواة لينكس في Documentation/kbuild/kconfig.txt.