کانال تلگرام منطقه لینوکسی ها
نمایش نتایج: از 1 به 1 از 1

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

  1. #1
    مدیریت کل انجمن
    تاریخ عضویت
    Jun 2013
    محل سکونت
    Tehran
    سن
    33
    نوشته ها
    1,300
    تشکر ها
    755
    57
    میزان امتیاز
    6
    Array

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

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

    linux-boot-process-linux-zone-org-forums-jpg

    موارد زیر 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 شروع بشود.


    امیدوارم از خواندن این مقاله لذت برده باشید. و از شما دعوت میکنم مقاله زیر را هم مطالعه فرمایید :
    http://linux-zone.org/forums/thread970.html
    ویرایش توسط Habili : 01-17-2017 در ساعت 03:44 PM
    کانال تلگرام : https://telegram.me/linuxzone
    گروه فیس بوک : https://www.facebook.com/groups/linux.zone
    گوگل پلاس : https://plus.google.com/communities/...85817219667474
    گروه لینکدین : https://www.linkedin.com/groups/13521922
    پروفایل تویتر : https://twitter.com/Mohammad_Habili
    پروفایل اینستاگرام : https://www.instagram.com/mohammad_habili

  2. 4 کاربر مقابل از Habili عزیز به خاطر این پست مفید تشکر کرده اند .


موضوعات مشابه

  1. پاسخ: 0
    آخرين نوشته: 02-20-2017, 04:12 PM
  2. fsck error در هنگام boot شدن linux
    توسط linuxtrack در انجمن General Linux
    پاسخ: 1
    آخرين نوشته: 09-03-2016, 07:47 AM
  3. مدیریت runlevel ها و آشنایی با روند boot در linux
    توسط Gravity در انجمن General Linux
    پاسخ: 1
    آخرين نوشته: 02-12-2015, 06:57 PM
  4. مشکل در گذاشتن ماشین virtual box در startup لینوکس
    توسط Abbas_Karimi در انجمن General Linux
    پاسخ: 7
    آخرين نوشته: 06-26-2013, 10:06 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
درباره ما
سایت منطقه لینوکسی ها در سال 1392 با هدف ارائه خدمات نوین در حوزه فناوری اطلاعات و ارتباطات در راستای پیاده سازی ارتباطات صدا، تصویر، دیتا و بالا بردن سطح علمی و عمومی کاربران از طریق انجمن در سطح جهانی راه اندازی شده و با بهره گیری از توان تخصصی و تجارب حرفه ای مدیران و کارشناسان خود، پیشگام بودن در ارائه راه کارهای برتر را آرمان خود قرار داده است. امید است این سایت بتواند زمینه ساز رشد و ترقی جامعه ایرانی در سرتاسر دنیا گردد.
شبکه های اجتماعی
ایمیل مدیر کل
habili@linux-zone.org