اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

پشت صحنه داستان init و systemd - چرا در لینوکس systemd باید جایگزین init شود

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    پشت صحنه داستان init و systemd - چرا در لینوکس systemd باید جایگزین init شود

    من به این خاطر که خودم را با اخبار توزیع ها و برنامه های لینوکس به روز نگه دارم، در mailing list های متعددی که مربوط به آنها هستند شرکت کردم. باگ های جدید چه مواردی هستند؟ چه Patch هایی منتشر شده است؟ چه مواردی از نسخه های بعدی انتظار می رود؟ و در کل موارد بسیار دیگر. این روزها، ایمیل های متعددی با عنوان "کدام لینوکس بهتر است؟ لینوکس با systemd یا لینوکس با init" پرجمعیت شده است، به خصوص Mailing list در Debian به همراه چندی دیگر.



    کدام لینوکس بهتر است؟ لینوکس با systemd یا لینوکس با init

    سرویس systemd قرار است جایگزین سرویس init در برخی توزیع های لینوکس شود، حال آنکه بسیاری از توزیع ها در حال حاضر آن را اجرا می کنند. این یک شکاف عظیم بین Unix/Linux Guard و Linux Guard جدید – برای برنامه نویس ها و ادمین های سیستم است.

    در این مقاله، ما در مورد تمام پرسش ها، یک به یک بحث کرده و راه حل ارائه خواهیم داد.
    • init چیست؟
    • System چیست؟
    • چرا باید init جایگزین شود؟
    • کدام ویژگی های systemd مال خود می باشد؟




    init چیست؟

    در لینوکس، init یک مخفف برای مقداردهی اولیه است. init یک پروسه سرویس است که به محض استارت کامپیوتر شروع می شود و اجرای آن تا خاموش شدن کامپیوتر ادامه دارد. در حقیقت init اولین پروسه ای است که موقع بوت شدن کامپیوتر آغاز می شود، آن را سرچشمه تمامی دیگر پروسه های در حال اجرای مستقیم و غیر مستقیم می کند و از این رو به طور معمول “pid=1“ به آن اختصاص داده شده است.

    اگر به نحوی سرویس init نتوانست شروع شود، هیچ پروسه ای آغاز نمی شود و سیستم به مرحله ای به نام “Kernel Panic“ می رسد. init رایج ترین مرجع برای System V init است. System V اولین سیستم عامل یونیکس تجاری است که طراحی شد و کاربردهای init در بسیاری از توزیع های لینوکس امروزی مشابه سیستم عامل System V است با مورد استثنایی همچون Slackware با استفاده از BSD-style و Gentoo با استفاده از custom init.

    لزوم جایگزینی init با چیزی کامل تر، از مدت ها احساس می شد و جایگزین های مختلفی مرحله به مرحله توسعه داده شد، که برخی جایگزین native init توزیع شدند، بعضی از آنها عبارتند از :
    • Upstart : یک سرویس جایگزین init که در اوبونتو گنو/لینوکس اجرا شد و برای شروع پروسه غیر همزمان طراحی شده است.
    • Epoch : یک سرویس جایگزین init که از همه طرف سادگی و مدیریت سرویس ایجاد کرده، این برای شروع پروسه تک نخی طراحی شده است.
    • Mudar : یک سرویس جایگزین init که به زبان پایتون نوشته شده است، در پاردوس گنو/لینوکس اجرا شده و برای شروع پروسه های غیر همزمان طراحی شده است.
    • Systemd : یک سرویس جایگزین init که برای شروع پروسه های موازی طراحی شده و در تعدادی از توزیع های استاندارد (Fedora, OpenSuSE, Arch, RHEL, CentOS وغیره) اجرا شده است.




    Systemd چیست؟

    Systemd یک سرویس مدیریت سیستم است که توسط مجمع یونیکس برای افزودن ‘d‘ در پایان سرویس نام گذاری شده است. بنابراین می توانند به راحتی تشخیص داده شوند. در ابتدا تحت لایسنس عمومی همگانی گنو GNU منتشر شد، اما اکنون نسخه ها تحت لایسنس GNU Lesser General Public License ساخته می شوند. شبیه به init، systemd نیز سرچشمه همه پروسه های مستقیم و غیر مستقیم دیگری است که هنگام بوت آغاز می شوند از این رو معمولا “pid=1“ به آن اختصاص داده شده است.

    systemd، ممکن است با تمام پکیج ها، سرویس ها و کتابخانه های پیرامون سرویس ارتباط داشته باشد. Systemd برای غلبه بر کاستی های init طراحی شده است. این به خودی خود یک پیش زمینه برای پروسه هایی است که برای شروع فرآیندها به طور موازی، طراحی شده است، در نتیجه زمان بوت و overhead محاسباتی کاهش می یابد. Systemd دارای ویژگی های بسیار دیگری می باشد که قابل مقایسه با init است.



    چرا init باید تعویض شود؟

    پروسه init به راحتی آغاز می شود، یک task درست بلافاصله بعد از آخرین task ای که با موفقیت در startup است، شروع می شود و در حافظه لود می گردد. این اغلب به تاخیر و طولانی شدن مدت زمان بوت، منجر می شود. با این حال، systemd برای سرعت بخشیدن به انجام کارها به طور منظم طراحی نشده است که از تمام تاخیرهای غیرضروری اجتناب کند.

    ویژگی های systemd
    • شفاف، stateforward و طراحی کارآمد
    • پروسه بوت ساده تر
    • پردازش همزمان و موازی در هنگام بوت
    • API بهتر
    • نحو واحد ساده
    • قابلیت حذف اجزای اختیاری
    • رد پاهای حافظه کم
    • تکنیک بهبود یافته برای بیان نیازمندی ها
    • آموزش اولیه نوشته شده در فایل کانفیگ و نه در in shell script
    • ایجاد امکان استفاده از سوکت دامنه یونیکس
    • برنامه ریزی شغلی با استفاده از تایمرهای تقویم systemd
    • رویداد لاگین با journald
    • انتخاب رویدادهای سیستم لاگین با systemd و همچنین syslog
    • لاگ ها در فایل باینری ذخیره می شوند
    • حالت systemd می تواند حفظ شود تا در آینده به آن رجوع شود
    • پروسه Track با استفاده از cgroup کرنل و نه PID
    • لاگین کاربرها توسط systemd-logind
    • تلفیق بهتر با Gnome برای




    تنگناهای systemd
    • همه چیز در یک جا
    • نبود استاندارد POSIX



    ادغام Systemd و Distro
    توزیع لینکس ادغام
    Fedora بله، اولین توزیع برای
    Arch بله
    RedHat بله
    CentOS بله
    Debian بله، Debian 8 با اسم رمز Jessie به طور پیش فرض system را خواهد داشت
    Gentoo بله، اما لازم است دانلود شود، نصب و کانفیگ side با custom init
    OpenSUSE بله
    Slack نه (اگرچه هنوز تا کنون درslackware اتخاذ نشده است، اما چه اتخاذ بشود چه نشود Patric Volkerding هیچ علامتی را نشان نمی دهد)
    Ubuntu بله، لازم است تا با Upstream نصب و کانفیگ شود.
    مناظره

    Linus Torvalds، معمار ارشد کرنل لینوکس، به شیوه توسعه دهنده اصلی نسبت به کاربران معتقد است و گزارش های باگ، خوب به نظر نمی رسد. همچنین گزارش شده است که فلسفه systemd، روش عجیب و ناآشنایی برای پروسه سیستم کنترل است. همانطور که از روی Patric Volkerding ثبت شده است و قابل توجه کاربران و توسعه دهندگان لینوکس و همچنین گاهی اوقات فروم های آنلاین، می باشد.



    Systemd در مقایسه با init
    systemd init Features
    Yes No DBus Dependency – Mandatory
    Yes No Device based Activation
    Yes No Device dependency configuration with udev
    Proprietary Cron/at Timer based Activation
    Yes No Quota Management
    Yes No Automatic Service Dependency Handling
    Yes No Kills users Process at logout
    Yes No Swap Management
    Yes No SELinux integration
    Yes No Support for Encrypted HDD
    Yes No Static kernle module loading
    Yes No GUI
    Yes No List all the child processes
    Yes Yes Sysv compatible
    Yes No Interactive booting
    No Yes Portable to non x86
    Several Distro Several Distro Adopted on
    Yes No Parallel service startup
    Yes No Resource limit per service
    No Yes Easy extensible startup script
    No Yes Separate Code and Configuration File
    Yes No Automatic dependency calculation
    No Yes Verbose debug
    V44+ N/A Version
    N/A 560 KB Size
    900 files + glib + DBus 75 files Number of Files
    224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code) 15000 (Approx) Lines of code – LOC
    همچنین توصیه میشود مقالات زیر را مطالعه کنید :

    آنچه که شما باید درباره process ها در لینوکس بدانید

    راهنمای دستورات Kill, PKill و Killall برای بستن یک پروسس در لینوکس

    چگونه با استفاده از PID Number نام یک Process را در لینوکس پیدا کنیم

    نحوه پیدا کردن Process های در حال اجرا که CPU و RAM زیادی در Linux مصرف میکنند

    متوقف کردن و غیر فعال کردن سرویس های ناخواسته در لینوکس

    آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس

    نحوه Kill کردن Process های بی مسئولیت با استفاده از دستور xkill در لینوکس



    نتیجه گیری

    هیچ چیز در حال اجرایی که pid=1 است نباید شکست بخورد، نباید آشفته باشد و می بایست کاربران به طور موثر و کارآمد آن را کنترل کنند. بسیاری از کاربران بر این باورند که استفاده از systemd بجای init چیزی بیش از دوباره کاری چرخه زمان به عنوان تاثیر جانبی لینوکس نیست. اما این ماهیت متنوع لینوکس است. به همین دلیل است که لینوکس بسیار قدرتمند است. تغییر خوب است و اگر به دلیل خوبی انجام می شود باید آن را درک کنیم.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 04-10-2021, 02:47 AM.

    #2
    سلام
    ضمن عرض تشکر از بابت ارائه مقاله های کاربردی، تصور می کنم شرح مقاله با عنوان اون در تضاد باشه
    لطفاً عنوان را اصلاح بفرمایید

    کامنت

    درباره انجمن منطقه لینوکسی ها

    انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

    شبکه های اجتماعی
    در حال انجام ...
    X