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

بندانگشتی|لوگوی UEFI

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

## تاریخچه
ایدهٔ اصلی برای EFI به هنگام توسعهٔ اولین سیستم ایتانیوم  اینتل-اچ‌پی در اواسط دههٔ ۱۹۹۰ به وجود آمد. محدودیت‌های بایوس رایانه‌های شخصی (حالت پردازندهٔ ۱۶-بیتی، ۱ مگابایت فضای قابل آدرس‌دهی، وابستگی‌های سخت‌افزاری پی‌سی ای‌اتی و…) برای سرورهای بزرگ‌تری که ایتانیوم به سمت آن‌ها حرکت می‌کرد، غیرقابل قبول بود. تلاش برای حل این مشکلات در ابتدا با نام *آغازگر بوت اینتل*، در سال ۱۹۹۸ شروع شد، و بعدها به 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 علاوه بر شمای استاندارد پارتیشن دیسک، که از رکورد بوت‌اصلی  استفاده می‌کند، شمای پارتیشن‌بندی جدیدی نیز استفاده می‌کند. جدول پارتیشن GUID (به اختصار * GPT*) فاقد از هرگونه محدودیت‌های موجود در معماری رکوردبوت اصلی داس می‌باشد. به‌طور مشخص، این رکورد محدود به تعداد و اندازه پارتیشن‌های دیسک (تا ۴ پارتیشن بر روی هر دیسک و تا ۲٫۲ ترابایت برای هر دیسک) می‌باشد در حالی که GPT قادر به شناسایی دیسک یا پارتیشنی به اندازه ۹٫۴ زِتابایت  می‌باشد. همچنین مشخصه 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 مدیر راه‌انداز  خود را داراست. این مدیر راه‌انداز، موتور رویه‌ای فرم‌ویر است که مسئوول بارگذاری بارگذارنده سیستم‌عامل  و تمام درایورهای مورد نیاز می‌باشد. پیکره‌بندی راه‌انداز، توسط مجموعه‌ای از متغیرهای سراسری NVRAM شامل متغیرهای راه‌انداز که مسیر بارگذارنده‌های سیستم‌عامل‌ها را مشخص می‌کنند شامل می‌شود.
بارگذارنده‌های سیستم‌عامل دسته‌ای از ابزارهای UEFI می‌باشند. به عنوان مثال، این بارگذارنده‌ها بر روی سیستم‌فایلی به صورت یک سند مجزا ذخیره شده‌اند که می‌توانند برای فرم‌ویر قابل‌دسترس باشند. سیستم‌فایل‌های پشتیبانی شده در UEFI شامل FAT12 (فلاپی دیسک‌ها)، FAT16 و FAT32 در دیسک‌های سخت و ISO9660 و UDF در دیسک‌های فشرده (CD/DVD) می‌باشد. جدول‌های پارتیشن پشتیبانی شده نیز شامل MBR و GPT می‌باشند.
بارگذارنده‌های راه‌انداز  نیز می‌توانند به صورت خودکار توسط فرم‌ویر شناسایی شوند تا در نهایت منجر به راه‌اندازی شدن از دستگاه‌های قابل‌حملی همچون حافظه‌های USB شوند. این ویژگی متکی بر استانداردسازی مسیر فایل راه‌انداز سیستم‌عامل‌ها می‌باشد که وابسته به معماری پلت‌فرم خواهد بود.

همچنین عموماً فرم‌ویرهای UEFI شامل رابط کاربری‌ای برای مدیریت راه‌انداز خود هستند تا به کاربران خود اجازه انتخاب و راه‌انداری سیستم‌عامل‌شان را از میان گزینه‌های قابل انتخاب بدهند.

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

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

## پیاده‌سازی و به‌کارگیری
### اینتل
پیاده‌سازی اینتل از EFI *چارچوب نوین پلت‌فرم اینتل*  با کدنام *تیانو*  نامیده می‌شود.

## سیستم‌های عامل
سیستم‌عاملی که بتواند از فرم‌ویر EFI/UEFI راه‌اندازی شود اصطلاحاً سیستم‌عامل آگاه از EFI/UEFI  نامیده می‌شود. واژه **راه‌اندازی شدن از EFI/UEFI** بدین معناست که سیستم مستقیماً و با استفاده از «بارگذارنده سیستم‌عامل» EFI/UEFI ذخیره شده بر روی دستگاه حافظه، راه‌اندازی شود. مکان پیش‌فرض این بارگذارنده برابر است با /EFI/BOOT/boot[arch].EFI برخی از بنگاه‌های فروش سیستم‌عامل ممکن است بارگذارنده سیستم‌عامل  خود را داشته باشند یا همچنین مسیر پیش‌فرض راه‌انداز را تغییر دهند.
* لینوکس، از اوایل سال ۲۰۰۰ قادر بوده تا از EFI در زمان راه‌اندازی با استفاده از «بارگذارنده راه‌انداز EFI» ابزار elilo یا نسخه جدیدتر EFI ابزار GRUB استفاده کند. همچنین لینوکس به همراه ابزار گراب می‌تواند از جدول پارتیشن GUID بدون نیاز به UEFI راه‌اندازی شود.
* تقریباً تمام کامپیوترهایی که در کارخانه ویندوز۸ و ویندوز ۱۰ به صورت اورجینال بر روی آن‌ها نصب شده باشد از EFI/UEFI پشتیبانی می‌کنند. همچنین تمام تبلت‌های ویندوزی فقط از EFI/UEFI پشتیبانی می‌کنند و دیگر امکان پشتیبانی از بایوس در آن‌ها وجود ندارد.

## نقدها
بسیاری از فعالان حقوق دیجیتالی به UEFI اعتراض کرده‌اند. رونالد جی. مینیچ ، یکی از نویسندگان *coreboot*، و کُری داکترو ، فعال حقوق دیجیتالی، EFI را به عنوان تلاشی برای حفظ «مالکیت خصوصی» توسط حذف امکان کنترل کامل رایانه، توسط مالکش نقد کرده‌اند.
همچنین مشکلات قدیمی بایاس را در نیاز به وجود دو راه‌انداز متفاوت، یکی برای فرم‌ویر و دیگری برای سیستم‌عامل را بر روی بیشتر سخت‌افزارها رفع نمی‌کند.
در UEFI پشته شبکه، برخلاف بسیاری از BIOSها به صورت کامل از ابتدا پیاده‌سازی شده‌است و به همین دلیل هدف بالقوه‌ای برای سوءاستفاده‌های امنیتی راه‌دور می‌باشد

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

## منابع
* 

رده:یوئی‌اف‌آی
رده:بایوس