kpatch
kpatch هي ميزة في نواة لينكس تُتيح تطبيق التحديثات الأمنية أثناء تشغيل النواة ، مما يسمح بتطبيق تصحيحات النواة وهي لا تزال قيد التشغيل. ومن خلال تجنب الحاجة إلى إعادة تشغيل النظام بنواة جديدة تحتوي على التصحيحات المطلوبة، تهدف kpatch إلى زيادة وقت تشغيل النظام وتوافره إلى أقصى حد . في الوقت نفسه، تسمح kpatch بتطبيق التحديثات الأمنية المتعلقة بالنواة دون تأجيلها إلى فترات توقف مجدولة . [ 1 ] [ 3 ] داخليًا، تسمح kpatch باستبدال وظائف كاملة في النواة قيد التشغيل بنسخها المُصحّحة، وذلك بأمان عن طريق إيقاف جميع العمليات الجارية أثناء تنفيذ التحديث المباشر. [ 4 ]
تم تطوير kpatch بواسطة شركة Red Hat ، وشفرته المصدرية مرخصة بموجب شروط رخصة جنو العمومية العامة الإصدار 2 (GPLv2). [ 1 ] في مايو 2014، تم تقديم kpatch لإدراجه في النواة الرئيسية لنظام Linux ، [ 5 ] وتم دمج الأسس البسيطة للتصحيح المباشر في النواة الرئيسية لنظام Linux في الإصدار 4.0، الذي صدر في 12 أبريل 2015. [ 6 ]
المكونات الداخلية

يتكون kpatch داخليًا من جزأين : وحدة النواة الأساسية التي تُنفذ آلية الترقيع المباشر عن طريق تعديل العمليات الداخلية للنواة، ومجموعة من أدوات المستخدم التي تُجهز وحدات النواة الفردية للترقيع الفوري من اختلافات المصدر وتُدير تطبيقها. يتم ترقيع النواة المباشر على مستوى الدوال ، ما يعني أن kpatch يستطيع استبدال دوال كاملة في النواة قيد التشغيل بنسخها المُرقعة باستخدام إمكانيات ftrace لتجاوز الإصدارات القديمة من الدوال؛ وبهذه الطريقة، يُمكن التراجع عن الترقيع الفوري بسهولة. لا يُمكن إجراء أي تغييرات على هياكل البيانات الداخلية للنواة؛ ومع ذلك، نادرًا ما تحتوي تصحيحات الأمان ، التي تُعد من الخيارات الطبيعية للاستخدام مع kpatch، على تغييرات في هياكل بيانات النواة. [ 4 ] [ 5 ] [ 7 ]
يضمن kpatch تطبيق التحديثات العاجلة بشكل ذري وآمن من خلال إيقاف جميع العمليات الجارية أثناء تطبيق التحديث، والتأكد من عدم تشغيل أي من العمليات المتوقفة داخل الدوال المراد تحديثها. يُبسط هذا النهج آلية التحديث المباشر ويمنع بعض المشكلات المرتبطة بكيفية استخدام هياكل البيانات بين النسخ الأصلية والمُحدثة من الدوال. مع ذلك، يُتيح هذا النهج إمكانية فشل التحديث العاجل، ويُضيف قدرًا ضئيلاً من التأخير اللازم لإيقاف جميع العمليات الجارية. [ 4 ] [ 5 ] [ 7 ]
تاريخ
أعلنت شركة Red Hat عن برنامج kpatch وأصدرته علنًا في فبراير 2014 بموجب شروط رخصة جنو العمومية العامة الإصدار 2 ( GPLv2 )، [ 1 ] قبل فترة وجيزة من إصدار SUSE لتطبيقها الخاص لتصحيح نواة النظام المباشر المسمى kGraft . [ 8 ] دُمج kpatch في نواة لينكس الرئيسية، وقُدِّم لإدراجه في مايو 2014. [ 5 ] [ 9 ]
تم تضمين kpatch في Red Hat Enterprise Linux 7.0، الذي تم إصداره في 10 يونيو 2014، كمعاينة تقنية . [ 10 ] [ 11 ]
تم دمج الأسس البسيطة لتصحيح نواة لينكس أثناء التشغيل في نواة لينكس الرئيسية في الإصدار 4.0، الذي صدر في 12 أبريل 2015. وتعتمد هذه الأسس بشكل أساسي على وظيفة ftrace في النواة ، وتشكل نواة مشتركة قادرة على دعم التصحيح الفوري باستخدام كلٍ من kpatch وkGraft، وذلك من خلال توفير واجهة برمجة تطبيقات (API) لوحدات النواة التي تحتوي على التصحيحات الفورية، وواجهة ثنائية للتطبيقات (ABI) لأدوات إدارة مساحة المستخدم. ومع ذلك، فإن النواة المشتركة المضمنة في نواة لينكس 4.0 تدعم فقط بنية x86 ، ولا توفر أي آليات لضمان اتساق مستوى الوظائف أثناء تطبيق التصحيحات الفورية. [ 6 ] [ 12 ] [ 13 ]
منذ أبريل 2015، يجري العمل على نقل kpatch إلى نواة التصحيح المباشر المشتركة التي توفرها نواة لينكس الرئيسية. [ 13 ] ومع ذلك، تأخر تنفيذ آليات الاتساق المطلوبة على مستوى الدوال لأن مكدسات الاستدعاء التي توفرها نواة لينكس قد تكون غير موثوقة في الحالات التي تتضمن كود تجميع بدون إطارات مكدس مناسبة ؛ ونتيجة لذلك، لا يزال العمل على النقل جارياً حتى سبتمبر 2015. في محاولة لتحسين موثوقية مكدسات استدعاءات النواة، تم تطوير أداة مخصصة لفحص سلامة المكدسات في مساحة المستخدم. [ 14 ] [ 15 ]
انظر أيضاً
- تحديث البرامج الديناميكي ، وهو مجال بحثي يركز على ترقية البرامج أثناء تشغيلها.
- kexec ، وهي طريقة لتحميل نواة لينكس جديدة بالكامل من نظام قيد التشغيل
- Ksplice و KernelCare هما تقنيتان أخريان لتحديث نواة لينكس أثناء التشغيل، تم تطويرهما بواسطة Ksplice, Inc. (التي استحوذت عليها Oracle لاحقًا) و CloudLinux على التوالي.
مراجع
- 1 2 3 4 جوش بويمبوف؛ سيث جينينغز (26 فبراير 2014). "تقديم kpatch: ترقيع النواة الديناميكي" . redhat.com . تم الاطلاع عليه في 23 يوليو 2014 .
- ↑ "الإصدار 0.9.11" . 28 أكتوبر 2025. تم الاطلاع عليه في 28 أكتوبر 2025 .
- ↑ شون مايكل كيرنر (6 يونيو 2014). "تحديثات نواة لينكس تصبح ديناميكية" . سيرفر واتش . تم الاطلاع عليه في 23 يوليو 2014 .
- 1 2 3 جوناثان كوربيت (7 مايو 2014). "أول مشاركة في kpatch" . LWN.net . تم الاطلاع عليه في 23 يوليو 2014 .
- 1 2 3 4 جوش بويمبوف (1 مايو 2014). "kpatch: ترقيع النواة الديناميكي" . LWN.net . تم الاطلاع عليه في 23 يوليو 2014 .
- 1 2 "نواة لينكس 4.0، القسم 1.2. الترقيع المباشر" . kernelnewbies.org . 26 أبريل 2015. تم الاطلاع عليه في 27 أبريل 2015 .
- 1 2 3 سيث جينينغز؛ جوش بويمبوف (10 يونيو 2014). "التصحيح الديناميكي لنواة النظام" . ريد هات . تم الاطلاع عليه في 23 يوليو 2014 .
- ↑ "SUSE تُصدر kGraft لتحديث نواة لينكس أثناء التشغيل" . SUSE . 27 مارس 2014. تم الاطلاع عليه بتاريخ 11 فبراير 2015 .
- ↑ مايكل لارابيل (1 مايو 2014). "SUSE تنشر kGraft، وRed Hat تنشر رقع Kpatch" . Phoronix . تم الاطلاع عليه في 23 يوليو 2014 .
- ↑ "ملاحظات إصدار Red Hat Enterprise Linux 7.0، الفصل 5. النواة" . Red Hat . 15 يوليو 2014. تم الاطلاع عليه في 23 يوليو 2014 .
- ↑ كارلوس سانشيز (26 يونيو 2014). "ريد هات تُصدر ريد هات إنتربرايز لينكس 7 مع دعم مُحسّن لحاويات لينكس" . infoq.com . تاريخ الاطلاع: 23 يوليو 2014 .
- ↑ جوناثان كوربيت (25 فبراير 2015). "مرحلة صعبة في عملية التحديث المباشر" . LWN.net . تم الاطلاع عليه في 27 أبريل 2015 .
- 1 2 "شجرة مصدر نواة لينكس: kernel/git/torvalds/linux.git: سحب بنية التحديث المباشر من جيري كوسين" . kernel.org . 11 فبراير 2015. تم الاطلاع عليه في 27 أبريل 2015 .
- ↑ جوناثان كوربيت (30 سبتمبر 2015). "التحقق من صحة المكدس في وقت الترجمة" . LWN.net . تم الاطلاع عليه في 2 أكتوبر 2015 .
- ↑ جوش بويمبوف (24 سبتمبر 2015). "توثيق نواة لينكس: Documentation/stack-validation.txt (من رقعة الإصدار 13)" . LWN.net . تم الاطلاع عليه في 2 أكتوبر 2015 .
روابط خارجية
- برنامج أمان مجاني مبرمج بلغة C
- تحديث نواة لينكس المباشر
- برامج مجانية مخصصة لنظام لينكس فقط
- برنامج يستخدم رخصة جنو العمومية العامة
