منصوبے کے بارے میں

Firecracker ایک اوپن سورس ورچوئلائزیشن ٹیکنالوجی ہے جو خاص طور پر محفوظ، ملٹی ٹیننٹ کنٹینر اور فنکشن پر مبنی خدمات بنانے اور ان کے انتظام کے لیے ڈیزائن کی گئی ہے، جن میں سرور لیس آپریشنل ماڈل استعمال ہوتے ہیں۔ یہ ورک لوڈز کو ہلکی ورچوئل مشینوں میں چلاتا ہے جنہیں مائیکرو VMs کہا جاتا ہے، جن کا مقصد ہارڈویئر ورچوئلائزیشن کی سیکیورٹی اور تنہائی کو کنٹینرز کی رفتار اور لچک کے ساتھ جوڑنا ہے۔ بنیادی جزو ایک ورچوئل مشین مانیٹر (VMM) ہے جو لینکس کرنل ورچوئل مشین (KVM) پر بنایا گیا ہے۔ اس کا ڈیزائن جان بوجھ کر کم سے کم رکھا گیا ہے: اس میں غیر ضروری آلات اور گیسٹ سے متعلق فعالیت شامل نہیں کی جاتی تاکہ میموری کا استعمال اور حملے کی سطح کم ہو، جس سے پروجیکٹ کے مطابق سیکیورٹی بہتر ہوتی ہے، آغاز کا وقت کم ہوتا ہے، اور ہارڈویئر کے استعمال میں اضافہ ہوتا ہے۔ Firecracker کو Amazon Web Services میں تیار کیا گیا تھا تاکہ AWS Lambda اور AWS Fargate جیسی خدمات کو سپورٹ کیا جا سکے، اور اسے Apache 2.0 کے تحت جاری کیا گیا ہے۔ اسے Kata Containers اور Flintlock سمیت کنٹینر رن ٹائمز میں بھی ضم کیا گیا ہے۔ شروع ہونے کے بعد، Firecracker میزبان کو ایک API اینڈ پوائنٹ فراہم کرتا ہے، جو OpenAPI فارمیٹ میں بیان کیا گیا ہے۔ اس API کے ذریعے صارف مائیکرو VM کے vCPU کی تعداد (پہلے سے طے شدہ 1) اور میموری کا سائز (پہلے سے طے شدہ 128 MiB) ترتیب دے سکتے ہیں، CPU ٹیمپلیٹس لاگو کر سکتے ہیں، نیٹ ورک انٹرفیس منسلک کر سکتے ہیں، فائل پر مبنی بلاک ڈیوائسز کو پڑھنے لکھنے یا صرف پڑھنے کے لیے شامل کر سکتے ہیں، گیسٹ کے چلتے ہوئے بلاک ڈیوائس کا دوبارہ اسکین شروع کر سکتے ہیں، بوٹ سے پہلے یا بعد میں بلاک ڈیوائس کی بیکنگ فائل تبدیل کر سکتے ہیں، virtio آلات کے لیے ریٹ لمیٹر ترتیب دے سکتے ہیں، لاگنگ اور میٹرکس سیٹ کر سکتے ہیں، vsock، entropy، اور pmem آلات شامل کر سکتے ہیں، میموری ہاٹ پلگنگ کا انتظام کر سکتے ہیں، اور (ڈیولپر پیش نظارہ میں) virtio PCI آلات کو ہاٹ پلگ یا ہاٹ ان پلگ کر سکتے ہیں۔ ایک مائیکرو VM کرنل امیج، روٹ فائل سسٹم، اور بوٹ آرگیومنٹس کے ساتھ شروع کیا جاتا ہے؛ روکنے کی سہولت صرف x86_64 پر دستیاب ہے۔ بلٹ ان صلاحیتوں میں ڈیمانڈ فالٹ پیجنگ، بطور ڈیفالٹ CPU اوور سبسکرپشن، تھریڈ مخصوص seccomp فلٹرز، اور ایک Jailer عمل شامل ہے جو پروڈکشن ڈیپلائمنٹ کے لیے cgroup/namespace تنہائی لاگو کرتا ہے اور مراعات کم کرتا ہے۔ شروع کرنے کے لیے ریلیز بائنریز ڈاؤن لوڈ کی جا سکتی ہیں یا سورس سے تعمیر کی جا سکتی ہے۔ تعمیر کے لیے Docker اور bash کے ساتھ Unix/Linux سسٹم درکار ہے؛ پروجیکٹ ایک ڈیولپمنٹ کنٹینر اور devtool بلڈ کمانڈ فراہم کرتا ہے، بائنری build/cargo_target کے تحت رکھی جاتی ہے۔ دستاویزات میں کوئیک اسٹارٹ گائیڈ، پروڈکشن ہوسٹ سیٹ اپ، ڈیزائن، API درخواستیں، CPU ٹیمپلیٹس، vsock، entropy، pmem، میموری ہاٹ پلگ، ڈیوائس ہاٹ پلگ، اور jailer کے استعمال کا احاطہ کیا گیا ہے۔ ریلیز تقریباً ہر دو سے تین ماہ بعد GitHub پر شائع ہوتی ہیں، جن کے ساتھ تبدیلیوں کی فہرست اور ایک دستاویزی ریلیز پالیسی ہوتی ہے۔ پروجیکٹ ایک آزمائشی پلیٹ فارم میٹرکس شائع کرتا ہے جس میں AWS EC2 میٹل انسٹینسز شامل ہیں، Intel، AMD، اور Graviton فیملیز پر مختلف ہوسٹ کرنل، گیسٹ روفس، اور گیسٹ کرنل کے ساتھ۔ ایک معروف حد یہ ہے کہ aarch64 پر pl031 RTC ڈیوائس انٹرپٹس کو سپورٹ نہیں کرتی، اس لیے RTC الارم پر انحصار کرنے والے گیسٹ پروگرام (جیسے hwclock) کام نہیں کریں گے۔ کارکردگی کی خصوصیات ایک تصریحی فائل میں دستاویز کی گئی ہیں اور مسلسل انٹیگریشن ٹیسٹنگ کے ذریعے نافذ کی جاتی ہیں۔ سیکیورٹی کے انکشافات پروجیکٹ کی سیکیورٹی پالیسی کے مطابق نجی طور پر نمٹائے جاتے ہیں، اور کمیونٹی سے رابطہ Slack، GitHub issues، اور ای میل کے ذریعے ممکن ہے۔