اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

فرآیند 6 مرحله ای پروسه Boot در Linux (بوت در لینوکس و جریانات Startup)

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    فرآیند 6 مرحله ای پروسه Boot در Linux (بوت در لینوکس و جریانات Startup)

    بعد از اینکه دکمه power سیستم تان را فشار میدهید و بعد از گذشت مدت زمان کمی شما login prompt لینوکس را مشاهده میکنید. شما تا حالا به این موضوع فکر کرده اید زمانی که شما دکمه power را میزنید و تا زمانی که صفحه login prompt لینوکس را مشاهده میکنید چه اتفاقی می افتد ؟
    مراحل بوت در لینوکس



    موارد زیر 6 مرحله سطح بالا از مراحل روند boot در linux را نمایش میدهد.
    کد PHP:
    BIOS
    MBR
    GRUB
    Kernel
    Init
    Runlevel 

    1 - Bios (بایوس)
    • بایوس مخفف Basic Input/Output System میباشد.
    • برخی از چک های سلامت سیستم را انجام میدهد.
    • برنامه boot loader را جستجو، load و اجرا میکند.
    • برای پیدا کردن boot loader به سراغ Floppy, CD-ROM یا هارد درایور میرود. شما میتوانید یک کلیدی را جهت تغییر فرآیند boot در حین راه اندازی بایوس فشار دهید. (معمولا F12 و F2 که بستگی به سیستم شما دارد میباشد)
    • به محض اینکه برنامه boot loader شناسایی و درون memory لود شد، bios کنترل را به آن (boot loader) میدهد.
    • بنابراین به عبارت ساده بایوس MBR boot loader را لود و اجرا میکند.


    2 - MBR
    • MBR مخفف Master Boot Record میباشد.
    • MBR در سکتور اول از bootable disk واقع شده است. معمولا /dev/hda/ یا /dev/sda/ میباشد.
    • سایز MBR کمتر از 512 byte میباشد که دارای 3 جزء میباشد : 1- اطلاعات primary boot loader که در 446 بایت اول میباشد 2- اطلاعات partition table که در 64 بایت بعدی میباشد. 3- چک یا بررسی mbr validation که در 2 بایت آخر انجام میشود.
    • MBR شامل اطلاعاتی درباره GRUB (یا LILO در سیستم های قدیمی) میباشد.
    • بنابراین به عبارت ساده MBR وظیفه لود و اجرای GRUP boot loader را دارد.


    3 - GRUB
    GRUB مخفف Grand Unified Bootloader میباشد.
    • اگر شما kernel های متعددی روی سیستم تان نصب دارید، شما میتوانید یکی را جهت اجرا شدن انتخاب کنید.
    • GRUB صفحه splash (منظور لوگوی سیستم عامل میباشد) را نمایش میدهد، برای چند ثانیه منتظر میماند، اگر شما چیزی را وارد نکنید، گراب خودش کرنل defult تعیین شده در فایل configuration ش را اجرا میکند.
    • GRUB از دانش filesystem برخوردار میباشد. (در لینوکس های قدیمی LILO متوجه filesystem نمیشد)
    • فایل تنظیمات GRUB در مسیر /boot/grub/grub.conf/ میباشد (که به فایل /etc/grub.conf لینک شده است)
    • در زیر یک نمونه فایل grub.conf برای سیستم عامل Cent OS را مشاهده میکنید :

    کد PHP:
    #boot=/dev/sda
    default=0
    timeout
    =5
    splashimage
    =(hd0,0)/boot/grub/splash.xpm.gz
    hiddenmenu
    title CentOS 
    (2.6.18-194.el5PAE)
              
    root (hd0,0)
              
    kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/
              
    initrd /boot/initrd-2.6.18-194.el5PAE.img 
    • همانطور که شما در اطلاعات بالا ملاحظه میکنید این فایل شامل kernel و initrd image میباشد.
    • بنابراین، به عبارت ساده GRUB فقط Kernel و initrd image را load و اجرا میکند.


    4 - Kernel
    • فایل سیستم root را با توجه به آنچه که در مقابل “root=” در فایل grub.conf مشخص شده است، mount میکند.
    • Kernel برنامه /sbin/init/ را اجرا میکند.
    • از آنجاییکه init اولین برنامه ای بود که توسط Kernel لینوکس اجرا میشد، process id یا PID شماره 1 را به خود اختصاص داده است. دستور pe -ef | grep init را جهت چک کردن pid اجرا کنید.
    • initrd مخفف Initial RAM Disk میباشد.
    • initrd توسط kernel به عنوان فایل سیستم root موقتی استفاده میشود، تا وقتی که کرنل boot بشود و فایل سیستم اصلی root مانت (mount) شود. همچنین شامل Driver های مورد نیاز برای اینکه درون خودش کامپایل کند میباشد که به آن کمک میکنند تا به پارتیشن های hard drive و یا سخت افزارهای دیگر دسترسی پیدا کند.


    5 - Init
    • init برای تصمیم گیری در مورد runlevel در linux فایل /etc/inittab را بررسی میکند.
    • در زیر سطوح اجرایی (run level) موجود را میبینید :

    کد PHP:
    halt
    single user mode
    multiuserwithout NFS
    full multiuser mode
    unused
    x11
    reboot 
    • init در حقیقت initlevel پیش فرض را از طریق فایل /etc/inittab شناسایی و آنرا برای لود کردن همه برنامه های مورد نیازاستفاده میکند.
    • دستور grep --color initdefault /etc/inittab را درسیستم تان اجرا کنید تا run level یا سطوح اجرای پیش فرض را مشاهده کنید.
    • اگر شما میخواهید برای خودتان دردسر ایجاد کنید، شما میتوانید run level پیش فرض خودتان را 6 یا 0 تعریف کنید. از آنجایی که شما معنی 0 و 6 را میدانید، شما هیچ وقت این کار را انجام نمیدید. :)
    • شاید شما بخواهید run level پیش فرض تان را به 3 یا 5 تعریف کنید.


    6 - برنامه های Runlevel
    • زمانیکه سیستم linux در حال boot شدن است، شما ممکن است سرویس های مختلفی را مشاهده کنید که در حال start شدن میباشند. برای مثال، ممکن است به شما بگوید که سرویس sendmail با موفقیت start شد. "starting sendmail .... OK" که این سرویس ها در حقیقت برنامه های run level هستند که از دایرکتوری run level (که توسط runlevel شما مشخص شده اند) اجرا میشوند.
    • بسته به تنظیمات init level پیش فرض شما، سیستم از طریق یکی از دایرکتوری های زیر برنامه هاش را اجرا خواهد کرد :

    کد PHP:
        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
    • توجه کنید که همچنین symbolic links هایی برای دایرکتوری های زیر در /etc به صورت مستقیم وجود دارد. بنابراین /etc/rc0.d به /etc/rc.d/rc0.d لینک شده است. "rc0.d -> rc.d/rc0.d"
    • در دایرکتوری /etc/rc.d/rc*.d/ شما باید برنامه هایی را مشاهده میکنید که با S و K شروع شده اند.
    • برنامه هایی که با S شروع میشوند، در حین بالا آمدن سیستم عامل استفاده میشوند. S برای startup میباشد.
    • برنامه هایی که با K شروع میشوند، در حین خاموش شدن سیستم عامل استفاده میشوند. K برای kill میباشد.
    • در کنار S و K در نام برنامه ها یک سری عدد وجود دارد که این عدد ها نشان دهنده sequence number (عدد اولویت اجرای برنامه) برنامه ای هستند که باید start و یا kill شوند.
    • برای مثال، S12syslog برای start شدن سرویس syslog هست، که sequence number آن 12 میباشد. S80sendmail برای start شدن سرویس sendmail میباشد، که دارای sequence number شماره 80 میباشد. بنابراین برنامه syslog باید قبل از برنامه sendmail شروع بشود.


    همچنین توصیه میشود مطالعه کنید :

    مدیریت runlevel ها و آشنایی با روند boot در linux


    امیدوارم از خواندن این مقاله لذت برده باشید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-01-2021, 11:58 AM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X