در این مقاله قصد دارم یک بررسی مختصری از فرایند بوت در سیستم عامل لینوکس ،انجام دهم که چگونه سیستم عامل از مراحل مختلف بوت عبور میکند.این مقاله برای آن دسته از خوانندگانی که به تازگی قدم در دنیای لینوکس گذاشتهاند ،نوشته شده است.درک چگونگی بوت در این شرایط بسیار مهم است در زمانی که بخواهید عیب سیستم را برطرف کنید.از زمانی که سیستم روشن میشود و بعداز مدتی کهما لاگین میکنیم ،سعی میکنیم که بفهمیم چه مراحلی از مراحل بوت گذشته و پشت پرده بوت سیستم چه اتفاقی افتاده است.
در دنیای لینوکس ،۶ مرحله بوت شدن وجود دارد.اجازه دهید راجب جزئیات آنها یکی یکی بحث کنیم.
6-Stages-Of-Linux-Boot-Loader
۱-BIOS (Basic Input Out System)
سیستم روشن ،انتقال کنترل سختافزار به BIOS.
BIOS اولین برنامه اجرا میشود و مستقل از سیستمعامل میباشد.
BIOS در ROM (حافظه فقط خواندنی)ساکن است.
مرحله اول BIOS (Basic Input Out System) پست (Power on self test (POST)) میباشد که اطلاعات سختافزار را اسکن می کنه وبعد برای bootloader چک می کند.
اسکن برای دستگاههای بوت (فلاپی، CD و / یا DVD درایو).درطول این مدت ما میتوانیم کلیدهای(F2,F12)بستگی به سیستم شما دارد ،برای تغییر ترتیب بوت را فشار بدهیم .
BIOS سکتور اول hard drive را میخواند.که بوت سکتور (boot sector) نامیده میشود جایی که بوتلدر(bootloader)درآن ساکن است.وقتی که بوتلدر تشخیص داده شد و BIOS آن را بارگزاری کرد کنترل بوتلودر را فراهم میکند ،شروع به پردازش مرحله بعدی از مراحل بوت می کند.
۲-MBR (Master Boot Record)
مستر بوت رکرد(MBR) در سکتور اول دسیک بوتایبل قرار دارد.
Bootloader ممکن است در MBR باشد ویا جایدیگر.
MBR ۵۱۲ بایت و دارای ۳ component میباشد.
۴۴۶ بایت اول primary boot loader هستند که حاوی کدهای قابل اجرا میباشند.
۶۴ بایت بعدی جدول اطلاعات پارتیشن هستند.(partition table information)
۲ بایت آخر هم برای عدد جادویی(Magic number)استفاده می شود.(چک کردن MBR)
MBR حاوی اطلاعات GRUB/LILO پس از اجرا بوتلودر GRUB/LILO
۳-GRUB (GRand Unified Bootloader)
GRUB مخخف (GRand Unified Bootloader)میباشد.GRUB دارای رابط منوی خودش است و قادر به هدایت فایل سیستم است.
لیستی از کرنلهای در دسترس را در /etc/grub.conf وجود دارد.اگر چند کرنل نصب شده باشد ،آپشنهایی برای انتخاب آنها فراهم میکند.در CentOS grub.conf زیر شما میتوانید ایمیج kernel و initrd را ببینید.
#boot=/dev/sda
default=0
timeout=5
password --md5 $1$19oD/1$NklcucLPshZVoo5LvUYEp1
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-279.el6.i686)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.el6.i686 ro root=/dev/mapper/vg_tecmint-lv_root
rd_NO_LUKS rd_LVM_LV=vg_tecmint/lv_swap LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16
crashkernel=auto rd_LVM_LV=vg_tecmint/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb
quiet
initrd /initramfs-2.6.32-279.el6.i686.img
GRUB صفحه splash را نمایش میدهد و برای مدتی منتظر میماند تا اگر ایمیج کرنل پیشفرض بارگزاری نشود دخالت کند.
GRUB Bootloader ،کرنل را شروع و ایمیج initrd را بارگزاری می کند.
۴-Kernel
root file system را مانت میکنه.
Kernel پردازش INIT را شروع میکند.پس از شروع اولین پردازش توسط کرنل Process ID (PID) ۱ می گیرد.
ماژول initrd بارگزاری میشود.initrd (initial RAM disk) یک root فایل سیستم موقتی که در RAM بارگزاری میشود ،می باشد تا زمانی که root فایل سیستم مانت شود.
۵-INIT
INIT(پدر تمام پردازشهاست)
INIT (کوتاه شدهی initialization) میباشد که پایهگذار پردازش های دیگر است.
INIT برای ادامه دستورالعملها به دنبال فایل /etc/inittab می گردد .
یک inittab از Centos :
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
اجرا اسکریپتهای /etc/rc.d/*
۶-Runlevel Programs
هفت runlevel وجود دارد که در سیستم عامل لینوکس قابل توجهاند.
Run Level 0 – Halt
Run Level 1 – Single user mode
Run Level 2 – Multiuser but without NFS
Run Level 3 – Full multiuser mode
Run Level 4 – unused / User-definable
Run Level 5 – X11
Run Level 6 – reboot
از طریق تنظیمات پیشفرض runlevel، سیستم برنامهها را از پوشههای زیر میخواند و اجرا میکند .
Run Level 0 – /etc/rc.d/rc0.d/
Run Level 1 – /etc/rc.d/rc1.d/
Run Level 2 – /etc/rc.d/rc2.d/
Run Level 3 – /etc/rc.d/rc3.d/
Run Level 4 – /etc/rc.d/rc4.d/
Run Level 5 – /etc/rc.d/rc5.d/
Run Level 6 – /etc/rc.d/rc6.d
/
/etc/rc0.d/ به پوشه etc/rc.d/rc0.d/ لینک داده شده است.در پوشه /etc/rc.d/rc0.d/ ما میتوانیم برنامه هایی ببینیم که با S و K شروع میشوند(S به معنی startup و K به معنی kill میباشد).همچنین شماره توالی بعداز S و K وجود دارد.آن شماره توالیها در هر یک از آن برنامهها برای این هست که در طول بوت باید started یا killed شوند.
منتظر نظرات سازنده شما در سایتم هستم
Cheers !
http://tazik.ir/1391/12/15/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D8%A7%D9%88%D9%84%DB%8C%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%85%D8%B1%D8%A7%D8%AD%D9%84-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D9%81%D8%B1%D8%A7%DB%8C%D9%86%D8%AF/