شرح البوتلودر BOOT
سلسة اندرويد تحت المجهر وخفايا النظام (شرح البوتلودر BOOT)
معظم المقالات المتداولة تكتفي بالسطح: “هذا القسم يقلع النظام” أو “هذا القسم فيو النظام”… بينما الحقيقة أعمق من ذلك بكثير. كل قسم بحد ذاته مفتاح، كل بايت داخله له دور، وأي خطأ في التعامل معه قد يحوّل جهاز كامل إلى جهاز معطوب و تالف
في هذه السلسلة ما رح نكتفي بالسطحيات.
سوف نغوص معًا — قسمًا بعد قسم — بدءًا من boot & kernel مرورًا بـ system, vendor, recovery, persist ووصولًا إلى الأقسام المخفية التي لا يعرفها إلا من اشتغل على مستوى البرمجة العميقة وملفات EMMC/UFS.
رح نبدء بالقسم الأقلاعي BOOT
يحتوي قسم boot على صورة النواة ورامديسك البداية الذي يقوم بتهيئة الرام و الذاكرة والمعالج. عن طريقه يبدأ الجهاز عمليّة الإقلاع وتشغيل نظام أندرويد. إذا تلف أو امتُسح هذا القسم فلن يستطيع الجهاز الإقلاع مجدَّدًا إلى النظام العادي
. للتعديل على هذا القسم، يشترط فك قفل الـbootloader، لاستبدال صورة الإقلاع، أو تثبيت نواة مخصصة (مثل تثبيت Magisk) .
. يُستخدم هذا القسم أيضًا عند تثبيت رومات مخصصة أو عمل روت للاندرويد من خلال استبدال النواة بصورة معدَّلة أو مزودة بإمكانيات وصول مطوَّر.
رح نتعمق اكثر و نحكي على مستوى Kernal و Ramdisk
اولا Kernal
النواة (Kernal) هي أساس نظام التشغيل الأندرويد (المبني أصلاً على لينكس).
بتقدر تعتبرها “الوسيط” بين الهاردوير (المعالج – الذاكرة – الشاشة – الكاميرا – الشبكات…) وبين السوفتوير (التطبيقات – النظام – الخدمات).
أثناء الإقلاع (Bootloader → Kernel) ينفك ضغطه ويتحمل بالذاكرة.
له كتير من الوظائف منها :
Drivers (تعريفات):
كل قطع الموبايل إلها Driver خاص مدمج بالـ Kernel: WiFi، Bluetooth، Touchscreen.
النواة توزع الأولوية بين البرامج: مين ياخذ CPU أكثر، مين يتوقف مؤقتًا.
قسم boot مو مجرد بداية إقلاع… هو يلي بيقرر نوع تشفيرuserdata ان كان FBE,FDE
، وبيشغل سكربتات للتعامل مع مفتاح القفل.
يتم تعدل على الـ Kernel ب حقن Patch مثل Magisk Root
بعدين بيكمل التنفيذ مع الـ Ramdisk.

الرامديسك (Ramdisk) هو جزء من boot.img، وهو عبارة عن “نظام ملفات صغير ومضغوط” ينفك في الذاكرة (RAM) بيتحمل بالذاكرة جنب الكيرنل أثناء الإقلاع.
وظيفته
تجهيز ملفات النظام الأساسية مثل:
initi.rc → ملف سكربت أساسي يحدد كيف يبدأ النظام.
fstab→ جدول يحدد كيف يتم عمل mount للأقسام (system, vendor, data…).
initi.rc
تحميل init (أول عملية في النظام – مثل القلب النابض).
init.rc هو اللي بيقرر كيف يتعامل مع قسم userdata عند الإقلاع.
تجهيز ملفات النظام الأساسية مثل:
init.rc → ملف سكربت أساسي يحدد كيف يبدأ النظام.
fstab
fstab.qcom / fstab.exynos (حسب المعالج)
تحدد كيف الأقسام تُركّب (mount) بالملفات.
fstab → جدول يحدد كيف يتم عمل mount للأقسام (system, vendor, data…).
تحدد هل القسم مشفر، نوع نظام الملفات (ext4, f2fs…)
فخلاصة كلامناان boot مالو مجرد اقلاع وبسهو يلي بأقلع و بحدد الاولوية باستخدامه لل CPUوهو يلي بشفر usedata وبحدد نوع البياناتالكيرنل هو العقل اللي يتحكم بالهاردوير ويعطي الأساس.الرامديسك هو المخطط اللي يقول للنظام كيف يقلع