
مولّد initramfs سريع وآمن

يجعل Booster مرحلة الإقلاع المبكر أخفّ وأسرع وأكثر اعتمادية. فهو يبني صور initramfs مدمجة تنقل نظام لينكس لديك من البرنامج الثابت (firmware) إلى نظام الملفات الجذري الفعلي بأقل قدر من التعقيد ودعم قوي للإقلاع المشفّر.
بدلاً من حزم مساحة مستخدم مبكرة عامة وضخمة، يكتشف Booster ما تحتاجه أجهزتك فعلياً ويبني صورة مركّزة حول ذلك. النتيجة صورة إقلاع هزيلة تتضمن برامج التشغيل، وأدوات فتح التشفير، ودعم أنظمة الملفات، ومسارات الاسترداد التي يحتاجها مضيفك، دون أن تُثقَل كل إعادة إقلاع بما لا يلزم.
بُني Booster حول وعد بسيط: يجب أن يكون الإقلاع المبكر سريعاً، وواضحاً، وآمناً، ومريحاً في التشغيل.
أبرز المزايا:
systemd-cryptenroll الخاصة بـ TPM2 وFIDO2، بما في ذلك دعم FIDO2 الأصلي عبر مسار الإضافات في Booster.Booster مناسب تماماً لأجهزة الكمبيوتر المحمولة المشفّرة، ومحطات عمل المطورين، والخوادم التي تحتاج استرداداً عن بُعد، وأنظمة لينكس البسيطة، وإعدادات الإقلاع التي ينبغي أن تبقى مفهومة بعد سنوات من إعدادها.
يتعامل Booster مع تشفير القرص الكامل كسير عمل من الدرجة الأولى، لا كإضافة. يمكنه فتح أجهزة LUKS من معاملات النواة، أو /etc/crypttab، أو الاكتشاف التلقائي لـ GPT، أو مراجع root= المباشرة لحاويات LUKS، أو ملفات المفاتيح، أو الرؤوس المنفصلة، أو الرموز المدعومة بالعتاد.
تشمل أنماط الفتح المدعومة:
systemd-cryptenroll الخاصة بـ TPM2 وFIDO2.صُمم تنسيق الرموز في Booster ليجعل الإقلاع المشفّر يبدو مصقولاً. يمكن للرموز غير التفاعلية أن تتنافس في الخلفية، وتُطلب الرموز القائمة على PIN بترتيب حتمي، وتظهر مطالبة عبارة المرور العادية كخيار احتياطي بدلاً من حجب الإقلاع بالكامل إلى الأبد.
التحسينات الأخيرة في FIDO2 تجعل التجربة أكثر سلاسة:
enable_fido2: true.crypttab يحتوي على fido2-device= أن يجعل Booster يضمّن إضافة FIDO2 تلقائياً.افتراضياً، يبني Booster صورة مخصصة للمضيف. ينظر إلى النظام الحالي، ويضمّن الوحدات والأدوات اللازمة لإقلاعه، ويستبعد الأجزاء غير الضرورية. وهذا يجعل الصورة أسهل في التدقيق، وأسرع في التوليد، وأسرع في التنفيذ أثناء الإقلاع.
عندما تحتاج صورة أوسع، يتضمن --universal مجموعة أوسع من الوحدات لسيناريوهات الإنقاذ، أو الوسائط المحمولة، أو الأنظمة التي قد يتغيّر عتادها.
يدعم Booster تخطيطات إقلاع عملية من العالم الحقيقي، بما فيها:
UUID=، أو LABEL=، أو PARTUUID=، أو PARTLABEL=، أو HWPATH=، أو WWID=، أو /dev/..../etc/crypttab.عند حدوث خطأ ما، يمنحك Booster طرقاً مفيدة لمعرفة ما حدث. استخدم booster.log=debug,console لسجلات إقلاع مفصّلة، وأضف busybox للحصول على قشرة طوارئ، أو فعّل دعم الشبكة لاسترجاع السجلات من جهاز لا يمكن إقلاعه.
يتضمن Booster أيضاً أوامر فحص الصور لتتمكن من التحقق مما بُني قبل إعادة الإقلاع:
booster ls /boot/booster-linux.img
booster cat /boot/booster-linux.img /init
booster unpack /boot/booster-linux.img /tmp/booster-image
ثبّت الحزمة الرسمية:
pacman -S booster
ينشئ الحزمة صور Booster في /boot/:
$ ls -lh /boot/booster-*.img
-rwxr-xr-x 1 root root 3.9M Dec 10 20:51 /boot/booster-linux.img
ثبّت Booster باستخدام:
xbps-install -S booster
ثم أعد توليد initramfs لنواة مثبّتة مسبقاً:
xbps-reconfigure -f linux
ثبّت Booster باستخدام:
apk add booster
ثم اقرأ /usr/share/doc/booster/README.alpine للحصول على تعليمات مُحمِّل الإقلاع الخاصة بهذا الإعداد.
يمكنك أيضاً بناء صورة مباشرة:
booster build /boot/booster-linux.img
للحصول على صورة أكثر قابلية للنقل مع مجموعة عتاد أوسع:
booster build --universal /boot/booster-linux.img
بعد إنشاء الصورة، وجّه مُحمِّل الإقلاع إليها. للحصول على تفاصيل الإعداد الكاملة، راجع صفحة الدليل الخاصة بـ Booster.
أنشئ صورة مخصصة للمضيف:
booster build booster.img
أنشئ صورة لنواة محددة:
booster build --kernel-version 6.8.9-arch1-1 /boot/booster-linux.img
افحص الصورة المولّدة:
booster ls /boot/booster-linux.img
أعد توليد الصور المُحزَّمة بعد تغيير /etc/booster.yaml:
/usr/lib/booster/regenerate_images
ولّد صورة نواة موحّدة (Unified Kernel Image) عندما يوفر توزيعك systemd-ukify:
/usr/lib/booster/regenerate_uki build /boot/EFI/Linux
إعداد Booster صغير عمداً. فجهاز كمبيوتر محمول مشفّر بسيط غالباً لا يحتاج أي ملف إعداد كبير إطلاقاً. أضف فقط الميزات التي يحتاجها مسار الإقلاع لديك:
compression: zstd
vconsole: true
enable_fido2: true
enable_lvm: true
enable_mdraid: true
للفتح عن بُعد عبر SSH:
network:
dhcp: on
ssh_host_key: /etc/booster/ssh_host_ed25519_key
ssh_authorized_keys: /etc/booster/authorized_keys
ssh_listen: :22
لترتيب أكثر سلاسة للرموز عند تسجيل عدة طرق فتح بالعتاد:
serialize_tokens:
enabled: true
clevis_timeout: 45s
tpm2_timeout: 15s
fido2_timeout: 30s
لدعم شاشة البداية Plymouth:
enable_plymouth: true
modules_force_load: amdgpu
استخدم quiet splash في سطر أوامر النواة، وتجنّب booster.log=console عندما تريد شاشة البداية الرسومية.
التوثيق الكامل للمستخدم موجود في صفحة الدليل الخاصة بـ Booster. ويغطي:
/etc/booster.yaml./etc/crypttab.يعمل Booster في نفس فضاء المشكلة الذي يعمل فيه mkinitcpio وdracut. تركيزه على مولّد initramfs سريع ومدمج مبني على Go مع بيئة استخدام قوية للإقلاع المشفّر واكتشاف تلقائي للمضيف.
يتكون المشروع من ثلاثة أجزاء رئيسية:
init - برنامج مساحة المستخدم المبكرة الذي يعمل أثناء الإقلاع.generator - الأداة التي تبني صورة initramfs.tests - اختبارات تكامل قائمة على QEMU للصور المولّدة.ابنِ باستخدام أدوات Go القياسية:
go build ./...
شغّل اختبارات الوحدة:
go test ./generator ./init
شغّل مجموعة الاختبارات الكاملة:
go test ./...
حزمة ./tests تحتوي اختبارات تكامل QEMU وتتطلب أن يكون لدى المضيف أدوات الإقلاع والافتراضية اللازمة مثبّتة.
بدأ العمل في هذا المشروع خلال أسبوع القرصنة في تويتر. شكر كبير لتويتر على دعم تطوير البرمجيات مفتوحة المصدر، وشكر خاص إلى Ian Brown.
استُلهمت بنية Booster من مشروع distri لمايكل شتابلبرغ، واستعارت النسخة الأولية العديد من الأفكار من مولّد initramfs الخاص بـ distri.
انظر LICENSE.