رابط متحد توسعه‌پذیر سیستم‌عامل

از ویکی‌پدیا، دانشنامهٔ آزاد
لوگوی UEFI

رابط توسعه پذیر سفت افزاری یکپارچه (به انگلیسی: Unified Extensible Firmware Interface) یا به اختصار UEFI، یک ویژگی نرم‌افزاری رابط بین سیستم‌عامل و پلاتفرم سخت‌افزار می‌باشد. این ویژگی جایگزین رابط سخت‌افزار بایوس است. در حال حاضر در تمام کامپیوترهای شخصی سازگار با آی‌بی‌ام ارائه شده‌است. در بررسی‌ها، ویژگی UEFI، تمامی خدمات بایوس را پشتیبانی می‌کند. به وسیله این ویژگی می‌توان عیب‌یابی و تعمیرات (یا تنظیمات امنیتی) را بدون نیاز به هیچگونه سیستم‌عاملی انجام داد. EFI اصلی توسط اینتل توسعه داده می‌شد. برخی از این شیوه‌ها و قالب داده‌ها، انعکاسی از ویژگی‌های ویندوز می‌باشد.
در سال ۲۰۰۵ UEFI جایگزین EFI 1.10 (نسخه نهایی EFI) شد. در حال حاضر ویژگی UEFI توسط انجمن Unified EFI مدیریت می‌شود.

تاریخچه[ویرایش]

ایدهٔ اصلی برای EFI به هنگام توسعهٔ اولین سیستم ایتانیوم (به انگلیسی: Itanium) اینتل-اچ‌پی در اواسط دههٔ ۱۹۹۰ به وجود آمد. محدودیت‌های بایوس رایانه‌های شخصی (حالت پردازندهٔ ۱۶-بیتی، ۱ مگابایت فضای قابل آدرس‌دهی، وابستگی‌های سخت‌افزاری پی‌سی ای‌اتی(به انگلیسی: PC AT) و…) برای سرورهای بزرگ‌تری که ایتانیوم به سمت آن‌ها حرکت می‌کرد، غیرقابل قبول بود.[۱] تلاش برای حل این مشکلات در ابتدا با نام آغازگر بوت اینتل، در سال ۱۹۹۸ شروع شد، و بعدها به EFI تغییر نام داد. در ژوئیه سال ۲۰۰۵ اینتل توسعهٔ ویژگی EFI را در ورژن ۱٫۱۰ آن متوقف کرد، و آن را به انجمن یکپارچهٔ EFI سپرد. این انجمن گسترش ویژگی را با عنوان Unified Extensible Firmware Interface (UEFI) آغاز کرد. مالک ویژگی ورژن اصلی EFI همچنان اینتل است که برای کالاهای تحت EFI مجوز فراهم می‌کند، اما مالکیت ویژگی UEFI به انجمن بر می‌گردد. ورژن ۲٫۱ UEFI در ۷ ژانویه ۲۰۰۷ منتشر شد. در این نسخه رمزنگاری، احراز هویت تحت شبکه و معماری رابط کاربری (زیرسازه‌های رابط‌های انسانی در uefi) پیاده شدند. نسخه فعلی آن، ۲٫۳٫۱ در تاریخ آوریل ۲۰۱۱ مورد تأیید قرار گرفت.[۲]

محتوا[ویرایش]

رابط تعریف شده توسط مشخصه EFI شامل جداول داده‌ایِ اطلاعات پلت‌فرم، سرویس‌های بوت و سرویس‌های زمان‌اجرا می‌باشد که برای بارگذارنده سیستم‌عامل و همچنین خود سیستم‌عامل قابل دسترس می‌باشد. فرم‌ویر UEFI مزایای چندی را نسبت به بایوس قدیمی سیستم‌ها داراست.[۳]

  • قابلیت راه‌اندازی از دیسک‌های بزرگ (بیش‌از ۲٫۲ ترابایت) با کمک GPT.
  • زمان راه‌اندازی سریعتر
  • معماری مستقل از پردازنده
  • درایورهای مستقل از پردازنده
  • محیطی انعطاف‌پذیر قبل از اجرای سیستم‌عامل، شامل قابلیت اتصال به شبکه
  • طراحی ماژولار

سازگار با پردازنده[ویرایش]

بایوس محدود به مُد پردازنده ۱۶ بیتی و ۱ مگابایت فضای قابل آدرس‌دهی است که این امر به دلیل طراحی آن برای کامپیوتر ۵۱۵۰ شرکت IBM بوده که از پردازنده ۱۶ بیتی ۸۰۸۰ اینتل استفاده می‌کرده‌است.[۴][۵] در مقایسه، مُد پردازنده در UEFI می‌تواند ۳۲ بیتی (برای معماری x86-32 و ARM) یا ۶۴ بیتی (برای معماری x86-64 و ایتانیوم) باشد.[۴] UEFI ۶۴ بیتی از long mode که به برنامه‌ها در محیط اجرائیِ پیش از بوت، اجازه دسترسی به تمامی حافظه با استفاده از آدرس دهی ۶۴ بیتی می‌دهد پشتیبانی می‌کند.[۶] UEFI عملاً نیاز دارد تا فرم‌ویر و سیستم‌عامل از نظر اندازه بیت محاسباتی هم اندازه باشند. به عنوان مثال طراحی ۶۴ بیتی UEFI تنها می‌تواند یک سیستم‌عامل ۶۴ بیتی را راه‌اندازی کند.

سازگار با دستگاه‌های حافظه[ویرایش]

در EFI علاوه بر شمای استاندارد پارتیشن دیسک، که از رکورد بوت‌اصلی (به انگلیسی: Master Boot Record) استفاده می‌کند، شمای پارتیشن‌بندی جدیدی نیز استفاده می‌کند. جدول پارتیشن GUID (به اختصار GPT) فاقد از هرگونه محدودیت‌های موجود در معماری رکوردبوت اصلی داس می‌باشد. به‌طور مشخص، این رکورد محدود به تعداد و اندازه پارتیشن‌های دیسک (تا ۴ پارتیشن بر روی هر دیسک و تا ۲٫۲ ترابایت برای هر دیسک) می‌باشد در حالی که GPT قادر به شناسایی دیسک یا پارتیشنی به اندازه ۹٫۴ زِتابایت (به انگلیسی: ZiB) می‌باشد. همچنین مشخصه EFI به فایل سیستم خاصی محدود نمی‌شود.[۷]

سرویس‌ها[ویرایش]

EFI دو نوع سرویس را معرفی کرده‌است. سرویس‌های راه‌انداز و سریس‌های زمان اجرا. سرویس‌های بوت تنها زمانی که فرم‌ویر مالکیت پلت‌فرم را در اختیار دارد قابل دسترس می‌باشند (قبل از فراخوانی ExitBootServices). سرویس‌های بوت شامل کنسول‌های متنی و گرافیکی بر روی دستگاه‌ها و باس‌های مختلف و دستگاه‌های متنی/داده‌ای می‌شود. درحالی که سرویس‌های زمان اجرا تا زمانی که سیستم‌عامل در حال اجراست نیز قابل دسترسی هستند. سرویس‌های زمان اجرا شامل سرویس‌هایی چون تاریخ، زمان و دسترسی به NVRAM می‌شوند.

سرویس‌های متغیری[ویرایش]

متغیرهای UEFI روشی برای ذخیره داده‌ها را به شکلی غیرفرار مهیا می‌کند که مابین فرم‌ور پلتفرم و سیستم‌عامل یا ابزار خود UEFI به اشتراک گذاشته می‌شود. فضای‌نام متغیر توسط GUIDها شناسائی می‌شوند. این متغیرها شامل جفت داده‌های کلید و مقدار می‌باشند.

سرویس‌های زمانی[ویرایش]

UEFI سرویس‌های زمانی مستقل از دستگاه را شامل می‌شود. سرویس‌های زمانی‌ای شامل پشتیبانی از منطقه زمانی و فیلدهای صرفه‌جویی در مصرف روشنایی روز که به ساعت بلادرنگ سخت‌افزاری اجازه می‌دهد تا به زمان محلی یا به وقت جهانی تنظیم شود. در ماشین‌هایی که از ساعت بلادرنگ PC-AT استفاده می‌کنند، هنوز ساعت نیاز به تنظیم شدن به زمان محلی برای سازگاری با ویندوزهای مبتنی بر بایوس دارند.

پروتکل‌ها[ویرایش]

EFI پروتکل‌ها را به‌عنوان مجموعه‌ای از رابط‌های نرم‌افزاری برای ارتباطات مابین دو ماژول باینری معرفی کرده‌است. تمامی درایورهای EFI سرویس خود را از طریق این پروتکل‌ها به دیگران ارائه می‌دهند.

درایورهای دستگاه[ویرایش]

علاوه بر راه‌اندازهای دستگاه‌های استانداردی که مبتنی بر معماری خاصی هستند، efi محیطی را برای درایورهای مستقل از پردازنده مهیا می‌کند که کدبایتِ efi یا به‌اختصار EBC نامیده می‌شود. با این مفهوم، EBC شبیه به open-hardware، فرم‌ویر مستقل از سخت‌افزار استفاده شده در کامپیوترهای مکینتاش مبتنی بر Power-PC شرکت Apple و کامپیوترهای اسپارک شرکت Sun Microsystems می‌باشد.

ویژگی‌های بخش گرافیک[ویرایش]

مشخصه efi پروتکل UGA (مبدل گرافیک جهانی) را به عنوان روشی برای پشتیبانی از گرافیک مستقل از سخت‌افزار معرفی کرده‌است. حال uefi شامل UGA نمی‌شود بلکه آن را با پروتکل GOP (پروتکل خروجی گرافیکی) با هدف حذف وابستگی‌های سخت‌افزاری vga جایگزین کرده‌است. این دو پروتکل مشابه یکدیگر می‌باشند.
در uefi نسخه ۲٫۱ زیرساخت رابط انسانی (HII) معرفی شده تا ورودی کاربری را مدیریت، رشته‌ها، قلم‌ها و فرم‌هارا (به مفهوم HTML) محلی‌سازی کند. این ویژگی، OEMها یا IBVها را قادر به طراحی رابط‌های گرافیکی برای انجام عملیات پیکره‌بندی قبل از راه‌اندازی سیستم‌عامل می‌سازد. UEFI خود شامل رابط کاربری نمی‌شود. بیشتر پیاده‌سازی‌های اولیه UEFI بر پایه کنسول بودند اما از ابتدای سال ۲۰۰۷ چندین پیاده‌سازی با رابط کاربری گرافیکی صورت گرفته‌است.

راه‌اندازی[ویرایش]

UEFI مدیر راه‌انداز (به انگلیسی: Boot Manager) خود را داراست. این مدیر راه‌انداز، موتور رویه‌ای فرم‌ویر است که مسئوول بارگذاری بارگذارنده سیستم‌عامل (به انگلیسی: OS loader) و تمام درایورهای مورد نیاز می‌باشد. پیکره‌بندی راه‌انداز، توسط مجموعه‌ای از متغیرهای سراسری NVRAM شامل متغیرهای راه‌انداز که مسیر بارگذارنده‌های سیستم‌عامل‌ها را مشخص می‌کنند شامل می‌شود.
بارگذارنده‌های سیستم‌عامل دسته‌ای از ابزارهای UEFI می‌باشند. به عنوان مثال، این بارگذارنده‌ها بر روی سیستم‌فایلی به صورت یک سند مجزا ذخیره شده‌اند که می‌توانند برای فرم‌ویر قابل‌دسترس باشند. سیستم‌فایل‌های پشتیبانی شده در UEFI شامل FAT12 (فلاپی دیسک‌ها)، FAT16 و FAT32 در دیسک‌های سخت و ISO9660 و UDF در دیسک‌های فشرده (CD/DVD) می‌باشد. جدول‌های پارتیشن پشتیبانی شده نیز شامل MBR و GPT می‌باشند. بارگذارنده‌های راه‌انداز (به انگلیسی: Boot Loaders) نیز می‌توانند به صورت خودکار توسط فرم‌ویر شناسایی شوند تا در نهایت منجر به راه‌اندازی شدن از دستگاه‌های قابل‌حملی همچون حافظه‌های USB شوند. این ویژگی متکی بر استانداردسازی مسیر فایل راه‌انداز سیستم‌عامل‌ها می‌باشد که وابسته به معماری پلت‌فرم خواهد بود.
همچنین عموماً فرم‌ویرهای UEFI شامل رابط کاربری‌ای برای مدیریت راه‌انداز خود هستند تا به کاربران خود اجازه انتخاب و راه‌انداری سیستم‌عامل‌شان را از میان گزینه‌های قابل انتخاب بدهند.

پوسته EFI[ویرایش]

EFI پوسته‌ای را معرفی کرده که می‌تواند برای اجرای دیگر ابزارهای EFI مورد استفاده قرار بگیرد.

افزونه‌ها[ویرایش]

افزونه‌ها (به انگلیسی: Extensions) را می‌توان به واقع از هر حافظه غیرفراری که به کامپیوتر متصل شده‌است بارگذاری کرد. برای مثال، سازنده تجهیزات اصلی (به انگلیسی: OEM) می‌تواند سیستم‌هایی را با پارتیشن EFI بر روی دیسک سخت کامپیوتر خود تولید و روانه بازار کند که کارایی‌های اضافه‌تری را نسبت عملکرد استاندارد EFI موجود بر روی بردمادر در اختیار کاربر قرار می‌دهد.

پیاده‌سازی و به‌کارگیری[ویرایش]

اینتل[ویرایش]

پیاده‌سازی اینتل از EFI چارچوب نوین پلت‌فرم اینتل (به انگلیسی: Intel Platform Innovation Framework) با کدنام تیانو (به انگلیسی: Tiano) نامیده می‌شود.

سیستم‌های عامل[ویرایش]

سیستم‌عاملی که بتواند از فرم‌ویر EFI/UEFI راه‌اندازی شود اصطلاحاً سیستم‌عامل آگاه از EFI/UEFI (به انگلیسی: (U)EFI-aware OS) نامیده می‌شود. واژه راه‌اندازی شدن از EFI/UEFI بدین معناست که سیستم مستقیماً و با استفاده از «بارگذارنده سیستم‌عامل» EFI/UEFI ذخیره شده بر روی دستگاه حافظه، راه‌اندازی شود. مکان پیش‌فرض این بارگذارنده برابر است با /EFI/BOOT/boot[arch].EFI برخی از بنگاه‌های فروش سیستم‌عامل ممکن است بارگذارنده سیستم‌عامل (به انگلیسی: OS Loader) خود را داشته باشند یا همچنین مسیر پیش‌فرض راه‌انداز را تغییر دهند.

  • لینوکس، از اوایل سال ۲۰۰۰ قادر بوده تا از EFI در زمان راه‌اندازی با استفاده از «بارگذارنده راه‌انداز EFI» ابزار elilo یا نسخه جدیدتر EFI ابزار GRUB استفاده کند. همچنین لینوکس به همراه ابزار گراب می‌تواند از جدول پارتیشن GUID بدون نیاز به UEFI راه‌اندازی شود.
  • تقریباً تمام کامپیوترهایی که در کارخانه ویندوز۸ و ویندوز ۱۰ به صورت اورجینال بر روی آن‌ها نصب شده باشد از EFI/UEFI پشتیبانی می‌کنند. همچنین تمام تبلت‌های ویندوزی فقط از EFI/UEFI پشتیبانی می‌کنند و دیگر امکان پشتیبانی از بایوس در آن‌ها وجود ندارد.[۸]

نقدها[ویرایش]

بسیاری از فعالان حقوق دیجیتالی به UEFI اعتراض کرده‌اند. رونالد جی. مینیچ (به انگلیسی: Ronald G. Minnich)، یکی از نویسندگان coreboot، و کُری داکترو (به انگلیسی: Cory Doctorow)، فعال حقوق دیجیتالی، EFI را به عنوان تلاشی برای حفظ «مالکیت خصوصی» توسط حذف امکان کنترل کامل رایانه، توسط مالکش نقد کرده‌اند.[۹]
همچنین مشکلات قدیمی بایاس را در نیاز به وجود دو راه‌انداز متفاوت، یکی برای فرم‌ویر و دیگری برای سیستم‌عامل را بر روی بیشتر سخت‌افزارها رفع نمی‌کند.
در UEFI پشته شبکه، برخلاف بسیاری از BIOSها به صورت کامل از ابتدا پیاده‌سازی شده‌است و به همین دلیل هدف بالقوه‌ای برای سوءاستفاده‌های امنیتی راه‌دور می‌باشد

راه‌انداز امن[ویرایش]

توسعه‌دهنده شرکت Red Hat به نام متیو گرت (به انگلیسی: Matthew Garrett) در مقاله‌اش با عنوان «راه‌اندازی امن در»UEFI (به انگلیسی: UEFI secure booting) نگرانی خود را چنین مطرح کرده که ویژگی «راه‌انداز امن» ممکن‌است ضربه‌ای برای لینوکس باشد (ماشین‌هایی که به همراه لوگوی ویندوز ۸ و با قابلیت فعال‌شده بوت‌امن همراه با فقط کلیدهای شرکت OEM و مایکروسافت فروخته می‌شوند قادر به راه‌اندازی کپی‌ای از سیستم‌عامل لینوکس نخواهند بود). در جوابیه، شرکت مایکروسافت بیان کرد که مشتریان قادر خواهند بود تا ویژگی راه‌انداز امن را از طریق رابط UEFI غیرفعال کنند ولی نگرانی‌ها همچنان باقی‌است چراکه برخی OEMها ممکن‌است این قابلیت را از کامپیوترهای خود حذف کنند. بعدها گزارش شد که مایکروسافت ظاهراً پیاده‌سازی قابلیت غیرفعال‌سازی بوت‌امن را بر روی سیستم‌هایی با معماری ARM را ممنوع کرده‌است.
جاشوا گی (به انگلیسی: Joshua Gay) از بنیاد نرم‌افزار آزاد نیز نگرانی خود مبنی بر پیاده‌سازی «راه‌انداز امن» در UEFI را مطرح و بنیاد نرم‌افزار آزاد بیانیه عمومی‌ای را برای امضاکردن معرفی کرد که چنین می‌گوید:

ما (امضا کنندگان این بیانیه) از تمامی سازندگان کامپیوتری که ویژگی «راه‌نداز امن» خوانده شده در UEFI را پیاده‌سازی می‌کنند می‌خواهیم تا این کار را به روشی انجام دهند تا به سیستم‌عامل‌های آزاد اجازه نصب شدن را بدهند. برای احترام به آزادی کاربر و حفاظت صحیح از امنیت کاربر، سازندگان بایستی یا این اجازه را به مالک کامپیوتر بدهند تا محدودیت راه‌اندازی مذکور را غیرفعال یا روش مطمئنی را برای نصب و اجرای سیستم‌عامل آزاد به انتخاب مالک در اختیارش قرار داده شود. ما تأکید می‌کنیم که نه چنین کامپیوترهایی را می‌خریم و نه کامپیوترهایی را که کاربران را از این آزادی مهم سلب می‌کنند توصیه می‌کنیم و فعالانه از مردم در جوامع‌مان می‌خواهیم تا از چنین سیستم‌های زندان‌مانندی پرهیز کنند.

در دسامبر ۲۰۱۱، شرکت مایکروسافت سندی را مرتبط با گواهینامه سخت‌افزاری محصولات OEM خود منتشر کرد، «شرایط لازم برای گواهینامه سخت‌افزاری ویندوز» تأیید می‌کند آن‌ها در تلاش برای سلب امکان نصب سیستم‌عامل معادل بر روی دستگاه‌های ARM هستند که ویندوز ۸ در آن‌ها اجرا شده‌است. این سند اصرار دارد که مایکروسافت نیاز دارد تا دستگاه‌های x86 و x86-64 ویژگی امنیتی UEFI را به صورت پیش‌فرض فعال داشته باشند. آن‌ها امکانی را که بوت امن شخصی‌سازی‌شده بتواند کاربر را قادر به اضافه‌کردن امضا کند را در این سند مجاز شمرده‌اند. هرچند که تلاش برای اجرای راه‌انداز امن شخصی‌سازی‌شده یا انتخاب حالت غیرفعال شده راه‌اندازامن بر روی دستگاه‌های ARM با شرایط دریافت این گاهینامه ناسازگار اعلام شده‌است

منابع[ویرایش]

  1. "Emulex UEFI Implementation Delivers Industry-leading Features for IBM Systems" (PDF) (به انگلیسی). Emulex. Archived from the original (PDF) on 10 July 2011. Retrieved 14 September 2010. {{cite news}}: More than one of |تاریخ بایگانی= و |archivedate= specified (help); More than one of |پیوند بایگانی= و |archiveurl= specified (help)
  2. Intel Technology Journal
  3. UEFI and Windows
  4. ۴٫۰ ۴٫۱ «نسخه آرشیو شده» (PDF). بایگانی‌شده از اصلی (PDF) در ۱۰ ژوئیه ۲۰۱۱. دریافت‌شده در ۲۸ ژوئن ۲۰۱۲.
  5. LBA explained - Solving the 3TB Problem? | bit-tech.net
  6. «نسخه آرشیو شده». بایگانی‌شده از اصلی در ۴ ژانویه ۲۰۱۴. دریافت‌شده در ۲۹ ژوئن ۲۰۱۲.
  7. «نسخه آرشیو شده» (PDF). بایگانی‌شده از اصلی (PDF) در ۲۲ مارس ۲۰۱۳. دریافت‌شده در ۲۹ ژوئن ۲۰۱۲.
  8. «آیا کامپیوتر شما از UEFI/EFI پشتیبانی می‌کند یا از بایوس؟ – ویندوز مگ». ویندوز مگ. ۱۳۹۶-۱۲-۲۷T15:32:15+03:30. دریافت‌شده در 2018-04-11. تاریخ وارد شده در |تاریخ= را بررسی کنید (کمک)[پیوند مرده]
  9. «Interview: Ronald G Minnich». Fosdem. ۶ فوریه ۲۰۰۷. بایگانی‌شده از اصلی در ۲۹ ژانویه ۲۰۱۱. دریافت‌شده در ۱۴ سپتامبر ۲۰۱۰. بیش از یک پارامتر |پیوند بایگانی= و |archiveurl= داده‌شده است (کمک); بیش از یک پارامتر |تاریخ بایگانی= و |archivedate= داده‌شده است (کمک)