با در نظر گرفتن اينكه شما يك دانش ابتدايي در رابطه با كامپيوتر ها داريد ,در اين بخش به فرايند بوت در سيستم عامل لينوكس ميپردازم.( لطفا نصب سیستم رو با بوت سیستم اشتباه نگیرید!)
زماني كه شما سيستم رو به وسيله دكمه ی پاور راه اندازي ميكنيد, سيستم شروع به انجام يك سری كار ميكنه مثل نمايش لوگو روی مانيتور , نمايش پيام های متنی و در آخر هم پنجره لاگين رو نمايش ميده.
از زماني كه شما دكمه ی پاور رو فشار ميدين تا زمانی كه با پنجره لاگين مواجه ميشين اتفاق های جالبی ميوفته كه در ادامه توضيح ميدم.
بايوس اولين نرم افزاری است كه در سيستم اجرا ميشه .
بايوس سخت افزار رو مقدار دهی ميكنه و اطمينان حاصل ميكنه كه سخت افزار هاي سيستم سالم هستن.اصلی ترين وظيفه ی بايوس بارگذاری بوت bootloader هست.
این نرم افزار وظيفه ی بارگذاری كرنل درون حافظه رو بر عهده داره.bootloader كرنل رو به همراه مجموعه ای از پارامتر ها اجرا ميكنه. LILO قديمی ترين bootloader سيستم عامل لينوكس است.با اينحال رايج ترين bootloader در حال حاضر Grub نام داره كه در نسخه هاي 1 و 2 موجود است.
در زمان بالا بودن سيستم وظيفه ی كرنل تخصيص منابع است, مثل اختصاص دادن قسمتی از حافظه به يك برنامه , در فرايند بوت زماني كه كرنل بارگذاری ميشه به دنبال برنامه اي به نام init ميگرده تا ادامه ی فرایند رو به init بسپره .
init اولين پروسه اي هست كه بعد از بارگذاری سيستم اجرا ميشه . اين پروسه سرويس های ضروری رو مديريت ميكنه .سه پياده سازي اصلي init . در لينوكس وجود داره كه در بخش آخر توضيح خواهم داد
اولين قدم در پروسه ی بوت لينوكس بايوس است كه سالم بودن سخت افزار ها رو بررسی ميكنه.
بايوس يك firmware است كه به همراه كامپيوتر های سازگار با IBM معرفی شد.به طور معمول شما از اين برنامه برای ترتيب بوت سيستم روی هاردديسك , بررسی زمان سيستم , بررسی آدرس سخت افزاری سيستم استفاده ميكنيد. با اينحال اصلی ترين وظيفه ي بايوس پيدا كردن bootloader است.
زمانی كه بايوس اجرا ميشه به دنبال پارتيشن بوت ميگرده . اين بستگي به اين داره كه شما چطور سيستم خودتون رو پارتيشن بندی كردين.بايوس به دنبال قسمت هايی به نام MBR يا GPT ميگرده(دو نوع فرمت براي پارتيشن بندي سيستم).MBR روي اولين سكتور از هارد شما قرار داره و اولين 512 بايت هارد شمارو اشغال کرده.MBR حاوي يك كده كه اون كد يه برنامه رو يه جای ديگه ديسك اجرا ميكنه و در واقع اون برنامه bootloader رو بارگذاری ميكنه.
اگر شما ديسك رو به صورت GPT پارتيشن بندی كنين , مكان bootloader يك مقدار تغيير ميكنه.
راه ديگري كه شما ميتوانيد به جای بايوس برای بوت سيستم استفاده كنيد , استفاده از UEFI است. UEFI طراحی شده تا جانشين بايوس باشه.اكثر سخت افزار های كامپيوتری امروز با اين ميان افزار ارائه ميشن.
چندين سال است كه كامپيوتر های مكينتاش با استفاده از EFI بوت ميشن . همچنين مايكروسافت نيز براي اكثر چيزها از اين تكنولوژی استفاده ميكند.GPT فرمت مورد نظر برای استفاده از EFI بود.شما الزاماً نياز نداريد كه هنگام بوت روي ديسك هاي با فرمت GPT از EFI استفاده كنيد اين يك امر اختياري است.اولين سكتور از GPT متعلق به Protective MBR است . اين برنامه امكان بوت را در سيستم های برپايه بايوس فراهم مي آورد.
زمانی كه شما سيستم را روشن ميكنيد UEFI تمام اطلاعات پروسه بوت را در يك فايل با فرمت efi ذخيره ميكنه.اين فايل در يك پارتيشن خاص به نام EFI كه حاوي bootloader است ذخيره ميشه.UEFI بسيار باهوش تر از بايوس است اما تا زمانی كه ما از لينوكس استفاده ميكنيم .اولين برنامه اي كه اجرا ميشه بايوسه.
وظايف اصلي بوت لودر عبارتند از:
رايج ترين بوت لودر در ميان توزيع هاي لينوكسی GRUB است .شما اكثر اوقات از GRUB برای بوت استفاده ميكنيد.بوت لودر هاي زيادی براي لينوكس وجود دارند . دو نمونه رايج LILO و efilinux هستند.با اينحال GRUB اصلی ترين برنامه ی بوت سيستم ها لينوكسی است.
هدف اصلی بوت لودر بارگذاری كرنل است.اما كجا كرنل رو پيدا ميكنه? براي پيدا كردن كرنل نياز داريم كه پارامتر های كرنل رو بررسي كنيم.برای بررسی پارامتر های كرنل بايد وارد منو GRUB بشيم , در اكثر موارد شما ميتوانيد در هنگام بوت سيستم با فشردن كليد 'e' وارد منوي GRUB بشين. پارامتر های كرنل عبارتند از:
حالا كه بوت لودر با پارامتر هاي مورد نظر تنظيم شده است.نوبت به اين رسيده ببينيم كه چگونه شروع به كار ميكنه:
كرنل وظيفه ي مديريت سخت افزار رو بر عهده داره .هرچند كه در زمان بوت كل درايور ها در دسترس كرنل نيستند.ما به فايل سيستم ريشه موقتی وابسته هستيم كه حاوی ماژول های مورد نياز كرنل است تا كرنل به وسيله اين ماژول ها به باقی سخت افزار نيز دسترسی پيدا كنه.
در نسخه هاي قديمی تر لينوكس, اين وظيفه ارو initrd انجام ميداد.كرنل initrd رو مانت ميكرد, درايورهای مورد نياز رو دريافت ميكرد و زماني كه هرچيزی كه نياز داشت رو بارگذاری كرده بود. initrd با فايل سيستم اصلی جايگزين ميشد.
امروز ما چيزی داريم به اسم Initramfs كه يك فايل سيستم موقته كه درون خود كرنل قرار داره و حاوی تمامی درايور های مور نياز فايل سيستم اصليه. و ديگر هيچ مكانی برای يافتن initrd وجود نداره.
حالا که كرنل تمام ماژول های مورد نياز برای ساختن ديوايس روت و مانت پارتيشن روت رو در اختيار داره.پارتيشن روت اول در حالت فقط خواندنی مانت ميشه تا fsck بتونه با امنيت برای ارزيابی يكپارچگی سيستم اجرا بشه.
بعد از آن , فايل سيستم روت از اول مانت ميشه ولی این دفعه در حالت خواندنی-نوشتنی. در آخر هم كرنل init رو در فايل سيستم اصلی قرار ميده و اجراش ميكنه.
همانطور كه در بخش های قبلی توضيح داده شد ,init اولين پروسه ای است كه اجرا ميشه و تمام سرويس های موردنياز برای كار كردن سيستم عامل رو راه اندازی ميكنه.
به طور كلی سه نوع پياده سازی init در لينوكس وجود داره:
System V init (sysv)
sysvيك init سنتی در لينوكس.sysv به طور مرتب پروسه ها رو متوقف و راه اندازی ميكنه. اينكار رو بر اساس اسكريپت های راه اندازی انجام ميده.وضعيت سيستم توسط runlevel ها نشان داده ميشه و هر كدام از اين runlevel ها سيستم رو به طور متفاوتی مديريت ميكنن.
Upstart
شما ميتونيد upstart رو در نصب نسخه های قديمی تر اوبنتو پيدا كنيد.Upstart از ايده jobs و events برای مديريت پروسه ها استفاده ميكنه.هركدام از job ها اقدامات خاصي رو در جواب event ها انجام ميدن.
Systemd
Systemd يك استاندار جديد براي init است.يك سيستم هدف گرا .اساسا شما يك هدف برای بدست آوردن داريد.systemd تمامی چيزهای كه شما برای رسيدن به مقصود خود نياز داريد رو فراهم ميكنه.
براي اطلاعات بيشتر به منبع مراجعه كنيد.