عن المشروع

Firecracker هي تقنية افتراضية مفتوحة المصدر صُممت خصيصًا لإنشاء وإدارة خدمات آمنة متعددة المستأجرين قائمة على الحاويات والدوال بنماذج تشغيل خادمة (serverless). تشغّل أحمال العمل في ماكينات افتراضية خفيفة تُسمى microVMs، والتي تهدف إلى الجمع بين أمان وعزل المحاكاة الافتراضية للعتاد مع سرعة ومرونة الحاويات. المكوّن الأساسي هو مراقب آلة افتراضية (VMM) مبني على Linux Kernel Virtual Machine (KVM). تصميمه بسيط عمدًا: فهو يستبعد الأجهزة غير الضرورية والوظائف الموجهة للضيف لتقليل استهلاك الذاكرة وسطح الهجوم، وهو ما يذكر المشروع أنه يحسّن الأمان ويقلل زمن الإقلاع ويزيد استخدام العتاد. طُوّر Firecracker في Amazon Web Services لدعم خدمات مثل AWS Lambda وAWS Fargate، وهو مُصدَر تحت رخصة Apache 2.0. كما تم دمجه في بيئات تشغيل الحاويات بما فيها Kata Containers وFlintlock. بمجرد تشغيله، يعرض Firecracker نقطة نهاية API للمضيف، محددة بتنسيق OpenAPI. عبر هذه الAPI يمكن للمستخدمين تكوين عدد vCPU للماكينة الصغيرة (الافتراضي 1) وحجم الذاكرة (الافتراضي 128 MiB)، وتطبيق قوالب CPU، وإرفاق واجهات شبكة، وإضافة أجهزة تخزين كتلية مدعومة بملفات للقراءة/الكتابة أو للقراءة فقط، وبدء إعادة فحص أجهزة التخزين الكتلية أثناء تشغيل الضيف، واستبدال الملف الخلفي لجهاز تخزين قبل أو بعد الإقلاع، وتكوين محددات معدل لأجهزة virtio، وإعداد التسجيل والمقاييس، وإضافة أجهزة vsock وentropy وpmem، وإدارة الإضافة الساخنة للذاكرة، و(في معاينة المطور) الإضافة أو الإزالة الساخنة لأجهزة virtio PCI. تبدأ الماكينة الصغيرة بصور نواة ونظام ملفات جذر ووسائط إقلاع؛ إيقاف التشغيل مدعوم على x86_64 فقط. تشمل القدرات المدمجة: ترحيل الصفحات عند الطلب، والاشتراك الزائد لوحدة المعالجة المركزية افتراضيًا، ومرشحات seccomp خاصة بالخيوط، وعملية Jailer التي تطبق عزل cgroup/namespace وتُسقط الامتيازات للنشر الإنتاجي. يمكن البدء بتنزيل ملفات الإصدار الثنائية أو البناء من المصدر. يتطلب البناء نظام Unix/Linux مع Docker وbash؛ يوفر المشروع حاوية تطوير وأمر بناء devtool، مع وضع الملف الثنائي تحت build/cargo_target. تغطي الوثائق دليل البدء السريع، وإعداد المضيف الإنتاجي، والتصميم، وطلبات API، وقوالب CPU، وvsock، وentropy، وpmem، والإضافة الساخنة للذاكرة، والإضافة الساخنة للأجهزة، واستخدام jailer. تُنشر الإصدارات على GitHub تقريبًا كل شهرين إلى ثلاثة أشهر مع سجل تغييرات وسياسة إصدار موثقة. ينشر المشروع مصفوفة منصات مختبرة تغطي مثيلات AWS EC2 المعدنية عبر عائلات Intel وAMD وGraviton مع نوى مضيفة وأنظمة ملفات جذر ضيف ونوى ضيف مختلفة. من القيود المعروفة أن جهاز pl031 RTC على aarch64 لا يدعم المقاطعات، لذا فإن برامج الضيف التي تعتمد على إنذارات RTC (مثل hwclock) لن تعمل. خصائص الأداء موثقة في ملف مواصفات ويتم فرضها عبر اختبارات التكامل المستمر. تُعالج الإفصاحات الأمنية بشكل خاص وفقًا لسياسة الأمان الخاصة بالمشروع، والتواصل المجتمعي متاح عبر Slack وGitHub issues والبريد الإلكتروني.