كيف يبدأ الخادم: UEFI



في وقت سابق ، قمنا بالفعل بتحليل تسلسل بدء تشغيل الخادم باستخدام مثال Legacy القديم. حان الوقت الآن للتعرف على UEFI بشكل أفضل.



تم تطوير الإصدار الأول لما يُعرف الآن باسم الواجهة الموحدة للبرامج الثابتة الموسعة (UEFI) في التسعينيات من الألفية الماضية خصيصًا لأنظمة Intel® Itanium® وسميت بمبادرة Intel Boot ، ولاحقًا - EFI.



كانت الرغبة في "تحديث" عملية التمهيد متوقعة. PC-BIOS ، يسمى الآن Legacy، يقدم للعمل في الوضع الحقيقي 16 بت ، ولا يعالج سوى 1 ميغابايت من ذاكرة الوصول العشوائي ، ويجب أن يكون محمل الإقلاع مع جدول الأقسام موجودًا في أول 512 بايت من محرك الأقراص. علاوة على ذلك ، ينقل PC-BIOS التحكم إلى أول أداة تحميل تمهيد يتم العثور عليها دون إمكانية العودة مرة أخرى. في هذه الحالة ، يتم وضع معالجة الحالات مع العديد من أنظمة التشغيل على أكتاف أداة تحميل التشغيل.



يفرض تحديد حجم محمل الإقلاع استخدام ترميز سجل التمهيد الرئيسي (MBR) ، والذي ظهر عام 1983. لا يعتبر MBR موحدًا ، ولكن العديد من البائعين "تقليديين". يحتوي MBR على قيود خطيرة: يتم دعم 4 أقسام فقط بشكل افتراضي ولا تزيد سعة التخزين عن 2.2 تيرابايت.



في ديسمبر 2000 ، تم إصدار أول مواصفات EFI واسعة النطاق تحت الإصدار 1.02. بعد خمس سنوات ، نقلت Intel EFI إلى منتدى UEFI ، مضيفة Unified إلى العنوان لتسليط الضوء على التغيير. مواصفات UEFI متاحة للجمهور وتتكون من عدة مستندات:



  • مواصفات ACPI ؛
  • مواصفات UEFI ؛
  • مواصفات غلاف UEFI ؛
  • مواصفات تهيئة منصة UEFI ؛
  • مواصفات تغليف توزيع تهيئة منصة UEFI.


تبدأ المتعة في مواصفات تهيئة النظام الأساسي UEFI ، والتي تصف جميع مراحل تحميل النظام الأساسي.



UEFI عالمي ، ولكن في هذه المقالة سوف نعتمد على المعيار ، ونتطلع إلى المعالجات على بنية x86_64.



استيقظ ، نيو!



تسلسل طور تمهيد UEFI (مصدر مواصفات تهيئة النظام الأساسي لـ UEFI )

بعد بدء تشغيل النظام الأساسي ، ينتظر مزود الطاقة حتى اكتمال العبور ، ثم يقوم بتعيين الإشارة إلى خط Power_Good . وأول من يبدأ التشغيل ليس المعالج المركزي ، ولكن محرك إدارة Intel® (ME) المستقلأو AMD Secure Technology (ST) مشابه له. ينفذ هذا النظام الفرعي عملياته الخاصة ، ثم يعد ويطلق أول نواة لمعالج واحد ، يسمى Bootstrap Processor (BSP) .

وفقًا للمصطلحات المقبولة ، سيشار إلى الخيط الأساسي / المعالج فيما يلي باسم معالج التمهيد أو معالج التطبيق.
كما هو الحال في Legacy ، يبدأ المعالج في تنفيذ التعليمات الأولى في نهاية مساحة العنوان عند 0xFFFFFFF0 . هذه التعليمات هي قفزة إلى المرحلة الأولى من تهيئة النظام الأساسي - SEC.



مرحلة SEC (الأمان)



في هذه المرحلة ، يجب حل المهام التالية:



  • التعامل مع الحدث التمكين ؛
  • تهيئة ذاكرة كافية للمرحلة التالية ؛
  • ترسيخ جذر الثقة في النظام ؛
  • نقل المعلومات الضرورية والتحكم إلى المرحلة التالية.


تبدأ معالجات X86_64 في الوضع الحقيقي 16 بت ، وأثناء التهيئة الأولية ، يتم وضع BSP في الوضع المحمي 32 بت . ثم يتم تحديث الرمز الصغير لجميع المعالجات المتاحة.



التالي هو معالجة الحدث التمكين. وهذا يعني تجميع المعلومات حول حالات المعدات بحيث يمكن لبعض الوحدات في المرحلة التالية استخلاص استنتاجات حول "الصحة" والحالة العامة للمنصة.



خلال مرحلة SEC ، لا تحدث تهيئة RAM. بدلاً من ذلك ، يتم تمييز ذاكرة التخزين المؤقت للمعالج المجاني على أنها غير قابلة للانفجار ويتم تحويلها إلى ذاكرة وصول عشوائي مؤقتة. يسمى هذا الوضع وضع عدم الإخلاء (NEM)... يتم إنشاء مكدس في الذاكرة المخصصة ، والذي سيسمح للوحدات من المراحل التالية باستخدام لغات برمجة المكدس قبل تهيئة ذاكرة الوصول العشوائي الرئيسية.



علاوة على ذلك ، تتم تهيئة جميع معالجات التطبيق (معالجات التطبيقات ، AP) بتسلسل خاص من المقاطعات بين المعالجات (Inter-Processor Interrupt، IPI) المرسلة إليهم. يقوم تسلسل IPI الأولي - بدء تشغيل IPI - بتنبيه معالج التطبيق وبدء الاختبار الذاتي المدمج (BIST) عليه . يتم تسجيل نتائج الاختبار وتمريرها للتحليل.



في نهاية مرحلة الأمان ، تحتاج إلى العثور على قسم Boot Firmware Volume (BFV)، حيث يوجد الكود القابل للتنفيذ للمرحلة التالية ، وكذلك ، إن أمكن ، ابحث عن أقسام ثانوية أخرى تحتوي على الكود (حجم البرنامج الثابت ، FV).



لتبرير اسم مرحلة الأمان وتصبح جذرًا للثقة ، أثناء تنفيذ هذه المرحلة ، يمكن التحقق من الكود الذي نخطط لنقل التحكم إليه بحثًا عن التغييرات غير المصرح بها والأجزاء الخبيثة من البرنامج.



في نهاية تنفيذ SEC ، يتم جمع المعلومات التالية:



  • حجم وعنوان Boot Firmware Volume (BFV) ؛
  • حجم وعناوين وحدات تخزين البرامج الثابتة الأخرى (FV) ؛
  • حجم وعنوان ذاكرة الوصول العشوائي المؤقتة ؛
  • حجم وعنوان المكدس.


ثم تبدأ المرحلة التالية - تهيئة Pre EFI.



مرحلة PEI (تهيئة Pre EFI)



مرحلة PEI على اللوحة الأم SuperMicro الغرض من

مرحلة تهيئة Pre EFI هو جمع معلومات حول الأجهزة المتصلة وإعداد الحد الأدنى المطلوب من الأجهزة لتشغيل عملية التهيئة الكاملة.



حسب التصميم ، يجب أن تكون مرحلة PEI خفيفة الوزن ، نظرًا لأن ذاكرة التخزين المؤقت للمعالج محدودة. بالإضافة إلى ذلك ، يمكن أن تتعافى مرحلة PEI من الفشل ، لذلك هناك حاجة لوضع كود مرحلة PEI في مخزن أكثر مرونة.



تتكون هذه المرحلة من نواة تسمى مؤسسة PEI ومكونات PEI Module (PEIM) . الجزء المركزي من النواة هو مدير الوحدة ، مرسل PEI، الذي يتحكم في ترتيب تنفيذ الوحدات ، وينظم أيضًا التفاعل بين الوحدات (واجهة PEIM-to-PEIM ، PPI).



لاحظ أنه تم تنفيذ مرحلة SEC من ذاكرة فلاش على اللوحة الأم ، وفقط في بداية PEI ، يتم نسخ الكود القابل للتنفيذ اللازم لهذه المرحلة إلى ذاكرة الوصول العشوائي المؤقتة.



يأتي بعد ذلك مرسل PEI. تطلق وحدات PEI بترتيب معين: أولاً ، وحدات بدون تبعيات ، ثم تعتمد على الأولى ، وهكذا حتى نفاد الوحدات النمطية.



تسمح لك بنية مرحلة PEI بتطوير وحداتك الخاصة التي يمكنها نقل نتائج أنشطتها إلى المرحلة التالية. يحدث نقل المعلومات من خلال هيكل بيانات خاص (HOB) .



في عملية إطلاق وحدات PEI ، لاحظ ما يلي:



  • CPU PEIM - تهيئة المعالج ؛
  • Platform PEIM - تهيئة الجسور الشمالية (بما في ذلك محور وحدة التحكم في الذاكرة) والجنوبي (I / O Controller Hub) ؛
  • تهيئة الذاكرة PEIM - تهيئة ذاكرة الوصول العشوائي الرئيسية ونقل البيانات من الذاكرة المؤقتة إلى ذاكرة الوصول العشوائي.


في السابق ، تم استلام التضمين من مرحلة SEC. إذا كان حدث التشغيل هو S3 Resume ، فسيتم تنفيذ S3 BootScript بعد ذلك ، مما يستعيد الحالة المحفوظة للمعالجات وجميع الأجهزة المتصلة ، ثم ينقل التحكم مباشرة إلى نظام التشغيل.

حالة S3 (Suspend to RAM) هي حالة سكون يتم فيها إغلاق المعالج وجزء من مجموعة الشرائح مع فقدان السياق. عند الاستيقاظ من هذه الحالة ، يبدأ المعالج في التنفيذ كما لو كان تشغيلًا عاديًا. ولكن بدلاً من التهيئة الكاملة واجتياز جميع الاختبارات ، يقتصر النظام على استعادة حالة جميع الأجهزة.
عند البدء من أي حالة أخرى ، يتم نقل التحكم إلى مرحلة بيئة تنفيذ السائق.



مرحلة DXE (بيئة تشغيل السائق)



تهيئة DXE

Phase AHCI تركز مرحلة بيئة تنفيذ برنامج التشغيل (DXE) على تهيئة الأجهزة المتبقية. بحلول الوقت الذي تبدأ فيه مرحلة DXE ، يكون المعالج والذاكرة الرئيسية جاهزين للعمل ، ولا تخضع برامج تشغيل DXE لقيود موارد صارمة.



على غرار مؤسسة PEI ، هذه المرحلة لها جوهرها الخاص - مؤسسة DXE . تنشئ النواة الواجهات اللازمة وتحمل ثلاثة أنواع من خدمات DXE:



  • خدمات تمهيد UEFI - خدمات وقت التمهيد ؛
  • خدمات وقت تشغيل UEFI - خدمات وقت التشغيل ؛
  • خدمات DXE هي خدمات خاصة مطلوبة من قبل DXE الأساسية.


بعد تهيئة الخدمات ، يبدأ مرسل DXE العمل . يجد ويحمل برامج تشغيل DXE ، والتي بدورها تكمل تهيئة الأجهزة.

في UEFI ، لا توجد مرحلة مخصصة حيث يمر الجهاز POST (اختبار ذاتي للتشغيل). بدلاً من ذلك ، تجري كل وحدة طور PEI و DXE مجموعتها الخاصة من الاختبارات وتبلغ المستخدم عبر أكواد POST وعبر HOBs في المراحل التالية.
من بين العديد من برامج التشغيل المحملة على معالجات x86_64 ، يجدر الانتباه إلى برنامج تشغيل System Management Mode Init (SMM Init). يقوم برنامج التشغيل هذا بإعداد كل شيء لتشغيل وضع إدارة النظام (SMM) . SMM هو وضع ذو امتياز خاص يسمح لك بتعليق تنفيذ الكود الحالي (بما في ذلك نظام التشغيل) وتنفيذ البرنامج من المنطقة المحمية من SMRAM في سياقه الخاص.

تعتبر SMM بشكل غير رسمي حلقة الحماية -2. تعمل نواة نظام التشغيل على الحلقة 0 ، ويتم ترقيم حلقات الحماية الأكثر تقييدًا من 1 إلى 3. رسميًا ، تعتبر الحلقة صفر الأكثر امتيازًا. ومع ذلك ، يُطلق على برنامج Hypervisor الافتراضي للأجهزة اسم الحلقة -1 ، وتسمى Intel ME و AMD ST الحلقة -3.
بالإضافة إلى ذلك ، نلاحظ وحدة دعم التوافق (CSM) ، والتي توفر توافقًا قديمًا وتسمح لك بتشغيل نظام التشغيل دون دعم UEFI. سننظر في هذه الوحدة بمزيد من التفصيل لاحقًا.



بعد تهيئة جميع المعدات ، حان الوقت لاختيار جهاز التمهيد.



مرحلة BDS (تحديد جهاز التمهيد)



تنفذ مرحلة تحديد جهاز التمهيد سياسة تمهيد تطبيق UEFI. على الرغم من أن هذه مرحلة منفصلة ، إلا أن جميع الخدمات ، بما في ذلك المرسل ، التي تم إنشاؤها أثناء مرحلة DXE تظل متاحة.



الغرض من مرحلة BDS هو إنجاز المهام التالية:



  • تهيئة أجهزة وحدة التحكم ؛
  • البحث عن الأجهزة التي يمكنك التمهيد منها ؛
  • محاولة التمهيد من الأجهزة الموجودة بترتيب الأولوية.


PCIe BIOS

لبطاقة LSI الإضافية يبحث Boot Manager عن مناطق قابلة للتمهيد على الأجهزة. قد تحتوي بعض بطاقات التوسيع ، مثل بطاقات الشبكة ووحدات تحكم RAID ، على "BIOS" خاص بها يسمى Option ROM أو OpROM . تبدأ محتويات أجهزة OpROM فور اكتشافها ، وبعد التنفيذ ، يعود التحكم إلى Boot Manager.



يتم تخزين جميع الأقسام التي تحتوي على مناطق التنزيل في ذاكرة مدير التمهيد ويتم ترتيبها وفقًا لترتيب التمهيد. إذا لم يتم العثور على تطبيق ، يمكن لـ Boot Manager الاتصال بمدير DXE ، في حالة تحميل المدير برامج تشغيل إضافية أثناء البحث وقد "تفتح" الأجهزة الجديدة إلى مدير التمهيد.



كما ذكرنا سابقًا ، يفرض استخدام ترميز Master Boot Record قيودًا على حجم الأقسام وعددها على محرك الأقراص ، كما يتسبب في بعض الإزعاج في صيانة أنظمة تشغيل متعددة. يعد حل كل هذه المشكلات جزءًا من مواصفات UEFI - جدول تقسيم GUID.



GPT (جدول أقسام GUID)



GUID Partition Table هو تنسيق جدول أقسام قياسي يحل محل MBR القديم.



أولاً ، تستخدم GPT عنونة الكتل المنطقية (LBA) بدلاً من عنونة الأسطوانة والرأس والقطاع (CHS). يسمح تغيير طريقة العنونة لـ GPT بالعمل مع محركات أقراص تصل إلى 9.4 ZB (9.4 * 10 21 بايت) مقابل 2.2 تيرابايت لـ MBR.



ثانيًا ، خضع جدول الأقسام لتغييرات ، والآن يمكنك إنشاء ما يصل إلى 2 64 قسمًا داخل محرك أقراص واحد ، على الرغم من أن أنظمة التشغيل لا تدعم أكثر من 128 في حالة Microsoft Windows و 256 في حالة Linux.



ثالثًا ، لكل قسم معرف نوع خاص به ، والذي يصف الغرض من القسم. لذلك ، على سبيل المثال ، يشير المعرف C12A7328-F81F-11D2-BA4B-00A0C93EC93B بشكل فريد إلى قسم نظام EFI (ESP) الذي يمكن لمدير التمهيد محاولة تحميل التطبيق منه.



أثناء تطوير GPT ، لم يدخر التوافق مع MBR. قد لا تتعرف أدوات القرص على قرص GPT وتقوم بمسحه. لتجنب ذلك ، أثناء تقسيم GPT ، تمتلئ أول 512 بايت بـ Protection MBR (Protection MBR) - قسم من قسم واحد لمحرك الأقراص بأكمله مع معرف النظام 0xEE. يسمح هذا النهج لـ UEFI بفهم أنه ليس MBR حقيقيًا أمامه ، ولكنه برنامج قديم بدون دعم GPT - لرؤية قسم به بيانات من نوع غير معروف.



تخلت GPT عن منطقة التمهيد لصالح أقسام ESP التي يتم التعرف عليها على أنها قابلة للتمهيد. يقوم Boot Manager بجمع معلومات حول جميع ESPs الموجودة على القرص ، مما يسمح لك بوجود عدة محمل إقلاع على محرك الأقراص بدون تعارضات ، واحدة لكل ESP.



تحميل نظام التشغيل



بعد استقصاء جميع الأجهزة والبحث عن مناطق التمهيد ، يبدأ Boot Manager في التمهيد بترتيب أولوية التمهيد. بشكل عام ، يتم نقل التحكم إلى تطبيق UEFI ، والذي يبدأ في تنفيذ منطقه. ومع ذلك ، بالنسبة للأنظمة المتوافقة مع الوضع القديم ، قد يكون هناك MBR في قائمة منطقة التمهيد وسيتعين عليك الانتقال إلى CSM ، وحدة دعم التوافق.



يتيح لك CSM تشغيل أنظمة التشغيل التي لا تدعم UEFI. لتحميل أنظمة التشغيل هذه ، تحاكي وحدة CSM البيئة التي يقع فيها نظام التشغيل "الكلاسيكي":



  • تحميل برنامج التشغيل القديم ؛
  • يحمّل BIOS القديم ؛
  • يضع إخراج الفيديو في الوضع المتوافق القديم ؛
  • ينشئ هياكل البيانات المطلوبة للإرث في الذاكرة غير المتوفرة في UEFI ؛
  • تحميل برنامج التشغيل CompatibilitySmm لـ SMM للعمل في Legacy.


تذكر أنه في الوضع القديم ، يبدأ نظام التشغيل في وضع 16 بت ، بينما في UEFI يعمل كل شيء في وضع 32 بت. يبدأ CSM محمل الإقلاع القديم في وضع 16 بت ويوفر الاتصال مع برامج تشغيل UEFI 32 بت حسب الحاجة.



مرحلة RT (وقت التشغيل)



تؤدي بداية تحميل نظام التشغيل أو محمل الإقلاع القديم إلى بداية مرحلة وقت التشغيل. في هذه المرحلة ، لم تعد جميع خدمات DXE (باستثناء خدمات UEFI Runtime Services) متاحة.



يمكن أن يختلف محتوى مرحلة RT. قد يكون هناك برنامج تحميل لنظام التشغيل مألوف من Legacy - على سبيل المثال ، GRUB2 أو Windows Boot Manager ، والذي يضع المعالج في وضع 64 بت ويبدأ نظام التشغيل. ولكن يمكن أن تكون هناك تطبيقات مستقلة أو نواة نظام التشغيل في وقت واحد.



نواة Linux التي تبدأ من الإصدار 3.3 ، في حالة وجود علامة CONFIG_EFI_STUB ، تتحول إلى تطبيق UEFI عادي ويمكن تشغيلها من UEFI دون استخدام برامج تحميل خارجية.



كما في حالة Legacy ، يحتاج برنامج bootloader أو kernel نفسه إلى وضع المعالج في وضع 64 بت ، وتحميل جميع برامج التشغيل ، وتكوين المجدول وتشغيل init. البدء ، بدوره ، يبدأ العمليات في مساحة المستخدم ، وبعد ذلك تظهر نافذة تسجيل الدخول إلى نظام التشغيل.



خاتمة



يعد التمهيد إلى UEFI عملية أكثر تعقيدًا ولكنها موحدة وعالمية إلى حد كبير. يتم ملاحظة أوجه التشابه مع Legacy بشكل عام فقط ، والشيطان ، كما تعلم ، يكمن في التفاصيل.



متى تعتقد أنه سيكون من الممكن مغادرة Legacy تمامًا؟

اكتب رأيك في التعليقات.



All Articles