مرحله بوت لودر

nerdprogrammer Boot Loader phase, Linux Start-Up Sequence

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

بوت لودر چیست؟

بوت لودر یک تیکه کد/نرم افزار می باشد که وظایف متعددی دارد.یکی از وظایف مهم بوت لودر ها، Initialize نمودن سخت افزار و بارگذاری کرنل می باشد.می توان برای این موضوع به مواردی نظیر کانفیگ سرعت پردازنده،Initialize نمودن Memory و پیاده سازی رجیستر ها و پاک سازی Memory اشاره کرد.

مراحل کار بوت لودر

Booting

در Embedded System ها معمولا بوت لودر از Flash Device ها بارگذاری می شود.اما در سیستم های رو میزی ما بوت لودر عموما بر روی Hard disk قرار می گیرد.در این مرحله بوت لودر ها وظیفه دارند پردازنده را initialize کنند،Cache پردازنده را تنظیم نمایند، چندین Register را راه اندازی کنند و RAM را Verify کنند.

Relocation

بوت لودر ها خود را به رم انتقال می دهند.دلیل این کار بالاتر بودن سرعت RAM نسبت به Flash device ها و یا Hard Disk می باشد.همچنین بحث فشرده سازی بوت لودر و کم تر اشغال کردن فضای استوریج نیز مطرح است و در زمان مورد نیاز بوت لودر Decompress می شود.

Device Initialization

در این مرحله،بوت لودر Device های بنیادین را برای تعامل با کاربر initialize می نماید.منظور کلی همان راه اندازی موارد مورد نیاز برای ایجاد یک Console می باشد که در اختیار کاربر باید قرار گیرد. همچنین در این مرحله بوت لودر وظیفه دارد Device های مورد نیاز برای بارگذاری کرنل (و گاهی Rootfs) را Initialize نماید.این موارد می توانند کارت شبکه،Flash Device،USB و موارد مشابه آن باشند.

UI

در این مرحله یک محیط کاربری برای کاربر نشان داده می شود که لیستی از کرنل های موجود و یا سیستم عامل هایی که کاربر می تواند بارگذاری کند را نمایش می دهد.معمولا ما در GRUB این UI را به اسم Grub-Menu می شناسیم.

Image Download

بوت لودر نیازمند آن است که در کرنل مشخص شده باشد که در کجا قرار دارد (شبکه،flash،…).در کنار آن نیز image کرنل فشرده شده است و باید در RAM بارگذاری شود.بنابراین بوت لودر باید کرنل را Decompress نماید.همچنین اگر initrd نیز وجود داشته باشد بوت لودر آن را نیز باید در رم قرار دهد.توجه داشته باشید که ادرس رمی که کرنل در آن قرار دارد،به انتخاب بوت لودر با استفاده از خواندن هدر فایل ELF ایمیج کرنل می باشد.در این بخش کرنل یک raw binary می باشد به اضافه اطلاعاتی که باید به بوت لودر انتقال داده شودند(همانند ادرس قرار گیری کرنل).

Preparing kernel boot

در ادامه یک آرگومان باید به کرنل پاس داده شود.این دستورات در مسیری قرار می گیرند که کرنل لینوکس از آن مطلع است.بوت لودر باید یک محدوده ای از مموری را برای پاس دادن آرگومان راه اندازی کند و آن را با یک data structure که کرنل آن را متوجه می شود initialize نماید و آن را با مقادیر مورد نیاز پر نماید.

Booting kernel

در نهایت،بوت لودر کنار می رود و سیستم را تحویل کرنل می دهد.مموری که بوت لودر اشغال کرده بود نیز به کرنل داده می شود.این Memory map را کرنل در نهایت هندل می کند.

این مراحل به طور کلی وظایف یک بوت لودر است اما عموما همه بوت لودر ها توانایی های مشابهی ندارند.برای مثال بوت لودر های نه چندان معروف ممکن است توانایی بوت از شبکه را نداشته باشند.این توانایی کاملا برای دیباگ مفید است و نداشتن آن یک ضعف محسوب می شود یا بعضی از بوت لودر ها UI ندارند.

از بوت لودر به کرنل

Argument passing

کرنل لینوکس همانند تمامی Application ها توانایی دریافت آرگومان دارد.این یک قابلیت بسیار خوب کرنل لینوکس است.احتمالا این آرگومان ها را در هنگام تغییر runlevel یا غیر فعال کردن کارت گرافیکتان هنگام مشکل دیده اید.این آرگومان ها را با فشار دادن کلید e بر روی کرنل مورد نظر خود جلوی کلمه linux می بینید.

linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff quiet splash

همچنین بعد از بوت می توانید با استفاده از proc آرگومان هایی که به کرنل پاس داده شده است را نگاه کنید :

$ cat /proc/cmdline

از این پارامتر ها چندین پارامتر مفید و مهم هستند. برای مثال root نام دیوایسی است که تحت عنوان rootfs قرار است استفاده شود یا debug که برای سطح بندی خروجی debug message هنگام بوت شدن سیستم چاپ می شود.در اینجا می توانید لیست کاملی از این آرگومان ها را مشاهده کنید.

شاید دوست داشته باشید:

Kernel Init

به صورت کلی ۳ فرآیند هنگام بوت و initialize شدن کامل سیستم رخ می دهد تا شما وارد User space شوید.این سه فرآیند به ترتیب زیر است :
1.Bootloader
2.Kernel initialization
3.Init process
ما در “مرحله بوت لودر” فرآیند اول را بررسی کردیم.حال می خواهیم در مورد Kernel initialization صحبت کنیم.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *