پرش به مطلب اصلی

روند بوت

Sinux از طریق GRUB 2 با پروتکل Multiboot2 بوت می‌شود، از حالت محافظت‌شده‌ی ۳۲ بیتی به حالت long ۶۴ بیتی منتقل می‌شود و در نهایت به نقطه‌ی ورود C یعنی kernel_main() می‌پرد.

BIOS/UEFI → GRUB 2 → Multiboot2
→ boot.asm (۳۲ بیتی)
├── اعتبارسنجی magic مقدار Multiboot2
├── بررسی CPUID + پشتیبانی Long Mode
├── ساخت جداول صفحه‌بندی PML4/PDPT/PDT (نگاشت یک‌به‌یک اولین ۱ گیگابایت)
├── فعال‌سازی PAE + LME + صفحه‌بندی
├── بارگذاری GDT ۶۴ بیتی
└── پرش به kernel_main() (C ۶۴ بیتی)

توضیح مراحل

  1. فیروزار (BIOS/UEFI) GRUB را بارگذاری می‌کند. Secure Boot باید خاموش باشد.
  2. GRUB 2 هسته را با مشخصه‌ی Multiboot2 بارگذاری می‌کند و یک ساختار اطلاعات بوت را پاس می‌دهد.
  3. boot.asm در حالت ۳۲ بیتی اجرا می‌شود و:
    • مقدار magic مقدار Multiboot2 را اعتبارسنجی می‌کند.
    • از CPUID برای تأیید پشتیبانی Long Mode (۶۴ بیتی) استفاده می‌کند.
    • جداول صفحه‌بندی (PML4 → PDPT → PDT) را می‌سازد که اولین ۱ گیگابایت را یک‌به‌یک نگاشت می‌کنند.
    • PAE، بیت LME و صفحه‌بندی را فعال می‌کند.
    • GDT ۶۴ بیتی را بارگذاری می‌کند.
    • با پرش دور به kernel_main() ۶۴ بیتی می‌رود.

از آنجا، هسته‌ی C مدیران حافظه، درایوها، سیستم فایل و زمان‌بند را مقداردهی اولیه می‌کند و سپس وارد شل داخلی می‌شود.