اشاره :
از هنگامی که کامپیوتر را روشن میکنید تا وقتی که سیستم عامل بالا میآید و کامپیوتر قابل استفاده میشود، مدت زمانی طول میکشد. در این زمان، تنظیمات مختلف روی کامپیوتر اعمال و آمادهسازیهای لازم انجام میشود. به مجموعه این کارها «بوت» میگویند.
بوت
Boot مخفف واژه Bootstrapping است.
این کلمه در حالت کلی به معنای تکنیکی است که در آن، یک سیستم ساده شرایط را برای بالا آمدن یک سیستم پیچیدهتر مهیا میسازد.
در فرآیند بالا آمدن سیستم عامل هم، همین موارد اتفاق میافتد. یعنی هنگامی که کامپیوتر را روشن میکنید، ابتدا یک برنامه کوچک که روی MBR است، اجرا شده و شرایط سختافزاری و نرمافزاری را بررسی میکند. در صورت لزوم تنظیمات آنها را تغییر میدهد و بعد، کنترل سیستم را به دست سیستم عامل اصلی میسپارد.
سیستم عامل بخش دوم بوت را انجام میدهد و کامپیوتر را برای استفاده مهیا میسازد.
MBR یا Master Boot Record، اولین سکتور هارددیسک است که اطلاعات مربوط به بوت روی آن قرار داده میشود.
هنگامی که کامپیوتر را روشن میکنید چه اتفاقی میافتد؟ بعد از روشن شدن کامپیوتر، اول از همه، مرحلهای به نام
(POST (Power On Self Test انجام میشود.
در این مرحله ابتدا سختافزارها تشخیص داده شده و بعد مورد بررسی اجمالی قرار میگیرند تا مشکل حادی نداشته باشند. بعد از این بررسی مختصر، یک بوق زده میشود که نشان از سلامت سیستم دارد.
اگر به جای این تک بوق، بوقهای ممتد یا منقطع زده شود، یعنی یکی از قطعات سختافزاری آسیب دیده و یا از جای خود خارج شده است و کامپیوتر قادر به ادامه کار نیست. مثلا بوق ممتد نشان از بروز اشکال در رم دارد و بوق منقطع از وقوع ایراد در کارت گرافیکی خبر میدهد.سپس MBR نوع "سیستم فایل" (File System) را تشخیص میدهد و بعد کنترل را به دست Boot Loader میسپارد. وظیفه "بوت لودر"، بالا آوردن سیستم عامل است. این "بوت لودر" در سیستم عاملهای مختلف فرق میکند.
در توزیعهای لینوکس، "بوت لودر" معمولا Lilo یا Grub است. "بوت لودر" در غالب نسخههای ویندوز NTLDR نام دارد که مخفف عبارت NT Loader است.
مراحل بوت در ویندوز
همانطور که گفتیم "بوت لودر" ویندوزهای 2000، 2003 و ایکسپی در حالت کلی تمام نسخههای سیستم عاملهای مبتنی بر ویندوز NT، برنامهای به نام NTLDR.EXE است.
این برنامه وظیفه لود یا همان بارگذاری ویندوز را به عهده دارد و از دو بخش تشکیل شده است که قسمت اول آن، StartUp Module و قسمت دوم OS Loader نام دارد.
این دو بخش، هر دو در داخل خود NTLDR قرار دارند.
ابتدا StartUp Module اجرا میشود. این برنامه در ابتدای کار خود، پردازنده را به حالت حفاظتشده (Protected Mode) میبرد. با این کار، Paging حافظه فعال شده و جداول صفحات (Page Tables) ، جدول توصیفگر وقفه (Interrupt Descriptor Table) و جدول توصیفگر عمومی (General Descriptor Table)ساخته میشود.
این کارها باعث میشود تا سیستم عامل، توان اجرا شدن پیدا کند. چون در حالت پیشفرض، پردازنده در حالت واقعی (Real Mode) قرار دارد، در این حالت تنها 640 کیلوبایت حافظه رم برای سیستم عامل در نظر گرفته میشود. با رفتن به حالت حفاظت شده، تمام حافظه برای سیستم عامل، قابل آدرسدهی میشود.
در این جا کار StartUp Module پایان یافته است و کنترل سیستم به دست OS Loader سپرده میشود.
اولین کاری که OS Loader انجام میدهد، شناسایی و ایجاد دسترسی به وسیلهای است که بوت از روی آن انجام میشود. بوت میتواند از روی فلاپی، هارددیسک، درایوهای نوری، فلش و ... انجام گیرد و OS Loader این وسیله را تشخیص داده و از طریق BIOS به آن دسترسی پیدا میکند.
Hibernate شده یا نشده؟
سپس بررسی میشود که آیا دفعه قبل، سیستم به صورت Hibernation (زمستان خوابی) خاموش شده است یا خیر.
برای این منظور، پوشه اصلی ویندوز برای یافتن فایل Hiberfil.sys مورد جستجو قرار میگیرد. اگر این فایل پیدا شد، بررسی میشود که آیا درون آن Active Set قرار داده شده است یا نه؟ (Active Set مجموعهای از تنظیمات آخرین دفعهای است که ویندوز اجرا شده است).
اگر جواب مثبت بود، Active Set به حالت غیر فعال تبدیل، سپس درون رم بارگذاری شده، کنترل به هسته ویندوز سپرده میشود و کامپیوتر از همان جایی که hibernate کرده بودید به کارش ادامه میدهد.
اما اگر کامپیوتر hibernate نشده بود روند کار به گونه دیگر خواهد بود و فایل Boot.ini پردازش خواهد شد.
وظیفه Boot.ini
در این حالت، ابتدا محتویات فایل boot.ini خوانده میشود.
محتویات اصلی این فایل، مشخصات سیستم عاملهای نصب شده روی کامپیوتر است. اگر روی کامپیوتر چند ویندوز نصب کرده باشید، حتما مشاهده کردهاید که موقع بوت، ابتدا از شما پرسیده میشود که کدام ویندوز را میخواهید اجرا کنید و اگر در فرصت چند ثانیهای انتخابی انجام ندهید، یکی از گزینهها به طور پیشفرض اجرا میشود( شکل2). اطلاعات مربوط به این منو در فایل boot.ini قرار دارد. همچنین بعضی تنظیمات پیشفرض ویندوز را هم میشود در آن گنجاند.
این فایل باید روی درایوی قرار داشته باشد که بوت از روی آن انجام میگیرد. اگر این فایل موجود نباشد، NTLDR در پوشه پیشفرض نصب ویندوز به دنبال آن میگردد. این پوشه در ویندوزهای ایکسپی و 2003 در آدرس C:\Windows و در سایر ویندوزها در آدرس C:\WINNT است.
اگر NTLDR فایل boot.ini را پیدا نکند، یک پیغام خطا داده و با این حال به کار خود ادامه میدهد.Ntdetect.com وارد میشود!
حالا نوبت به اجرای برنامه ntdetect.com است که اطلاعاتی کلی درباره سختافزار را از BIOS گرفته و به NTLDR میدهد. وقتی این کار تمام شد، پیغام Starting Windows روی صفحه نمایش داده میشود که حتما موقع روشن کردن کامپیوتر آن را دیدهاید. البته در ویندوزهای ایکسپی و 2003، این پیغام خیلی سریع محو میشود.
در همین لحظه اگر دکمه F8 را بزنید، وارد منوی پیشرفته بوت ویندوز میشوید. در این منو میتوانید نحوه بوت شدن را انتخاب کنید. منوی پیشرفته بوت شامل گزینههایی مثل Safe Mode، Debugging Mode و مواردی از این دست است.
در هر حال، چه F8 را بزنید و یکی از گزینهها را انتخاب کنید، و چه این کار را نکنید، بوت ادامه پیدا میکند. سرانجام، هسته ویندوزنوبت به بارگذاری هسته ویندوز (NTOSKrnl.exe) میرسد.
هسته، اصلیترین بخش ویندوز است که بسیاری از کارهای اساسی مثل مدیریت حافظه، مجازیسازی سختافزار و مسایلی از این قبیل را به عهده دارد.اطلاعات گرفته شده از NTDetect هم به هسته سپرده میشود. همچنین hal.dll هم به حافظه فرا خوانده میشود. این فایل شامل هسته Hardware Abstraction Layer است. hal به عنوان لایهای بین سختافزار و نرمافزار، اجازه میدهد که برنامهها به راحتی بتوانند به سختافزارها دسترسی پیدا کنند، بدون آنکه نیاز به دانستن پروتکلهای مخصوص داشته باشند.
وقتی هسته در حافظه قرار گرفت، درایورهای سختافزارهای کامپیوتر هم بارگذاری میشوند، هر چند که فعلا کارشان را شروع نمیکنند.
اگر تا این جا بوت با موفقیت سپری شده باشد، اطلاعات مربوط به آن در رجیستری ذخیره میشود تا چنانچه در دفعه بعد، مراحل بوت سیستم با مشکل روبرو شد، بتوانید با انتخاب گزینه Last Known Good Configuration از منوی بوت، ویندوز را با تنظیمات قبلی راهاندازی کنید.در این مرحله نوبت به شروع کار درایور System File میرسد. سپس صفحهای را میبینید که لوگوی ویندوز روی آن نقش بسته است. در این مرحله کنترل کامپیوتر به هسته ویندوز سپرده میشود. اکنون زیرسیستمها و سرویسهای سطح بالا راهاندازی میشوند.
زیرسیستم Win32 که کنترل دستگاههای ورودی/خروجی و دسترسی به نمایشگر را در اختیار دارد، نیز در همین قسمت اجرا میشود. بعد از این کار، صفحه login نمایش داده میشود تا کاربر نام کاربری و رمز عبور خود را وارد کند. البته اگر تنها یک کاربر برای سیستم تعریف شده باشد، این مرحله ممکن است به طور خودکار پیش رود.
اکنون راهاندازی سایر سرویسها و درایورها بر اساس اولویت ادامه مییابد و برنامههایی که در Startup قرار دارند، اجرا میشوند. در این جا بوت به پایان میرسد و کاربر میتواند کنترل کامپیوتر را در دست بگیرد.
با توجه به این مسائل، پاک شدن هر کدام از این فایلها میتواند مشکلی جدی در راه بوت شدن سیستم به وجود بیاورد و به همین دلیل است که اغلب آنها به صورت مخفی (Hidden) و محافظتشده (Protected) روی درایو C قرار داده شدهاند.