يُعد هذا المصدر مثالًا قويًا على استخدام ZimaOS كمضيف لجهاز مخصص، بدلًا من محاولة تحويل طبقة نظامه للقراءة فقط إلى توزيعة سطح مكتب. وبما أن ZimaOS لا يحتوي على apt البيئة أو سطح مكتب X.Org مدمج، أنشأ المؤلف مكدس الكشك كاملًا داخل Docker: Debian + X.Org + Chromium للعرض، بالإضافة إلى حاوية nginx صغيرة للوحة المعلومات المحلية.
كانت النتيجة كشكًا يعمل بشاشة لمس مقاس 22 بوصة، متصلًا بـ ZimaBoard 2 1664. يظل هذا بناءً متقدمًا من المجتمع، وليس وضع سطح مكتب مدعومًا من IceWhale. فهو يستخدم شبكات المضيف، ووصولًا مباشرًا إلى الرسومات/الإدخال، وحاوية كشك ذات امتيازات، لذا ينبغي للمستخدمين فهم المقايضات المتعلقة بالأمان والوصول إلى الأجهزة قبل تطبيقه.
يعمل الكشك بمكدس سطح مكتب داخل Docker
يبدأ Dockerfile المصدر من Debian Bookworm Slim ويثبّت X.Org وlibinput وOpenbox وChromium وأدوات X11 والخطوط وMesa. ويبقى المضيف على ZimaOS، بينما توجد بيئة المستخدم الرسومية داخل الحاوية.
وهذا بالضبط نوع عزل أحمال العمل الذي صُمم نموذج أجهزة ZimaOS لتشجيعه.
تُكشَف وحدة معالجة الرسومات Intel لحاوية الكشك
يستخدم الدليل modesetting السائق ويمرر جهاز Intel DRM إلى الحاوية. ووجد المؤلف تحديدًا أن دعم Mesa المطلوب احتاج إلى backports لإصدار Bookworm من أجل مكدس رسومات N100 المستخدم في ZimaBoard 2.
تستخدم أجهزة ZimaBoard 2 الحالية معالج Intel N150، لذا ينبغي لمن يعيدون تنفيذ الدليل التحقق من دعم Mesa/X.Org الحالي بدلًا من افتراض أن تفاصيل N100 التاريخية مطابقة.
إدخال اللمس يأتي عبر طبقة الإدخال/Udev للمضيف
كانت إشارة العرض تستخدم HDMI/miniDP، بينما اتصلت وحدة التحكم باللمس عبر USB. ويفحص الدليل /proc/bus/input/devicesويعيّن جهاز الأحداث الصحيح في X.Org، ويشارك /run/udev حتى تتمكن الحاوية من التعرّف على أجهزة الإدخال.
حاوية nginx منفصلة تعرض لوحة المعلومات
يعمل المصدر nginx:alpine على منفذ غير مستخدم من قِبل ZimaOS (8888 في المثال)، وتُحمّل ملفات لوحة المعلومات بوضع القراءة فقط. ويفتح Chromium عنوان URL المحلي هذا في وضع الكشك.
يتيح استخدام حاوية ويب منفصلة تحديث ملفات لوحة المعلومات بسهولة من دون إعادة بناء الحاوية الرسومية.
لا تُعِد استخدام المنفذ 80 الخاص بـ ZimaOS للوحة المعلومات
يشير الدليل صراحةً إلى أن ZimaOS يستخدم المنفذ 80 بالفعل للوحة معلوماته. إذا فتح Chromium الصفحة الخطأ، فتحقق من منفذ لوحة المعلومات المخصصة و KIOSK_URL القيمة بدلًا من تغيير سلوك ZimaOS بشكل غير متوقع.
أضاف المؤلف حلًا بديلًا لأحداث المؤشر لنقرات اللمس
في لوحة المعلومات المصدرية، كان بإمكان حركة بسيطة جدًا للإصبع أن تمنع Chromium من تشغيل onclick معالجات الأحداث. استبدل المؤلف معالجة النقر بـ pointerup بالإضافة إلى عتبة للحركة.
ذلك JavaScript خاص بالتطبيق. وينبغي لواجهات الويب الحديثة المصممة للمس أن تفضّل عناصر تحكم ملائمة للمؤشر واللمس بدلًا من التنفيذ العام لـ onclick السلاسل.
وضع الامتياز هو أكبر تنازل أمني
يشغّل المصدر حاوية الكشك باستخدام --privileged. فهذا يوفّر وصولًا واسعًا إلى الأجهزة ونواة المضيف، وهو أكثر تساهلًا بكثير من حاوية لوحة معلومات عادية.
إذا أعدت تنفيذ الإصدار، فاختبر أولًا ما إذا كان /dev/driتُعد عمليات تركيب , input-device وudev، إلى جانب الإمكانات محدودة النطاق، كافية. أبقِ لوحة المعلومات على شبكة LAN موثوقة.
يستخدم المصدر unless-stopped للاسترداد التلقائي
يستخدم كلٌّ من حاوية nginx وحاوية الكشك restart: unless-stopped السلوك بحيث تعود الشاشة بعد إعادة تشغيل ZimaOS. خزّن Dockerfile وتهيئة X.Org ونقطة الدخول ولوحة المعلومات ضمن /DATA التخزين.
يمكن لـ ZimaOS الحالي حزم هذا بصورة أكثر قابلية لإعادة الإنتاج باستخدام Compose
يدعم ZimaOS الحالي استيراد ملفات Docker Compose/YAML القياسية. وبدلًا من صيانة عدة ملفات طويلة docker run الأوامر، ويمكن للمستخدم المتقدم التعبير عن الخدمتين معًا، وسياسات إعادة التشغيل، والأجهزة، ووحدات التخزين، والشبكات في ملف Compose واحد خضع للمراجعة.
استخدم نموذج Compose الحالي في ZimaOS.
الأسئلة الشائعة حول كشك شاشة اللمس
هل يحتاج ZimaOS إلى تثبيت apt أو بيئة سطح مكتب على المضيف؟
لا. يُبقي المصدر عمدًا X.Org وOpenbox وMesa وChromium داخل Docker.
هل هذا وضع سطح المكتب الرسمي في ZimaOS؟
لا. هذا إصدار من المجتمع طلبت IceWhale الإذن بمشاركته مع ذكر المصدر.
لماذا تُعد حاوية الكشك عالية الخطورة مقارنةً بتطبيق عادي؟
يمنح المصدر الحاوية وضع الامتياز، إلى جانب وصول مباشر إلى الرسومات وأجهزة الإدخال، مما يقلل من عزل Docker.
