Initialization process concept in Linux


مطالعه این مبحث از کتاب LPIC 2 به زبان انگلیسی ( پیشنهادی )


Init is the first program to run after your system is booted, and continues to run as process number 1 until your system halts. Init’s job is to start other programs that are essential to the operation of your system. All other processes are descended from init. source


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


با توجه به توضیحات بالا جهت اجرای بقیه نرم افزار ها کرنل سعی می کند تا برنامه init را اجرا کند. که در ۳ مسیر زیر به دنبال برنامه init می گردد :

/sbin/init
/etc/init
/bin/init

در صورتی که کرنل نتواند برنامه init را پیدا و اجرا کند ارور kernel panic می دهد و یا به عبارت بهتر وارد panic mode می شود.
در واقع با اجرای برنامه ی init بقیه برنامه های مورد نیاز سیستم عامل به اجرا در می آید ( می آورد ) حالا این که نحوه اجرای بقیه برنامه به صورت باشد، از چه راه حلی و یا به چه شکل صورت گیرد را می توان در قالب ۳ نوع و یا ۳ حالت و یا ۳ روش و یا ۳ معماری دانست.

Currently three popular initialization process methods are used in Linux distributions:

  1. Unix System V (also called SysV)
  2. systemd
  3. Upstart

در خصوص این که این ۳ تا روش و یا معماری چه طور کار می کنند و چه کانفیگ هایی لازم دارند و یا کار با آن ها چگونه است در مقاله ای جدا بررسی می شود.


Does debian use systemd ?

Does centos or RHEL use systemd ?

Determining the init system in linux