اطلاع از نحوهی بوت شدن سیستم عامل، به ما در رفع اشکالات بوجود آمده، در طی فرآیند بوت، کمک میکند. همچنین ما میتوانیم این مراحل را، با توجه به نیاز خودمان، پیکربندی نماییم. وقتی شما کامپیوتر خود را، روشن و یا restart میکنید، مراحل مختلفی انجام میشود، تا صفحهی login، نمایش داده شود. در ادامه مراحل بوت شدن، در سیستم عامل لینوکس مورد بررسی قرار میگیرد.
مراحل بوت شدن لینوکس
مراحل بوت شدن، با روشن کردن کلید پاور در کامپیوتر و یا restart آغاز میگردد. در مرحلهی اول، دستوالعملهای ذخیره شده، در BIOS یا UEFI اجرا میگردد. در مادربردهای امروزی از UEFI به جای BIOS استفاده میگردد. گرچه عموما، از هر دو گزینه BIOS و UEFI پشتیبانی میشود.
مرحلهی اول – BIOS/UEFI
BIOS
BIOS، نوعی firmware یا میانافزار میباشد. اولین برنامهای که، پس از روشن شدن کامپیوتر، اجرا میگردد، BIOS یا Basic Input Output system است. BIOS، در چیپی بر روی مادربورد قرار دارد. وظیفهی BIOS، چک کردن اولیهی سختافزار کامپیوتر است. به این عمل POST یا Power On Self Test میگویند. پس از چک کردن سخت افزار BIOS به سراغ دیسک فعال رفته و سکتور بوت دیسک را، در حافظهی اصلی قرار داده و اجرا میکند. BIOSهای قدیمی، بر روی حافظهی ROM ذخیره میشدند. امروزه BIOS، بر روی حافظهی Flash ذخیره میگردد. مزیت ذخیره بر روی حافظهی فلش، قابلیت بروزرسانی آن میباشد. از معایب آن، خطر آلوده شدن BIOS به Rootkitها میباشد.بعضی از مادربردها دارای دو عدد، BIOS هستند. که از BIOS دوم، به عنوان پشتیبان، استفاده میگردد.
BIOS فقط حاوی دستورالعملها میباشد. مقادیر تنظیمات انجام شده توسط کاربر، مثل تاریخ، رمزعبور و غیره در حافظهای به نام CMOS ذخیره میگردد. حافظهی CMOS دارای یک باطری، برای نگهداری محتویات حافظه میباشد. در صورتیکه باطری را برداریم و یا باطری ضعیف شده باشد، اطلاعات CMOS پاک شده و BIOS از اطلاعات پیشفرض خود استفاده نموده و سیستم را راهاندازی مینماید.
UEFI
UEFI یا Unified Extensible Firmware Interface نسخهی توسعه یافته از EFI میباشد. UEFI به عنوان جایگزینی برای BIOS در نظر گرفته شده است. UEFI دارای قابلیت پشتیبانی از فایل سیستم است. UEFI، از دیسکهایی که، با استاندارد GPT، پارتیشنبندی شده باشند، پشتیبانی میکند. همچنین UEFI، دارای رابط کاربری بهتری میباشد.
مرحلهی دوم – MBR/GPT
MBR
MBR یا Master Boot Record سکتور صفر دیسک و یا سکتور بوت از دیسک است. این بخش در ابتدای هر دیسک قرار میگیرد و در آن، اطلاعات مربوط به پارتیشنهای دیسک و همچنین کدهای اولیه، مربوط به bootloader، در آن، ذخیره می گردد. این استاندارد برای پارتیشنهای تا ظرفیت 2 ترابایت قابل استفاده میباشد. در این روش شما بیش از چهار پارتیشن اصلی نمیتوانید ایجاد نمایید. برای ایجاد پارتیشنهای بیشتر شما میتوانید سه پارتیشن اصلی و پارتیشنهای دیگر را به صورت extended داشته باشید.
GPT
GPT یا GUID Partition Table به عنوان جایگزین برای MBR ایجاد شده است. با استفاده از GPT میتوانید، تعداد 128 پارتیشنهای اصلی ایجاد نمایید. این روش سایز پارتیشنهایی را که پشتیبانی مینماید، 9.4ZB است.
تفاوتهای MBR و GPT
- تعداد پارتیشن اصلی برای MBR حداکثر 4 عدد و برای GPT تا 128 عدد
- MBR حداکثر تا 2 ترابایت اندازه پارتیشن را پشتیبانی میکند اما در GPT این عدد به 9.4ZB میرسد.
- در GPT افزونگی دارد و در MBR خیر.
مرحلهی سوم – Bootloader
در این مرحله، bootloader برای اجرا، بارگذاری میشود. bootloader، هستهی سیستم عامل را در حافظهی اصلی بارگذاری کرده و مدیریت سیستم را به آن واگذار مینماید. بدون بوت لودر، نمیتوان سیستم عامل را، بارگذاری نمود. bootloader در لینوکس، دارای انواعی چون Grub و Grub2 و LILO میباشد. که درحال حاضر عموما از GRUB2 استفاده میگردد.
مرحلهی چهارم – Kernel
در ادامهی مراحل بوت شدن لینوکس، هستهی سیستم عامل، توسط bootloader، در حافظهی اصلی بار میشود. کرنل یا هسته سیستم عامل، نقش اصلی را، در ارتباط برنامههای مختلف با سختافزار و مدیریت آنها، ایفا میکند. کرنل در ابتدا به صورت فشرده بوده و پس از بار شدن در حافظه، خودش را، از فشردگی خارج میکند. سپس مدیریت سیستم را بدست میگیرد.
مرحلهی پنجم – init/systemd
اولین process، یا فرآیندی که، کرنل اجرا میکند، systemd میباشد. systemd، در بیشتر توزیعهای لینوکس، استفاده میگردد. این فرآیند جایگزین گونهی قدیمی فرآیند SysV init، شده است. systemd، والد تمام فرآیندهای سیستم عامل است. وظیفهی systemd مدیریت فرآیندها، میباشد.
مرحلهی ششم – Runlevel/Targets
Runlevels
در اینمرحله ، در صورتی که، فرآيند اولیه، فرآیند init باشد، از سطوح اجرا(Runlevel) برای مشخص کردن سرویسهایی که باید در هر سطح، اجرا شوند، استفاده میکنیم. در فرآیند init هفت سطح اجرایی، تعریف گردیده است. در ادامه جدول مقایسهی فرآیند init با systemd در سطوح اجرایی مختلف را مشاهده مینمایید.
Targets
در صورتی که فرآیند اول ما systemd باشد، سرویسهایی که باید اجرا شوند در فایل etc/systemd/system/default.targets/ قرار دارند. به عنوان مثال، برای محیط دسکتاپ، target انتخاب شده، معادل runlevel 5 در سیستم قدیمی init میباشد، که حالت چندکاربرهی گرافیکی است.
SystemV Runlevel | systemd target | توضیحات |
0 | poweroff.target | آماده برای خاموش شدن سیستم |
1 | rescue.target | حالت تک کاربره |
2 | حالت چندکاربره بدون فایل سیستم شبکه | |
3 | multi-user.target | حالت چند کاربره فقط دارای محیط متنی خط فرمان بدون محیط گرافیکی |
4 | قابل تعریف توسط کاربر | |
5 | graphical.target | حالت چندکاربره با محیط گرافیکی |
6 | reboot.target | حالت reboot |