به صورت کلی ۳ فرآیند هنگام بوت و initialize شدن کامل سیستم رخ می دهد تا شما وارد User space شوید.این سه فرآیند به ترتیب زیر است :

  1. Bootloader
  2. Kernel initialization
  3. Init process

ما در

مرحله بوت لودر” فرآیند اول را بررسی کردیم.حال می خواهیم در مورد Kernel initialization صحبت کنیم.

Kernel bootstraps

ابتدا ، کرنل خام لینوکس 

vmlinux که محتوی موارد خاصیست و تایپ آن 

ELF است با استفاده از 

objcopy تبدیل به binary object می شود.همچنین توجه داشته باشید که فرآیند stripping نیز روی این فایل صورت می گیرد زیرا کل فایل های o.” و a.” با یکدیگر به شکل non-stripped با استفاده از ld لینک شده اند.
در واقع وقتی از stripping صحبت می شود، منظور همان پاک کردن info های debugging می باشد.زمانی که شما یک سورس کد C را برای مثال با gcc با استفاده از سوییچ g کامپایل می نمایید این فلگ ها ایجاد می شوند.
در نهایت یک Image به ما خروجی داده می شود.با استفاده از gzip فایل vmlinux را compress کرده و به آن نام piggy می دهند و با اسمبل کردن (as) این فایل فشرده که محتوی باینری کرنل است، یک‌ object فایل دریافت می کنیم (piggy.o). این object را با یک سری فایل مهم (کد هایی مثلا برای decompress کردن یا cpu initialization و …) لینک کرده و در نهایت باز یک ELF دریافت می کنیم .این ELF را دوباره با objcopy به binary object تبدیل می کنیم که همان zImage (یا مواردی نظیر bzImage وابسته به فشرده سازی) می باشد.این فایل توانایی bootable شدن را دارد.

ادامه مطلب


مشخصات

آخرین ارسال ها

آخرین وبلاگ ها

آخرین جستجو ها