تعريف جهاز محتكر

في سياق البرمجيات الحرة والمفتوحة المصدر، يُشار إلى البرمجيات الاحتكارية المتوفرة فقط كملفات ثنائية قابلة للتنفيذ باسم blob أو binary blob. يشير المصطلح عادةً إلى وحدة برنامج تشغيل جهاز يتم تحميلها في نواة نظام تشغيل مفتوح المصدر، ويُطبق أحيانًا أيضًا على التعليمات البرمجية التي تعمل خارج النواة، مثل صور البرامج الثابتة للنظام أو تحديثات الرموز الدقيقة أو برامج المستخدم .       استُخدم مصطلح blob لأول مرة في أنظمة إدارة قواعد البيانات لوصف مجموعة من البيانات الثنائية المخزنة ككيان واحد.

عندما يوفر بائعو أجهزة الكمبيوتر وثائق تقنية كاملة لمنتجاتهم، يتمكن مطورو أنظمة التشغيل من كتابة برامج تشغيل الأجهزة لتضمينها في نواة نظام التشغيل. ومع ذلك، لا يوفر بعض البائعين، مثل Nvidia، وثائق كاملة لبعض منتجاتهم، بل يوفرون برامج تشغيل ثنائية فقط. هذه الممارسة شائعة بشكل خاص في برامج تشغيل الرسومات المعجلة وأجهزة الشبكات اللاسلكية ووحدات التحكم RAID للأجهزة. والجدير بالذكر أن برامج التشغيل مغلقة المصدر نادرة جدًا في وحدات التحكم في واجهات الشبكات غير اللاسلكية، والتي يمكن تهيئتها دائمًا تقريبًا عبر الأدوات المساعدة القياسية (مثل ifconfig) فور إخراجها من عبوتها؛ ويعزو ثيو دي راادت من OpenBSD ذلك إلى العمل الذي قام به مطور FreeBSD واحد.  

 السياسة حسب المشروع 
تسعى بعض المشاريع المعتمدة من قبل FSF إلى توفير نظام تشغيل حر وستقوم بإزالة جميع الكتل الثنائية عندما لا تتوفر وثائق للأجهزة أو شفرة المصدر لبرامج تشغيل الأجهزة وجميع البرامج الثابتة المطبقة؛ وتشمل هذه المشاريع حزم نواة Linux-libre من FSFLA و Parabola و Devuan و Trisquel و LibreCMC. .  ومع ذلك، فإن الغالبية العظمى من المشاريع مفتوحة المصدر تميز بين برامج تشغيل الأجهزة الثنائية فقط (الكتل) والبرامج الثابتة الثنائية فقط (لا تعتبر كتل)   , مما يسمح بتوزيع بعض البرامج الثابتة الاحتكارية بحرية كجزء من نواة نظام التشغيل، وبدون موافقة بعض المساهمين الأساسيين، تدعم أيضًا استخدام برامج تشغيل الأجهزة الاحتكارية التي يتم توزيعها خارجيًا، مما يوفر واجهات توافق داخلية لمثل هذه برامج التشغيل الاحتكارية ومكونات مساحة المستخدم للعمل مع نظامها .  See Christos Zoulas's response to "Is sharing between Free/Open/NetBSD and the Linux kernel a common occurrence? And if so, does it go both ways?" توفر بعض هذه المشاريع خيارات لبناء النظام بدون برامج ثابتة خاصة، وبالتالي استبعاد التعليمات البرمجية الدقيقة بدون مصدر عند الطلب. 

يتميز مشروع OpenBSD بسياسة ملحوظة تتمثل في عدم قبول أي برامج تشغيل أجهزة ثنائية في شجرة المصدر الخاصة به، وكذلك عدم دعم أي مكونات برامج تشغيل أجهزة خاصة بطرف ثالث على منصته بشكل رسمي؛   مستشهداً ليس فقط باحتمال وجود ثغرات أمنية غير قابلة للكشف أو الإصلاح، ولكن أيضاً بالتعدي على انفتاح وحرية برمجياته.  تقوم مؤسسة البرمجيات الحرة (FSF) بحملة نشطة ضد الكتل الثنائية.  عتبر FSF أيضًا أن سياسة OpenBSD مصاغة بشكل مربك، حيث أن ”الكتل“ في مجتمع BSD تشير فقط إلى ما تعتبره برامج تشغيل غير حرة، ولا تنطبق على البرامج الثابتة الاحتكارية والرموز الدقيقة التي لا مصدر لها.  : بي إس دي تضمن مشروع Debian برامج ثابتة ثنائية حرة وغير حرة من نواة Linux، مع تمييز وفصل الحزم غير الحرة بوضوح  وفقًا لعقد Debian الاجتماعي. اعتبارًا من Debian 6.0، تمت إزالة تلك الكتل.  : ديبيان 

بالنسبة لـ OpenBSD، يدافع قائد المشروع ثيو دي راادت عن سياسة طلب حقوق التوزيع فقط للبرامج الثابتة للرموز الدقيقة. ”بمجرد توزيعها... على الأقل يعمل الجهاز.“ مشيرًا إلى أن البديل سيكون أن يقوم أعضاء مشروعه الصغير بكتابة برامج ثابتة مجانية بأنفسهم بلغة التجميع الخاصة بالعديد من الشرائح، يطلب ”لا تثقلوا علينا بمهام إضافية.“ على الرغم من ذلك، فإنه يفضل الشرائح التي تعمل بدون برامج ثابتة ويتحدث بحرارة عن التصميمات الآسيوية التي يصفها بأنها أبطأ في الوصول إلى السوق ولكنها أكثر نضجًا. Andrews, Jeremy (2006-05-02), "Interview: Theo de Raadt", KernelTrap, Jeremy Andrews, archived from the original on 2006-06-03
تصغير|300x300بك| برنامج تشغيل الرسوميات الخاص بنظام Linux،سوف تشارك نفس البنية التحتية لإدارة الحقوق الرقمية مع Mesa 3D . نظرًا لعدم وجود واجهة ABI مستقرة داخل النواة، كان على AMD أن تتكيف باستمرار مع الكائن الثنائي السابق الذي يستخدمه Catalyst.
في مجتمع تطوير نواة لينكس، أدلى لينوس تورفالدس بتصريحات قوية حول مسألة الوحدات النمطية الثنائية فقط، مؤكداً: ”أرفض حتى التفكير في تقييد يدي بسبب بعض الوحدات النمطية الثنائية فقط“، ومضيفاً: ”أريد أن يعرف الناس أن استخدامهم للوحدات الثنائية فقط هو مشكلتهم."  في عام 2008، وقع 176 مطورًا لنواة Linux على بيان موقف بشأن وحدات نواة Linux جاء فيه “نحن، مطورو نواة Linux الموقعون أدناه، نعتبر أي وحدة أو برنامج تشغيل لنواة Linux مغلق المصدر ضارًا وغير مرغوب فيه... لقد وجدنا مرارًا وتكرارًا أنها ضارة بمستخدمي Linux والشركات ونظام Linux البيئي الأكبر."  صرح غريغ كروه-هارتمان، مسؤول صيانة نواة Linux، أنه من غير القانوني إعادة توزيع الوحدات النمطية ذات المصدر المغلق لنواة Linux المرخصة بموجب رخصة GNU العامة . 

ومع ذلك، تحتوي نواة لينكس على برامج ثابتة مغلقة المصدر تتطلبها برامج تشغيل الأجهزة المختلفة.  كتب ألكسندر أوليفا، مسؤول صيانة لينكس-ليبر، وهي نسخة من نواة Linux تحاول إزالة جميع الكتل الثنائية، بما في ذلك الرموز الصغيرة التي لا مصدر لها، في عام 2011: ”لم يعد لينكس برنامجًا حرًا منذ عام 1996، عندما قبل السيد تورفالدس أول أجزاء من البرامج غير الحرة في توزيعات لينكس التي نشرها منذ عام 1991. على مدار هذه السنوات، بينما نمت هذه النواة بمعدل 14 ضعفًا، نمت كمية البرامج الثابتة غير الحرة التي تتطلبها برامج تشغيل لينكس بمعدل مقلق بلغ 83 ضعفًا." 

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

 المشاكل 
هناك العديد من الأسباب التي يمكنها أن تجعل الكتل الثنائية مشكلة. 

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

ثانياً، نظراً لعدم توفر كود المصدر، لا يمكن للمستخدمين تحسين برنامج التشغيل بسهولة، ولا يمكن نقله إلى بنى غير مدعومة أصلاً، ولا تكييفه ليعمل مع اختلافات طفيفة في الأجهزة أو تحديثه ليعمل في نوى جديدة ذات واجهة برمجة تطبيقات وبنية مختلفة.

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

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

 الاستخدام عبر الأغلفة 
الواجهة البرمجية هي برنامج يتيح لنظام تشغيل ما استخدام برنامج تشغيل جهاز ثنائي خاص مكتوب لنظام تشغيل آخر. ومن أمثلة الواجهات البرمجية NDISwrapper لنظام لينكس، و Project Evil لنظامي FreeBSD و NetBSD. تتيح هذه الواجهات البرمجية لنظم التشغيل هذه استخدام برامج تشغيل الشبكة المكتوبة لنظام ميكروسوفت ويندوز من خلال تطبيق واجهة برمجة التطبيقات NDIS الخاصة بشركة ميكروسوفت.

ومثال آخر على ذلك هو توفير طبقات التوافق بحيث يمكن استخدام الأدوات المساعدة الأجنبية لخدمة الأجهزة. تتضمن الأمثلة بعض برامج تشغيل وحدة تحكم RAID في FreeBSD ، حيث يتعين على مسؤول النظام تمكين طبقة توافق Linux في FreeBSD وشراء الكتل الثنائية الخاصة بـ Linux بشكل مستقل مباشرة من الشركة المصنعة للأجهزة من أجل مراقبة الأجهزة وصيانتها.    حوالي عام 2005، دفعت هذه الحالة OpenBSD إلى إنشاء ونشر مفاهيم bio(4) و bioctl و sensor drive كحل بديل لمراقبة RAID ،   وقد وجد كلا المفهومين طريقهما لاحقًا إلى NetBSD أيضًا.

 البرامج الثابتة للجهاز 
البرامج الثابتة هي البرامج المطلوبة بواسطة المتحكمات الدقيقة الموجودة على اللوحة والتي تأتي مصحوبة ببعض الأجهزة، ولا تعتبر عمومًا كتلة ثنائية.  : بي إس دي  : ... في العديد من الأجهزة، يتم تخزين البرامج الثابتة في ذاكرة فلاش غير متطايرة مدمجة، ولكن لتقليل التكاليف وتسهيل إصلاح الأخطاء، تحتوي بعض الأجهزة على ذاكرة وصول عشوائي ثابتة فقط وتتطلب من نظام التشغيل المضيف تحميل البرامج الثابتة / التعليمات البرمجية الدقيقة في كل مرة يتم تشغيلها. على الرغم من أن البرامج الثابتة موجودة في برنامج تشغيل نظام التشغيل، إلا أنه يتم نسخها إلى الجهاز فقط ولا يتم تنفيذها بواسطة وحدة المعالجة المركزية، مما يزيل المخاوف بشأن العيوب الأمنية الإضافية مقارنة بما هو ممكن بالفعل مع هجوم DMA حتى لو تم تخزين البرامج الثابتة بالفعل داخل الجهاز في جميع الأوقات. يقبل مشروع OpenBSD صور البرامج الثابتة/ الرموز الدقيقة الثنائية وسيعيد توزيع هذه الصور إذا سمح الترخيص بذلك؛   إذا لم يسمح البائع بإعادة التوزيع المجاني وغير المشروط، فقد يتم توفير تعليمات الجهاز حول جلب هذه الصور في شجرة المنافذ (التي تمنع بعض الأجهزة اللاسلكية المرهقة (على سبيل المثال، Intel Wireless) من التوفر أثناء التثبيت الأولي).  في تطبيقات Microsoft Windows، قد يتم تضمين ملف التعليمات البرمجية الدقيقة الثنائي في برنامج تشغيل الجهاز SYS / DLL / VXD مباشرةً، على عكس ملف التعليمات البرمجية الدقيقة المنفصل.

 النظام الأساسي للإدخال والإخراج وواجهة البرنامج الثابت الممتد 
تصغير| SeaBIOS ، وهو تطبيق مفتوح المصدر لنظام النظام الأساسي للإدخال والإخراج، يعمل كحمولة تمهيد أساسية على جهاز لينوفو ThinkPad X60
يعد BIOS ، الذي يعمل كمحمل إقلاع ويدعم تطبيقات الوضع الحقيقي القديمة، مكونًا أساسيًا للعديد من أجهزة الكمبيوتر المتوافقة مع IBM . في أواخر تسعينيات القرن العشرين، بدأ العمل على EFI (واجهة البرامج الثابتة القابلة للتوسعة) بهدف نقل BIOS القديم إلى واجهة حديثة مع نموذج برنامج تشغيل معياري. EFI هو مصدر مغلق وتم اعتماده في نهاية المطاف من قبل العديد من مصنعي الأجهزة الرائدين في الصناعة باعتباره UEFI (واجهة البرامج الثابتة القابلة للتوسعة الموحدة). تم تطوير EDK (مجموعة تطوير EFI) لمساعدة مشاريع تطوير البرامج الثابتة EFI. 

في أواخر التسعينيات أيضًا، تم البدء في مشروع coreboot لإنشاء بديل مفتوح المصدر لنظام BIOS القديم من الصفر. Vincent Zimmer; Jiming Sun; Marc Jones; Stefan Reinauer (2015). Embedded Firmware Solutions: Development Best Practices for the Internet of Things. Apress. p. 121. ISBN 9781484200704. يتم تنظيم مجتمع مطوري coreboot حول Stefan Reinauer ويقوده مطورو البرامج الثابتة الذين لديهم حقوق الالتزام.  على الرغم من أن البرامج الثابتة الثنائية ذات المصدر المغلق كانت في قلب بنية x86 ، فإن coreboot لا يتضمن سوى عدد قليل من الملفات الثنائية الخاصة الضرورية لتزويد المستخدمين بدعم الأجهزة على مستوى أساسي.  البديل المفتوح المصدر تمامًا لـ BIOS وUEFI هو libreboot ، والذي تم الترويج له بواسطة مؤسسة البرمجيات الحرة (FSF). 


 روابط خارجية 


 KernelTrap article on Damien Bergamini's wpi(4) driver, a blobless ipw3945 alternative for OpenBSD
 KernelTrap interview with Jonathan Gray and Damien Bergamini regarding binary blobs
 The Black Hat Wireless Exploit Interview, Verbatim by Brian Krebs on the Washington Post's website, archived on May 5, 2012
 A creative example of the value of free drivers, LWN.net

 مراجع 

تصنيف:إقلاع
تصنيف:برنامج تعريف
تصنيف:برمجيات ثابتة
تصنيف:وثائق وثقافة البرمجيات الحرة