ما هو مشروع Yocto: دليل مضمن كامل

  • يتيح لك مشروع Yocto إنشاء توزيعات Linux مضمنة مخصصة وقابلة للتكرار استنادًا إلى الطبقات والوصفات وBitBake.
  • يجمع بين OpenEmbedded وPoky ونظام بيئي قوي (Toaster وeSDK وCROPS) لتسريع عمليات البناء والصيانة.
  • إنه يوفر استراتيجيات تحديث مرنة وخيارات أمان (SELinux وIMA وSecure Boot) وحوكمة قوية.

مشروع يوكتو للأنظمة المضمنة

إذا كنت مهتمًا بالتقنيات المضمنة أو إنترنت الأشياء، فسوف تصادف عاجلاً أم آجلاً مشروع Yocto. إنه الأساس الذي تقوم عليه آلاف الفرق ببناء توزيع Linux "الخاص" بها.مُصمّمة خصيصًا لتناسب أجهزتك ومتطلباتك. إنها ليست مجرد توزيعة أخرى، بل مجموعة من الأدوات والبيانات الوصفية والعمليات التي ترتقي بالتخصيص وإمكانية التكرار إلى مستوى جديد.

في هذا الدليل سوف تفهم، دون مزيد من اللغط، ما هو Yocto وما هو ليس كذلك، ولماذا هو منتشر على نطاق واسع، وكيف يتكون (OpenEmbedded، BitBake وPoky)، وما يتكون منه نموذج الطبقة، وما هي الأدوات التي تدور حوله (Toaster، CROPS، eSDK...)، كيف يتم بناء الصورة فعليًا، وما هي خيارات التحديث المتاحة، وما تقدمه من حيث الأمان، وكيف يتم إدارة المشروع وإصداراته.بالإضافة إلى ذلك، سوف ترى مفاهيم وأمثلة عملية (reTerminal/Raspberry Pi) التي ستساعدك على تطبيقها في حياتك اليومية.

ما هو مشروع يوكتو؟

مشروع Yocto عبارة عن مبادرة تعاونية ترعاها مؤسسة Linux Foundation والتي توفر العناصر الأساسية لإنشاء توزيعات Linux مخصصة للأجهزة المضمنة وأجهزة إنترنت الأشياء. بغض النظر عن بنية الأجهزةتم تأسيسها في عام 2010 وأصدرت أول نسخة لها في عام 2011، بدعم من حوالي عشرين منظمة وبالتعاون الوثيق مع OpenEmbedded.

الغرض منه هو تحسين دورة حياة البرمجيات المضمنة: فهو يوفر أدوات قابلة للتشغيل المتبادل، وبيانات وصفية، وسير عمل لجعل بناء النظام سريعًا وقابلًا للتكرار وقابلًا للتخصيص بالكامل. يصف مزيج Yocto + OpenEmbedded + BitBake كيفية الحصول على نظامك وتكوينه وتجميعه وحزمه وتجميعه. بدقة جراحية.

في عام 2018، تعاونت ARM وIntel في Yocto لتسهيل مشاركة التعليمات البرمجية في الأنظمة المضمنة، تعزيز حيادية المنصة ودعم البنى المتعددةاليوم، يتم استخدام المشروع في أجهزة تتراوح من اللوحات المتواضعة إلى المنتجات الصناعية المعقدة.

لا يقيدك Yocto: فهو لا يعتمد على البائع ولا على تنسيق الحزمة، لذا يمكنك الاختيار بين deb أو rpm أو ipk واتباع نموذج بناء حتمي. بالإضافة إلى صور الأجهزة، يمكنك إنشاء سلاسل أدوات ومجموعات تطوير برمجيات مخصصة. لتطوير التطبيقات وتصحيح أخطائها.

مشروع يوكتو للهندسة المعمارية

لماذا تستخدم Yocto في المضمنة

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

سبب مهم آخر هو إمكانية إعادة الإنتاج. يمكن إدارة إصدارات كل شيء (الطبقات، الوصفات، التكوينات) في المستودعات. الذي يسمح ببناء نفس الصورة في بيئات وأوقات مختلفةيتناسب هذا مع CI/CD ويوفر إمكانية التتبع لضمان الجودة والامتثال.

كما أنها تتميز بمرونتها: فهي تدعم معماريات مثل Arm وx86/x86-64 وMIPS أو PowerPC، يجعل إعادة تدوير التوزيع الخاص بك بين عائلات المنتجات أسهل أو المحور عند تغيير اللوحات أو أنظمة SoC.

يضمن دعم المجتمع والصناعة تحديثات وتصحيحات الأمان المستمرة. هناك فروع ذات دعم ممتد (LTS) تعمل على تبسيط عمر المنتج والصيانة الميدانية.

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

المكونات الرئيسية: OpenEmbedded وBitBake وPoky

مخطط يوكتو

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

يوفر OpenEmbedded (OE) البيانات الوصفية وقاعدة الفئة (OpenEmbedded-Core أو oe-core)، مجموعة مختارة من الوصفات والأدوات المساعدة التي يتم اختبارها باستمرار والتي تشكل الأساس لمئات الطبقات والمشاريع.

Poky هو توزيع Yocto المرجعي: فهو يدمج نظام بناء OE ومجموعة واسعة من الوصفات وتكوين "كتابي" صالح للبدء. إنه ليس توزيعًا للمنتج، بل هو نقطة بداية تعليمية وعملية. الذي يثبت صحة النظام البيئي.

النموذج الطبقي: التعاون والتخصيص في نفس الوقت

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

يعزز هذا النهج الفصل المنطقي لما تفعله: طبقة BSP من الشركة المصنعة، وطبقة GUI، وطبقة الوسيطة، وطبقة لتطبيقك، وطبقة للتوزيع... إن تجنب "وضع كل شيء في طبقة واحدة" يجعل حياتك أسهل عندما يتعلق الأمر بالتحديث والصيانة وإعادة الاستخدام المكونات بين المشاريع.

تعتبر طبقات BSP بالغة الأهمية: فهي تحتوي على أشجار الأجهزة، وتكوينات النواة، وبرامج التشغيل، وإعدادات الجهاز لأهداف محددة (على سبيل المثال، عائلات Raspberry Pi). بفضلهم، فإن إضافة أو تغيير الأجهزة لا يعني إعادة كتابة كل شيء.، فقط قم بإضافة أو تعديل الطبقة المناسبة.

سير عمل البناء

العملية النموذجية واضحة جدًا، وإن كانت مكثفة. أولًا، تُحدد البنية والسياسات والتصحيحات والمعلمات (على سبيل المثال، في local.conf y bblayers.conf). يقوم BitBake بجلب المصادر (tarballs، git…) والتصحيحات والتكوين والتجميع اعتمادًا على الفئات (autotools، cmake، وما إلى ذلك).

يتم تثبيت النتيجة الوسيطة في مرحلة مؤقتة وتعبئتها بالتنسيق المختار (deb، rpm، ipk). باستخدام هذه الحزم، يتم إنشاء rootfs وإنشاء الصور النهائية. الذي ستقوم بتثبيته أو نشره على الجهاز.

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

الأدوات والمشاريع الفرعية حول Yocto

ملفات يوكتو

يوفر النظام البيئي أدوات تُسهّل حياتك. CROPS هو إطار عمل للحاويات يوفر بيئات بناء متسقة عبر أنظمة Linux وWindows وmacOS؛ مثالي للفرق المختلطة أو لتغليف التبعياتToaster عبارة عن واجهة ويب لتكوين وتشغيل الإصدارات وعرض المقاييس والتحف.

تتيح مجموعة eSDK (مجموعة SDK القابلة للتوسعة) لمطوري التطبيقات إضافة المكتبات والتغييرات وإدخالها مرة أخرى في الصورة بشكل ملائم. يتوفر أيضًا دعم Multi-Config لبناء هياكل معمارية متعددة بأمر واحد، و"إنشاءات ثنائية" لتضمين الثنائيات عند عدم توفر المصادر.

يمكن للنظام إنشاء بيان ترخيص ومراجع للكود المستخدم، مفتاح الامتثال في بيئات منظمة أو مع التزامات حقوق النشر.

تتضمن المشاريع الأخرى تحت المظلة أدوات مساعدة مثل pseudo وcross-prelink ومجموعة Matchbox للبيئات الرسومية خفيفة الوزن والمزيد. كان هناك في السابق تكامل مع Eclipse والذي تمت إزالته اعتبارًا من الإصدار 2.7. تصبح قديمة في مواجهة الأدوات الجديدة.

إدارة الحزم واستراتيجيات التحديث

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

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

الاختبار والمحاكاة والتوثيق

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

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

الحوكمة والإطلاقات

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

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

الإصدارات والأسماء الرمزية

تاريخيًا، أصدرت Yocto إصدارات تم تحديدها حسب الرقم واللقب. فيما يلي مجموعة مختارة من الإصدارات والتواريخ:

الإصدار اسم الرمز تاريخ
3.3 هاردنوت 04/2021
3.2 جيتسغارث 11/2020
3.1 دانفيل 04/2020
3.0 زيوس 10/2019
2.7 محارب 04/2019
2.6 جلجل 11/2018
2.5 السومو 04/2018
2.4 روكو 10/2017
2.3 بايرو 04/2017
2.2 مورتي 10/2016
2.1 كروغوث 04/2016
2.0 شعيب 10/2015
1.8 فيدو 04/2015
1.7 بالدوار 10/2014
1.6 ديزي 04/2014
1.5 درة 10/2013
1.4 ديلان 04/2013
1.3 ديلان 10/2012
1.2 دينزيل 04/2012
1.1 إديسون 10/2011
1.0 برنار 2011
0.9 افيرن 2010

بالإضافة إلى الصور العامة، يحتفظ المشروع بتنفيذ مرجعي يسمى Poky والذي يدمج نظام بناء OE ومجموعة شاملة من الوصفات المنظمة في طبقات، مفيد كقالب وظيفي لنظام مضمن.

برنامج العلامة التجارية: المشاركون والتوافق

يوكتو لينكس

يتيح برنامج العلامة التجارية Yocto للمؤسسات والمنتجات ربط أعمالها بالمشروع بختمين: "مشارك في مشروع Yocto" للكيانات التي تستخدم Yocto وتدعمه علنًا، و"متوافق مع مشروع Yocto" للمنتجات المتوافقة مع المعدات الأصلية، وBSPs، والطبقات من المنظمات الأعضاء.

المصطلحات الأساسية

  • ملفات التكوين (conf):تحديد المتغيرات العالمية وخيارات المستخدم وإعدادات الأجهزة؛ فهي توجه ما يتم تجميعه وما يدخل في الصورة لمنصة محددة.
  • وصفات (.bb): وصف مصدر الكود، والتصحيحات، والتبعيات، وخيارات البناء لإنشاء الحزم، ومعها الصورة النهائية.
  • الطبقات:مجموعات من الوصفات والبيانات الوصفية ذات الصلة؛ فهي تسمح بعزل التخصيصات والدعم النظيف للهندسة المعمارية المتعددة.
  • الفوقية:تتضمن هذه الوصفات والتكوينات والفئات والبيانات التي تتحكم في ما يتم بناؤه وكيفية إنشائه، بما في ذلك مراجع الإصدار والتصحيح.
  • بيتبيك: محرك التنفيذ الذي يقوم بتحليل الوصفات وتكوين ترتيب المهام؛ مشابه لـ "make"، لكنه موجه للحزم والصور.
  • حزم: القطع الأثرية المولدة (deb، rpm، ipk) التي يتم استخدامها لتركيب نظام الملفات الجذر وصور النظام.
  • مجموعة أدوات تطوير البرامج الإلكترونية:مجموعة أدوات تطوير برمجيات قابلة للتوسعة لمطوري التطبيقات لدمج التغييرات والمكتبات واختبارها على الأجهزة المستهدفة.
  • صورة:شكل ثنائي لنظام التشغيل Linux الذي سيتم تثبيته أو نشره على الجهاز المستهدف.

حالات الاستخدام وإنترنت الأشياء واختيار النظام

يشهد سوق الأجهزة المضمنة نموًا مستمرًا: المزيد من الأجهزة المخصصة، والمزيد من تنوع اللوحات وأنظمة SoC، وبالتالي، الحاجة الأكبر لأنظمة تشغيل مخصصةلقد أثبت Linux نفسه باعتباره المعيار الفعلي، وYocto هو الخيار الأمثل لبناءه "بطريقتك".

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

تجمع الشركات بين Yocto وهندسة العمليات الميدانية الحديثة (OTA، والأقسام الآمنة، والتراجع)، دمج خطوط أنابيب CI/CD والاختبار الآلي والنشر التدريجيتوجد أيضًا حلول تستفيد من Yocto لتوسيع قدرات الحافة (على سبيل المثال، المنصات التي تركز على التحليلات والذكاء الاصطناعي والاتصال السحابي الذي يدعمه Yocto).

السلامة والممارسات الجيدة

الأمان أولوية. يتوافق المشروع مع أفضل ممارسات CII، ويشجع على بناء نماذج قابلة للتكرار (حقق الاختبار نسبة نجاح تقارب 99,8% على الحد الأدنى من الصور الأساسية). يؤدي التحكم في التبعيات والبيئات وسلاسل الأدوات إلى تقليل تلوث البناء..

على مستوى وقت التشغيل، يمكنك تمكين SELinux للتحكم في الوصول الدقيق، وIMA لقياس سلامة وقت التشغيل، وسلاسل التمهيد الآمنة التي تتحقق من أداة تحميل التشغيل، والنواة، وinitramfs. تشفير نظام الملفات وإدارة المفاتيح يوفران حماية كاملة في حالة السكون.

من النظرية إلى التطبيق: بناء الصورة

الطريقة الأساسية هي استنساخ Poky، وتهيئة البيئة، وتحديد الجهاز (على سبيل المثال هدف QEMU أو Raspberry Pi)، أضف طبقات BSP الضرورية وقم بتشغيل BitBake على صورة مرجعيةيستغرق البناء الأول بعض الوقت، ولكن بعد ذلك تأتي عمليات البناء التدريجية بسرعة.

بالنسبة للأجهزة مثل Raspberry Pi/reTerminalيتضمن التدفق النموذجي استنساخ طبقات مثل meta-raspberrypi، وmeta-oe، وmeta-python، أو طبقة من بائع الجهاز، ضبط النواة، واستيراد الطبقات والمتغيرات، وبناء صورة محددة (على سبيل المثال، "صورة اختبار rpi").

يتيح لك Toaster القيام بنفس الشيء عبر واجهة المستخدم الرسومية: إنشاء مشروع، واختيار الإصدار، والجهاز (raspberrypi4-64، raspberrypi5…)، استيراد الطبقات، وضبط المتغيرات (على سبيل المثال، الواجهات الخلفية الرسومية)، وتشغيل البناء من المتصفح.عند الانتهاء، قم بتنزيل القطع الأثرية (على سبيل المثال .wic.bz2) وقم بتثبيتها.

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

سير العمل التفصيلي (الملخص التشغيلي)

  1. يحدد الهندسة المعمارية والسياسات والتحديثات والتكوين.
  2. تنزيل الخطوط من المصادر المعلنة.
  3. فك الضغط، وتطبيق التصحيحات، وتشغيل التكوين/التجميع حسب الاقتضاء.
  4. التجهيز والتغليف.
  5. تشغيل ضمان الجودة والفحوصات.
  6. ينشر موجزات الحزمة.
  7. إنشاء الصورة النهائية.

يتكيف هذا المخطط مع الفئات والطبقات وفقًا لمكوناتك: قد ترغب في الحصول على واجهة خلفية رسومية محددة، أو وحدات kernel خاصة بك، أو init مختلف. يكمن جمال Yocto في أن كل هذا يتم التعبير عنه كبيانات وصفية قابلة للإصدار..

نصائح لتبني الفريق

بالنسبة للملفات الشخصية القادمة من بيئات Windows، فإن الاستثمار في أساسيات Unix/Linux يساعد كثيرًا. اعمل مع توزيعات Linux على محطة العمل الخاصة بك، وفهم Bash وPython، والتعرف على سلاسل الأدوات المتقاطعة. يسرع المنحنى.

إذا كنت جديدًا في المشروع، فابدأ باستخدام Poky وQEMU للتحقق من صحة سير العمل من البداية إلى النهاية. ثم قم بإضافة طبقة BSP للأجهزة الحقيقية وطبقة التطبيق الخاصة بك.أتمتة عمليات بناء الحاويات (CROPS) وCI/CD منذ البداية.

ترقية المجال وقدرات التشغيل

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

يعد دمج مخزون التراخيص ورمز المصدر المرتبط به أمرًا ضروريًا آخر للامتثال. يقوم Yocto بإنشاء بيانات الترخيص ويمكنه الارتباط برمز المكون.، مما يسهل عمليات التدقيق والتزامات إعادة التوزيع.

ما هو OpenEmbedded
المادة ذات الصلة:
ما هو OpenEmbedded وكيف يحول تطوير Linux المضمن