پس از حدود سه سال توسعه، انتشار سیستم اولیه سازی Finit 4.0 (Fast init) منتشر شد که به عنوان یک جایگزین ساده برای SysV init و systemd توسعه داده شد. این پروژه بر اساس پیشرفتهایی است که با مهندسی معکوس سیستم مقداردهی اولیه fastinit مورد استفاده در سیستم عامل لینوکس نتبوکهای EeePC ایجاد شده است و به دلیل فرآیند بوت بسیار سریع آن قابل توجه است. هدف اصلی این سیستم راهاندازی سیستمهای فشرده و تعبیهشده است، اما میتواند برای محیطهای دسکتاپ و سرور معمولی نیز استفاده شود. نمونه اسکریپت های پیاده سازی برای Void Linux، Alpine Linux و Debian GNU/Linux آماده شده است. کد پروژه به زبان C نوشته شده و تحت مجوز MIT توزیع می شود.
Finit از سطوح اجرا در سبک SysV init پشتیبانی میکند، نظارت بر سلامت فرآیندهای پسزمینه (راهاندازی خودکار سرویس در صورت خرابی)، اجرای کنترلکنندههای یکباره، راهاندازی خدمات با در نظر گرفتن وابستگیها و شرایط دلخواه، وصل کردن کنترلکنندههای اضافی برای اجرا قبل یا بعد. اجرای خدمات به عنوان مثال، میتوانید یک سرویس را طوری پیکربندی کنید که فقط پس از در دسترس بودن دسترسی به شبکه یا پس از شروع سرویس دیگری مانند syslogd شروع شود. Cgroups v2 برای تنظیم محدودیت ها استفاده می شود.
برای گسترش عملکرد و انطباق با نیازهای شما، می توان از پلاگین هایی استفاده کرد که برای آنها سیستمی از قلاب ها ارائه شده است که به شما امکان می دهد یک هندلر را به مراحل مختلف بارگیری و اجرای خدمات متصل کنید و همچنین اتصال به رویدادهای خارجی را فراهم کنید. به عنوان مثال، پلاگین هایی برای پشتیبانی از D-Bus، ALSA، netlink، resolvconf، اتصال داغ دستگاه ها، بررسی در دسترس بودن و بارگذاری ماژول های هسته، پردازش فایل های PID و تنظیم محیط برای سرور X آماده شده اند.
استفاده از اسکریپت های استاندارد برای راه اندازی سرویس های ایجاد شده برای SysV init پشتیبانی می شود (/etc/rc.d و /etc/init.d استفاده نمی شوند، اما پشتیبانی از /etc/inittab را می توان از طریق افزونه پیاده سازی کرد)، و همچنین اسکریپت های rc.local، فایل هایی با متغیرهای تنظیمات محیطی و شبکه /etc/network/interfaces، مانند Debian و BusyBox. تنظیمات را می توان در یک فایل پیکربندی /etc/finit.conf تعریف کرد، یا روی چندین فایل در پوشه /etc/finit.d توزیع کرد.
مدیریت از طریق ابزارهای استاندارد initctl و run-parts انجام می شود که به شما امکان می دهد خدمات را در رابطه با سطوح اجرا فعال و غیرفعال کنید و همچنین به طور انتخابی برخی از خدمات را راه اندازی کنید. Finit همچنین شامل یک پیادهسازی Getty داخلی (مدیریت ترمینال و ورود کاربر)، یک مراقب برای نظارت بر سلامت، و یک حالت بازیابی تصادف با sulogin داخلی برای اجرای پوسته فرمان ایزوله است.
از جمله تغییرات اضافه شده در نسخه Finit 4.0 (نسخه 3.2 به دلیل تغییراتی که سازگاری با عقب را شکسته بود حذف شد):
- ابزار راهاندازی مجدد جداگانه با یک پیوند نمادین به initctl جایگزین شده است، شبیه به ابزارهای halt، shutdown، poweroff و suspend.
- نشان از پیشرفت عملیات اجرا شده است.
- عملکرد دستورات "inictl cond set|clear COND" برای اتصال اقدامات به رویدادهای مختلف تغییر کرده است. سینتکس مورد استفاده برای شناسایی خدمات است به جای اتصال به مسیرها .
- اجرای داخلی سرور inetd حذف شده است، در صورت لزوم می توان xinetd را نصب کرد.
- اضافه شدن پشتیبانی از cgroups v2 برای اجرای سرویس ها در cgroup های جداگانه.
- اضافه شدن حالت بازیابی خرابی با suslogin خودش.
- پشتیبانی از اسکریپت های start/stop از SysV init اضافه شده است.
- کنترلکنندههای pre:script و post:script اضافه شدهاند که به شما امکان میدهند تا اقدامات انجام شده قبل یا هنگام شروع سرویس را مشخص کنید.
- اضافه شدن پشتیبانی از env:file با متغیرهای محیطی.
- اضافه شدن قابلیت ردیابی فایل های PID دلخواه.
- امکان راه اندازی وظایف و خدمات با استفاده از مسیرهای نسبی اضافه شده است.
- اضافه شدن گزینه "-b" به initctl برای انجام اقدامات در حالت غیر تعاملی (حالت دسته ای).
- Watchdog داخلی با نسخه جداگانه watchdogd جایگزین شده است.
- یک افزونه برای بارگیری خودکار ماژول های هسته برای دستگاه های متصل در حین کار اضافه شده است.
- افزونه برای مدیریت /etc/modules-load.d/ اضافه شد.
- اضافه شدن پشتیبانی برای راه اندازی مجدد خودکار خدمات پس از تغییر تنظیمات، به شما امکان می دهد بدون اجرای دستی دستور "initctl reload" این کار را انجام دهید. به طور پیش فرض غیرفعال است و نیاز به بازسازی با "./configure --enable-auto-reload" دارد.
- قابلیت ثبت عملیاتی که بر امنیت تأثیر میگذارد، مانند تغییر سطح اجرا، شروع و توقف سرویسها و خرابیهای سرویس اضافه شده است.
- پشتیبانی بهبود یافته برای /etc/network/interfaces.
منبع: opennet.ru