Kernel Follower
os-kernelfollow · النظام
يُعيد بناء وحدة نواة FreeBSD من خارج شجرة المصدر للنواة التي يثبّتها تحديث OPNsense، قبل إعادة التشغيل، فيكون برنامج التشغيل الآتي من خارج مستودع OPNsense نفسه حاضرًا في الإقلاع التالي.
في القائمة
- مع تثبيت os-xgs-npu: XGS: Kernel Follower
- من دون os-xgs-npu: System: Kernel Follower

يقرأ النواة التي سيستعملها الإقلاع التالي - طقم نواة جهّزه تحديث ولم يُطبَّق بعد، أو /boot/kernel - من الملف الثنائي نفسه، دون الإقلاع منها، ويقارنها بالختم الموجود بجانب كل وحدة مسجّلة لديه. والوحدة التي لا تطابقها يُعاد بناؤها لتلك النواة من مصادرها: من أرشيف محمول على الجهاز، أو من github.com/opnsense/src عند الإيداع الذي تذكره النواة.
يعمل من خطّاف الترقية، ومن خطّاف الإيقاف في كل إعادة تشغيل منتظمة - الذي يُمسك إعادة التشغيل حتى يكتمل البناء، عشر دقائق على الأكثر - ومن cron كل خمس دقائق. وإذا تعذّرت إعادة بناء وحدة تحتاجها الشبكة، يُوجَّه الإقلاع التالي مرّة واحدة إلى /boot/kernel.old، التي تطابقها الوحدة المثبّتة؛ ويُلغى ذلك متى أُعيد بناء الوحدة.
تسجّل الإضافةُ وحدتَها بملف واحد في /usr/local/etc/kernelfollow.d/. وعلى جهاز Sophos XGS مع os-xgs-npu، يتابع os-xgs-npu وحدتيه octep.ko وnpuep.ko بمتابِعه الخاص: فتتركهما هذه الإضافة له وتكتفي بعرضهما، ولا تمسّ nextboot إلا لإلغاء رجوع ضبطته هي، وتترك مصادر النواة القديمة لـ os-xgs-npu ليزيلها.
الميزات
-
قراءة نواة الإقلاع التالي
من الملف الثنائي لطقم نواة مجهَّز أو لـ /boot/kernel، دون الإقلاع منها، ثم مقارنتها بختم كل وحدة.
-
بناء نظيف
يُبنى من الصفر في مجلّد أُفرغ أولًا، ويُتحقَّق من أنه ترجم كل مصدر بترويسات تلك النواة الخاصة بالمعمارية، ويُثبَّت باسم مؤقّت ثم يُنقل إلى مكانه؛ ويُحفظ البناء السابق بجانبه بلاحقة prev مع ختمه.
-
يعمل حين يلزم
خطّاف الترقية، وخطّاف الإيقاف في كل إعادة تشغيل منتظمة (عشر دقائق على الأكثر)، وcron كل خمس دقائق. وإذا لم تُسجَّل أيّ وحدة، فكل تشغيل مجرّد قراءة لمحتوى مجلّد.
-
رجوع من أجل الشبكة
الوحدة الموسومة CRITICAL=yes إذا تعذّرت إعادة بنائها، يُوجَّه الإقلاع التالي مرّة واحدة إلى /boot/kernel.old بالأمر nextboot -k؛ والتشغيل الذي يُعيد بناءها يُلغي ذلك.
-
إزالة المصادر القديمة
تُزال مصادر النوى التي لم تعد تعمل بعد أن تعمل النواة الجديدة يومًا (وهو إعداد)، وتكون كل وحدة مطابقة لها ومحمَّلة.
-
Check وFollow now
تعرض الصفحة النواة العاملة والنواة التي سيأخذها الإقلاع التالي، وكل وحدة مقارنةً بها، والمصادر على القرص، وآخر تشغيل؛ يبيّن Check ما سيفعله التشغيل، ويُجريه Follow now.
التثبيت والتحديث
ابتداءً من إصدار os-xgs-npu الذي يلي 0.1.0-alpha.7.1، تظهر الإضافة في تبويب Plugins في XGS: Updates - فتُحدَّث النسخة المثبّتة منها هناك يدويًّا، وتُثبَّت منه حيث لا توجد - وتحملها الصور الجاهزة المبنية من ذلك الإصدار؛ وحتى ذلك الحين تُثبَّت وتُحدَّث كما يلي. ومُدخَل cron الخاص بالإضافة يُشغِّل المتابِع كل خمس دقائق، ولا يُشغِّل التحديث أبدًا. ولتثبيتها على جهاز XGS أو على أيّ OPNsense آخر، بصلاحيات root: من نسخة مستنسخة من المستودع بالأمر sh install/install.sh، الذي يضع الصفحة تحت XGS مع os-xgs-npu وتحت System من دونه، ويحفظ الإعدادات إذا أُعيد تشغيله - وأراشيف مصادر النواة الموضوعة في kernel-sources/ بجانب النسخة المستنسخة تتيح البناء لجهاز بلا إنترنت؛ أو من حزمة الإصدار os-kernelfollow-1.0.0.pkg، بعد التحقّق منها بـ SHA256SUMS، وإضافتها بـ pkg. والنسخة المثبّتة بهذه الطريقة تُحدَّث بسكربتها self-update.py. والإضافة ليست في مستودع إضافات OPNsense.
الحدود، وما لم يُختبر بعد
- تحديث حقيقي للنواة: طقم نواة مجهَّز، وجلب المصادر عبر الشبكة، وخطّافا الترقية والإيقاف.
- الأمر nextboot نفسه، وإزالة المصادر القديمة.
- الحزمة، التي يبنيها tools/make-package.sh وتُضاف بـ pkg.
- التثبيت على OPNsense من دون os-xgs-npu.
- التحديث عبر تبويب Plugins أو self-update.py: الإصدار 1.0.0 هو الأول، فلم يسبق أيُّ إصدار نسخةً مثبّتة.
المستودع
أول إصدار: 2026-10-25