لماذا أحتاج إلى إعادة تجميع وير حدة النواة بعد نواة لينكس الترقية؟

StackOverflow https://stackoverflow.com/questions/827862

سؤال

وبعد ترقية نواة لينكس، لا يمكن بدء تشغيل الخادم برنامج VMWare بلدي حتى باستخدام vmware-config.pl للقيام ببعض الأعمال إعادة التكوين (بما في ذلك بناء بعض وحدات النواة).

إذا قمت بتحديث نافذتي برنامج VMWare المضيف مع أحدث حزمة خدمة ل Windows، وعادة ما لا تحتاج إلى القيام بأي شيء لتشغيل برنامج VMWare.

وماذا يعمل برنامج VMWare مختلفة بين لينكس وويندوز؟ هل هذا الإجراء re-ترجمة يجلب أي BENIFITS على منصة لينكس على ويندوز؟

هل كانت مفيدة؟

المحلول

والذهاب قراءة href="http://www.kroah.com/log/linux/stable_api_nonsense.html" واجهة برنامج تشغيل نواة لينكس .

<اقتباس فقرة>   

وهذا يتم كتابة في محاولة لتفسير لماذا لم يكن لديك لينكس واجهة النواة الثنائية، كما أنها لا تحتوي على واجهة نواة مستقرة. يرجى ندرك أن توضح هذه المقالة واجهات kernel_ _in، وليس النواة إلى واجهات مساحة المستخدم. نواة إلى واجهة مساحة المستخدم هي التي تستخدم برامج التطبيقات، واجهة syscall. هذا التفاعل هو _very_ مستقرة مع مرور الوقت، وسوف لا كسر. لدي البرامج القديمة التي بنيت على نواة 0.9something قبل الذي لا يزال يعمل على ما يرام على أحدث إصدار 2.6 النواة. هذه الواجهة هي التي يمكن للمستخدمين والمبرمجين تطبيق تعول على أن تكون مستقرة.

ويعكس وجهة نظر جزء كبير من المطورين نواة لينكس: حرية تغيير تفاصيل واجهات برمجة التطبيقات التنفيذ في نواة في أي وقت يسمح لهم بتطوير أسرع وأفضل بكثير.

وبدون وعود حفظ واجهات في نواة متطابقة من الافراج عن الإفراج عنهم، لا توجد وسيلة لحدة النواة الثنائية مثل لبرنامج VMWare للعمل بشكل موثوق على حبات متعددة.

وكمثال على ذلك، إذا تغيرت بعض الهياكل على إطلاق نواة جديدة (للحصول على أداء أفضل أو المزيد من الميزات أو أيا كان السبب الآخر)، قد يسبب حدة برنامج VMWare الثنائية أضرار كارثية باستخدام تخطيط الهيكل القديم. وتجميع وحدة ثانية من مصدر التقاط تخطيط الهيكل الجديد، وبالتالي تتاح له فرصة أفضل للعمل - وإن كان لا يزال ليس 100٪، في مجالات حالة تم إزالتها أو إعادة تسميته أو إعطاء أغراض مختلفة

إذا تغير وظيفة قائمة حجتها، أو تتم إعادة تسمية أو جعلت خلاف ذلك لم تعد متوفرة، ولا حتى اعادة تجميع من نفس رمز مصدر ستعمل. وستكون الوحدة أن تتكيف مع النواة الجديدة. منذ الجميع (يجب) أن يكون المصدر و(أن تجد شخص) هو قادرا على تعديل لتناسب. "دفع العمل إلى نهاية العقد" هو فكرة مشتركة في كل من الشبكات والبرمجيات الحرة: منذ الموارد [على هامش] / [من المطورين خارج نواة لينكس] هي أكبر من الموارد المحدودة [من العمود الفقري] / [من مطوري لينكس]، والمفاضلة لجعل الأول القيام به هو مقبول أكثر من العمل.

من ناحية أخرى، حققت مايكروسوفت القرار الذي يجب أن الحفاظ على التوافق سائق ثنائي قدر الإمكان - لديهم أي خيار، كما انهم يلعبون في عالم الملكية. في الطريق، وهذا يجعل من الاسهل بكثير للمطورين الخارجي الذي لم يعد يواجه هدف متحرك، وبالنسبة للمستخدمين النهائيين الذين لم تضطر إلى تغيير أي شيء. على الجانب السلبي، وهذا يفرض مايكروسوفت للحفاظ الوراء التوافق، والتي هي (في أحسن الأحوال) لمطوري مايكروسوفت وتستغرق وقتا طويلا (في أسوأ الأحوال) غير فعال، وأسباب الخلل، ويمنع التقدم إلى الأمام.

نصائح أخرى

ولينكس ليس لديها نواة مستقرة ABI - أشياء مثل التخطيط الداخلي للdatastructures، الخ التغييرات من إصدار لآخر. برنامج VMWare يحتاج إلى إعادة بناء لاستخدام ABI في النواة الجديدة.

وعلى صعيد آخر، ويندوز لديه نواة مستقرة جدا ABI هذا لا يغير من حزمة الخدمات إلى حزمة الخدمة.

لإضافة إلى الإجابة bdonlan، والتوافق ABI هو مختلطة. من ناحية، فإنه يسمح لك لتوزيع وحدات والسائقين الثنائية التي ستعمل مع إصدارات أحدث من النواة. من ناحية أخرى، فإنه يفرض المبرمجين نواة لإضافة الكثير من التعليمات البرمجية الغراء للاحتفاظ التوافق. لأن لينكس مفتوح المصدر، ولأن نواة للمطورين حتى سواء أكانت حتى يسمح ، و لا تعتبر القدرة على توزيع وحدات ثنائية هامة. وعلى الجانب العلوي، ومطوري نواة لينكس لا داعي للقلق حول التوافق ABI عند تغيير datastructures لتحسين النواة. وعلى المدى الطويل، وهذا يؤدي في التعليمات البرمجية نواة أنظف.

وانها نتيجة لينكس وويندوز التي يجري تطويرها في البيئات والتوقعات الثقافية المختلفة: HTTP: // www.joelonsoftware.com/articles/Biculturalism.html . باختصار: تم تصميم Windows لتكون مناسبة للمستخدمين، في حين تتطور لينكس لتكون مناسبة لمطوري المصادر المفتوحة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top