
شجرة مصدر نواة Linux 4.1.15 مع تصحيحات لـ CVE-2023-28772، توفر مرجعًا لتحليل الثغرات وبحث الاستغلال.
إصدار نواة لينكس 4.x http://kernel.org/
هذه هي ملاحظات الإصدار لنواة لينكس الإصدار 4. اقرأها بعناية، فهي تشرح ماهية هذا الأمر، وكيفية تثبيت النواة، وماذا تفعل إذا حدث خطأ ما.
ما هو لينكس؟
لينكس هو نسخة من نظام التشغيل Unix، تمت كتابتها من الصفر بواسطة لينوس تورفالدز بمساعدة فريق غير رسمي من المخترقين عبر الإنترنت. يهدف إلى الامتثال لـ POSIX ومعيار Unix الموحد.
يحتوي على جميع الميزات التي تتوقعها في Unix حديث كامل المواصفات، بما في ذلك تعدد المهام الحقيقي، الذاكرة الافتراضية، المكتبات المشتركة، التحميل عند الطلب، الملفات التنفيذية المشتركة للنسخ عند الكتابة، إدارة الذاكرة السليمة، والشبكات متعددة الأكوام بما في ذلك 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) ومنفذ لمجمع جنو C (gcc) (جزء من مجموعة مجمعات جنو، GCC). تم أيضًا نقل لينكس إلى عدد من المعماريات بدون PMMU، على الرغم من أن الوظائف تكون محدودة إلى حد ما. تم أيضًا نقل لينكس إلى نفسه. يمكنك الآن تشغيل النواة كتطبيق مساحة مستخدم - وهذا يسمى UserMode Linux (UML).
التوثيق:
يوجد الكثير من التوثيق المتاح سواء في شكل إلكتروني على الإنترنت أو في الكتب، سواء كانت خاصة بلينكس أو تتعلق بأسئلة عامة حول Unix. أوصي بالاطلاع على الدلائل الفرعية للتوثيق على أي موقع 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" ستعرض التوثيق بالصيغة المطلوبة.
تثبيت مصدر النواة:
إذا قمت بتثبيت المصادر الكاملة، ضع ملف النواة المضغوط (tarball) في دليل حيث لديك صلاحيات (مثل دليل منزلك) وقم بفك ضغطه:
xz -cd linux-4.X.tar.xz | tar xvf -
استبدل "X" برقم إصدار أحدث نواة.
لا تستخدم المنطقة /usr/src/linux/! هذه المنطقة تحتوي على مجموعة (غير كاملة عادةً) من ملفات رأس النواة التي تستخدمها ملفات رأس المكتبة. يجب أن تتطابق مع المكتبة، ولا يجب أن تفسد بأي شيء يحدث أن يكون النواة الحالية.
يمكنك أيضًا الترقية بين إصدارات 4.x عن طريق التصحيح (patching). يتم توزيع التصحيحات بصيغة 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
بدلاً من ذلك، يمكن استخدام script patch-kernel لأتمتة هذه العملية. يحدد إصدار النواة الحالي ويطبق أي تصحيحات موجودة.
linux/scripts/patch-kernel linux
الوسيطة الأولى في الأمر أعلاه هي موقع مصدر النواة. يتم تطبيق التصحيحات من الدليل الحالي، ولكن يمكن تحديد دليل بديل كوسيطة ثانية.
تأكد من عدم وجود ملفات .o قديمة وتبعيات في الجوار:
cd linux make mrproper
يجب أن يكون لديك الآن المصادر مثبتة بشكل صحيح.
متطلبات البرامج
يتطلب تجميع وتشغيل نواة 4.x إصدارات محدثة من حزم برامج متنوعة. استشر Documentation/Changes للحصول على أرقام الإصدارات الدنيا المطلوبة وكيفية الحصول على تحديثات لهذه الحزم. احذر من أن استخدام إصدارات قديمة جدًا من هذه الحزم يمكن أن يسبب أخطاء غير مباشرة يصعب تتبعها، لذلك لا تفترض أنه يمكنك فقط تحديث الحزم عند ظهور مشاكل واضحة أثناء البناء أو التشغيل.
دليل البناء للنواة:
عند تجميع النواة، سيتم تخزين جميع ملفات المخرجات افتراضيًا مع كود مصدر النواة. باستخدام الخيار "make O=output/dir" يمكنك تحديد مكان بديل لملفات المخرجات (بما في ذلك .config). مثال:
كود مصدر النواة: /usr/src/linux-4.X
دليل البناء: /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 windows (Qt).
"make gconfig" أداة تكوين تعتمد على X windows (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). يقوم بتعطيل أي خيار وحدة غير ضرورية للوحدات المحملة.