بوت - پروسه راه اندازی سیستم روی یونیکس و(system V) سیستم V نسخه ۴
پروسه بوت شدن (یا همان سلسله مراتب بوت) در سیستم ها متفاوت است، ولی تقریبا میتوانند به مراحل و اجزای کنترل شده ای زیر تقسیم شوند:
1. hardware سخت افزار
2. operating system (OS) loader اجراکننده سیستم عامل
3. kernel کرنل
4. root user-space process (init and inittab) فضای فرایندهای روت مثل
5. boot scripts اسکریپت های بوت
بعد از روشن کردن یا راه اندازی هارد کنترل به برنامه ای داده میشود که در حافظه فقط خواندنی ذخیره می شود(به طوری عادی PRAM). به خاطر دلایل تاریخی سرنوشت اش به کامپیوترهای شخصی گره خورده، برنامه ای که به نام بایوس(BIOS) صداش میزنیم.
این برنامه به طور معمول یک تست کامل برروی ماشین انجام می دهد و پارامترها را از حافظه فرار میخواند.
این حافظه باطری پشتیبان در کامپیوترها با نام حافظه غیرفرار بایوس( COMS) شناخته می شود، پس ما به عنوان COMS یاد میکنیم و در دنیای بیرون در کامپیوتر با نام NVRAM یا همون حافظه غیر فرار شناخته می شود (nonvolatile RAM).
پارامترهای ذخیره شده در حافظه های غیر فرار در سیستم های مختلف متفاوت هستند، اما حداقل ها را باید مشخص کند که کدام دستگاه باید منابع اجرا کننده سیستم عامل را تامین کند، یا کدام دستگاه باید برای یکی از انان پایش شود، که چنین دستگاه ی را با نام دستگاه بوت میشنایم. مرحله بارگذاری سخت افزار بوت، اجرا کننده سیستم عامل از طریق مکان مشخص برروی دستگاه بوت بارگذاری می شود و کنترل را به او می دهد.
نکته: دستگاهی که اجراکننده سیستم عامل را میخواند میتواند از طریق شبکه متصل شود، در این حالت پروتکل های بوت شدن با پروتکل های همانند:DHCP, TFTP, PXE, Etherboot و غیره مورد استفاده قرار میگیرد.
کار اصلی اجراکننده سیستم عامل این است که کرنل روی دستگاه ها پیدا کند، بارگذاری کند، اجرا کند. بیشتر اجراکننده سیستم عامل فعالیت خودرا به نمایش میگذارند ان هم به منظور مشخص کردن کرنل دلخواه و انتخاب و همچین پیکربندی پارامترهای اختیاری در کرنل( می توانید پشتبان بگیرد در صورتی که نسخه فعلی کامپایل شده کار نمی کند).
در کامپیوترهای سنتی اجراکننده سیستم در اولین بلوکه ۵۱۲ بایته دستگاه بوت قرار دارد، که به نام
بلوک Master Boot Record )MBR) می شناسیم.
در بیشتر سیستم ها اجراکننده سیستم به خاطر محدویت ها بسیار محدود شده است، حتی در سیستم های غیررایانهای هم از نظر اندازه و پیچدگی خیلی محدودیت های زیادی دارند. اما این محدویت ۵۱۲ بایت (از جلمه پارتیشن بندی) در کامپیوترها باعث می شود عملکردی در ان امکان پذیر نباشد.
بنابراین بیشتر سیستم ها این نقش را به اجراکننده سیستم عامل اولیه و اجراکننده سیستم عامل ثانویه تقیسم می کنند. این اجراکننده سیستم عامل ثانویه امکان پارتیشن بندی دیسک و ذخیره سازی بهتر را می دهد.
اقلب در سیستم های لینوکسی اجراکننده سیستم عامل از lilo و grub استفاده میکنند.
وقتی که کرنل بارگذاری شد، اجزای مختلف سیستم عامل را بارگذاری می کند. هر بخش از نرم افزار مسئولیت کاری رابرعهده دارد، معمولا درایورها اجزای هست که به ان رسیدگی می شود. کرنل فضایی مجازی را راه اندازی می کند (این یک فرایند کرنل است که در هسته های مدرن لینوکس به نام kswapd شناخته می شود) و برخی از فایل سیستم ها را در محل / مونت میکند.
بعضی از پارمترها ممکن به کرنل منتقل شود(برای مثال پیش فرض فایل سیستم روت میتواند نادیده گرفته شود). برای اطلاعات بیشتر درمورد پارامترهای لینوکس میتوانید (bootparam(7 را بخوانید.
فقط کرنل پردازش اولیه کاربر را ایجاد میکند که PID عدد ۱ (process ID) را اختیار می کنند. به طور سنتی این فرایند یا پروسه برنامه /sbin/init/ را اجرا می کند، که پارامترهای که توسط کرنل پردازش نشده بود را منتقل میکند.
نکته: توضیحات زیر مبتی و برپایه سیستم های یونیکس و سیسیتمVنسخه ۴ میباشد(System V Release 4). در صورتی که خیلی از سیستم های از رویکردی متفات به نام (systemd(1 اتخاذ کرده اند. که در آن فرآیند راه اندازی در قسمت(bootup(7 به تفصیل شرح داده شده است.
وقتی که /sbin/init/ اجرا می شود برای خواندن دستورالعمل ها فایل /etc/inittab/ را می خواند، این فایل /etc/inittab/ مشخص می کند که چه اجرا شود و در چه سطحی و محیطی به ادمین می دهد برای استفاده برخی از موارد. با اجرای هر سطحی با خدماتی متفاوتی روبرو می شوید.(برای مثال S حالت تک کاربره است سطح کاربری ۲ اکثر خدمات شبکه ها فعال است).
کاربر میتواند سطوح اجرایی را تغییر دهد ان هم از طریق (init(1 سطح فعلی را از طریق (runlevel(8 جتسجو کنید.
با این وجود راه مناسبی برای ویرایش خدمات از طریق این فایل /etc/inittab/ نیست،فقط مجموعه ای از اسکریپت ها را آغاز می کند که در واقع سرویس را متوقف/شروع می کند.
نکته: توضیحات زیر مبتی و برپایه سیستم های یونیکس و سیسیتمVنسخه ۴ میباشد(System V Release 4). درحالی که بسیار ار سیستم های پرکاربر (Slackware Linux, FreeBSD, OpenBSD) اسکریپت متفاوتی دارند.
برای مدریت هر سرویس(mail, nfs server, cron) یک اسکریپت راه انداز جداگانه وجود دارد که در دایرکتوری (در بیشتر نسخه های لینوکس/etc/init.d/) می باشد. هر یک از این اسکریپت ها یک ارگومان "start" ( برای فعال کردن سرویس) و "stop" ( برای غیرفعال کردن سرویس) استفاده می شود. اسکریپت ها ممکن است پارمترهای اختیاری "convenience" مثل: ("restart" غیرفعال کردن و فعال کردن دوباره، "status" نمایش وضعیت سرویس و غیره). اجرای اسکریپت بدون ارگومان، ارگومان های ممکن را نمایش می دهد.
برای ایجاد اسکریپت خاص فعاکردن/غیرفعاکردن در سطوح خاص چند ترتیب دایرکتوری وجود دارد، به طور معمول /etc/rc[0-6S]. هر کدام از این دایرکتوری ها لینکی (symbolic link) هستند به دایرکتوری /etc/init.d/.
اسکریپت های اولیه(معمولا /etc/rc/) معمولا توسط inittab فراخوانی میشود. این اسکریپت ها اولیه با لینکی به زیرداکتوری ها متصل می شودند. هر لینکی که که با ارگومان S شروع شود، اگومان "start" فراخوانی میشود( سرویس فعال میشود)، هر لینکی که که با ارگومان K شروع شود، ارگومان "stop" فراخوانی میشود( سرویس غیر فعال میشود).
برای تعریف فعال شدن/غیرفعال شدن در همان سطح اجرایی، که شامل order-number است. همچنین برای وضوح معمولا نام لینک با نام سرویسی که ان اشاره می شود، خاتمه می یابد. به عنوان مثال:
/etc/rc2.d/S80sendmail starts سرویس در سطح اجرای ۲ فعال می شود
این بعد از /etc/rc2.d/S12syslog/ اتفاق می افتد، اما قبل از اجرای /etc/rc2.d/S90xfs/.
برای مدیریت این سطوح اجرایی معمولا در سیستم ها ابزاری وجود دارد که به کمک شما میاید
مثل:(chkconfig(8
ازطرف خودم: یادتونه در مطلب قبلی درباره معنای خاصی بعضی از کلمه ها صحبت می کردیم، خود لینوکس گفته که یک کلمه به چه معنی داره
برنامه های که اقلب خدمات ارائه می دهند به نام "daemon" شناخته می شوند، معمولا "daemon" ممکن است پارامترهای مختلفی را دریافت کنند. برای اینکه کابرروت بتوانید این اسکریپت ها را تغییر دهد از برخی از پیکربندی های جداگانه استفاده میشود در یک دایرکتوری خاصی قرار دارد که همراه ان اسکریپت بوت پیدا میشود(در سیستم های قدیمی /etc/sysconfig/).
در سیستم های قدیمی یونیکس چنین پرونده های شامل دستورات و گزینه های مختلفی برای "daemon" هست. اما در سیستم های مدرن لینوکس(همچین HP-UX) فقط محیط شل شامل می شود.
بوت اسکریپتی در /etc/init.d/ خوانده میشود و پیکربندی انجام میشود(به دین منظور منبع از فایل می اید) بعدا متغییرها و مقدار ها استفاده میشود.
/etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/
init(1), systemd(1), inittab(5), bootparam(7), bootup(7), runlevel(8), shutdown(8)
این صفحه بخشی از نسخه۴.۱۵ پروژه صفحه شخصی لینوکس است. توضیحات مربوط به پروژه، اطلاعات مربوط به گزارش ها، اشکالات و جدیدترین نسخه صفحه را میتوانید از لینک زیر پیدا کنید.
https://www.kernel.org/doc/man-pages/
تمامی مطالب برگفته شده از راهنمای لینوکس بوده است، کافی دستور زیر اجرا کنید بخونید:
man boot