
شجرة مصدر نواة لينكس 4.1.15 مع التركيز على CVE-2018-5873، لتوفير مرجع لتحليل الثغرات وأبحاث الاستغلال.
Linux kernel release 4.x http://kernel.org/
هذه هي ملاحظات الإصدار لنظام لينكس الإصدار 4. اقرأها بعناية، فهي تخبرك ما هو هذا الأمر، وتشرح كيفية تثبيت النواة، وماذا تفعل إذا حدث خطأ ما.
ما هو لينكس؟
لينكس هو نسخة من نظام التشغيل يونكس، مكتوب من الصفر بواسطة لينوس تورفالدس بمساعدة فريق غير مترابط من المقرصنين عبر الإنترنت. يهدف إلى الامتثال لمعايير POSIX و Single UNIX Specification.
يحتوي على جميع الميزات التي تتوقعها في نظام يونكس حديث كامل، بما في ذلك تعدد المهام الحقيقي، الذاكرة الافتراضية، المكتبات المشتركة، التحميل عند الطلب، الملفات التنفيذية المشتركة للنسخ عند الكتابة، إدارة الذاكرة السليمة، والشبكات متعددة الطبقات بما في ذلك IPv4 و IPv6.
يتم توزيعه بموجب رخصة GNU العامة - راجع ملف COPYING المرفق لمزيد من التفاصيل.
على أي أجهزة يعمل؟
على الرغم من أنه تم تطويره في الأصل لأجهزة الكمبيوتر الشخصية 32 بت المعتمدة على 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، على الرغم من أن الوظائف محدودة بشكل واضح. تم أيضًا نقل لينكس إلى نفسه. يمكنك الآن تشغيل النواة كتطبيق للمستخدم - وهذا يسمى لينكس وضع المستخدم (UML).
الوثائق:
هناك الكثير من الوثائق المتاحة سواء في شكل إلكتروني على الإنترنت أو في الكتب، سواء كانت خاصة بلينكس أو تتعلق بأسئلة يونكس العامة. أوصي بالاطلاع على الدلائل الفرعية للوثائق على أي موقع FTP للينكس للحصول على كتب LDP (مشروع توثيق لينكس). هذا الملف README ليس المقصود منه أن يكون وثائق للنظام: هناك مصادر أفضل بكثير متاحة.
هناك ملفات README مختلفة في الدليل الفرعي Documentation/: تحتوي هذه عادةً على ملاحظات تثبيت خاصة بالنواة لبعض برامج التشغيل على سبيل المثال. راجع Documentation/00-INDEX للحصول على قائمة بما هو موجود في كل ملف. يرجى قراءة ملف Changes، لأنه يحتوي على معلومات حول المشكلات التي قد تنتج عن ترقية النواة الخاصة بك.
الدليل الفرعي Documentation/DocBook/ يحتوي على عدة أدلة لمطوري النواة والمستخدمين. يمكن عرض هذه الأدلة بعدة تنسيقات: PostScript (.ps)، PDF، HTML، وصفحات الدليل، من بين أخرى. بعد التثبيت، "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 (المعروفة أيضًا باسم النوى المستقرة) ليست تزايدية ولكنها بدلاً من ذلك تطبق مباشرة على النواة الأساسية 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 للحصول على الحد الأدنى لأرقام الإصدارات المطلوبة وكيفية الحصول على تحديثات لهذه الحزم. احذر من أن استخدام إصدارات قديمة جدًا من هذه الحزم يمكن أن يسبب أخطاء غير مباشرة يصعب تتبعها، لذلك لا تفترض أنه يمكنك فقط تحديث الحزم عند ظهور مشاكل واضحة أثناء البناء أو التشغيل.
دليل BUILD للنواة:
عند تجميع النواة، سيتم تخزين جميع ملفات الإخراج افتراضيًا مع كود مصدر النواة. باستخدام الخيار "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). يعطل أي خيار وحدة غير ضروري للوحدات المحملة.