Birleşik Genişletilebilir Ürün Yazılımı Arayüzü - Unified Extensible Firmware Interface

EFI'nin yazılım yığınındaki konumu

Birleştirilmiş Genişletilebilir Ürün Arabirimi ( UEFI ) genel olarak mevcuttur özellikleri bir yazılım tanımlayan bir arayüz , bir arasında bir işletim sistemi ve platform firmware . UEFI, orijinal olarak tüm IBM PC uyumlu kişisel bilgisayarlarda bulunan eski Temel Giriş/Çıkış Sistemi ( BIOS ) sabit yazılımı arabiriminin yerini alır ve çoğu UEFI sabit yazılım uygulaması, eski BIOS hizmetleri için destek sağlar. UEFI, işletim sistemi kurulu olmasa bile bilgisayarların uzaktan tanılanmasını ve onarımını destekleyebilir.

Intel , orijinal Genişletilebilir Ürün Yazılımı Arabirimi ( EFI ) özelliklerini geliştirdi. EFI'nin bazı uygulamaları ve veri biçimleri, Microsoft Windows'unkileri yansıtır . 2005'te UEFI, EFI 1.10'u (EFI'nin son sürümü) kullanımdan kaldırdı. Birleştirilmiş EFI Forumu boyunca UEFI özellikleri yöneten sanayi organıdır.

Tarih

EFI için orijinal motivasyon, 1990'ların ortalarında ilk Intel-HP Itanium sistemlerinin erken gelişimi sırasında geldi . BIOS sınırlamaları (16-bit gerçek mod , 1MB adreslenebilir bellek alanı, Assembly dili programlama ve PC AT donanımı gibi), Itanium'un hedeflediği daha büyük sunucu platformları için çok kısıtlayıcı hale gelmişti. Bu endişeleri giderme çabası 1998'de başladı ve başlangıçta Intel Boot Initiative olarak adlandırıldı . Daha sonra Genişletilebilir Ürün Yazılımı Arabirimi (EFI) olarak yeniden adlandırıldı .

Temmuz 2005'te Intel, 1.10 sürümünde EFI belirtiminin geliştirilmesini durdurdu ve belirtimi Birleşik Genişletilebilir Ürün Yazılımı Arayüzü (UEFI) olarak geliştiren Birleşik EFI Forumu'na katkıda bulundu . Orijinal EFI spesifikasyonu, yalnızca EFI tabanlı ürünler için lisans sağlayan Intel'e aittir, ancak UEFI spesifikasyonu UEFI Forum'a aittir.

UEFI spesifikasyonunun 2.0 sürümü 31 Ocak 2006'da yayınlandı. Kriptografi ve güvenlik ekledi . UEFI spesifikasyonunun 2.1 sürümü 7 Ocak 2007'de yayınlandı. Ağ kimlik doğrulamasını ve kullanıcı arayüzü mimarisini (UEFI'de 'İnsan Arayüzü Altyapısı') ekledi .

En son UEFI spesifikasyonu sürüm 2.9, Mart 2021'de yayınlandı.

İlk açık kaynak UEFI uygulaması olan Tiano, 2004 yılında Intel tarafından piyasaya sürüldü. O zamandan beri Tiano'nun yerini EDK ve EDK2 aldı ve şimdi TianoCore topluluğu tarafından sürdürülüyor.

Aralık 2018'de Microsoft , Microsoft Surface ve Hyper-V ürünlerinde kullanılan bir TianoCore EDK2 çatalı olan Project Mu'yu duyurdu . Proje, Hizmet Olarak Ürün Yazılımı fikrini desteklemektedir .

Ekim 2018'de Arm , genel kullanıma hazır işletim sistemlerini ve hiper denetleyicileri Arm tabanlı sunuculara yerleştirmek için bir uyumluluk sertifika programı olan Arm ServerReady'yi duyurdu . Program, sistem üretici yazılımının Sunucu Tabanı Önyükleme Gereksinimleri (SBBR) ile uyumlu olmasını gerektirir. SBBR, UEFI, ACPI ve SMBIOS uyumluluğu gerektirir . Ekim 2020'de Arm, programın ve IoT pazarına genişletildiğini duyurdu . Yeni program adı Arm SystemReady'dir . Arm SystemReady , şu anda ikisi UEFI ile ilgili olmak üzere üç tarif sağlayan Temel Önyükleme Gereksinimleri ( BBR ) spesifikasyonunu tanımladı: 1) SBBR: Windows, Red Hat gibi kurumsal düzeydeki işletim ortamına uygun UEFI, ACPI ve SMBIOS uyumluluğu gerektiren Kurumsal Linux, VMware ESXi; ve 2) EBBR: Yocto gibi gömülü ortam için uygun olan Yerleşik Temel Önyükleme Gereksinimlerinde ( EBBR ) tanımlandığı gibi bir dizi UEFI arabirimine uyumluluk gerektirir . Birçok Linux ve BSD dağıtımı her iki tarifi de destekleyebilir.

Avantajlar

EFI spesifikasyonu tarafından tanımlanan arayüz, platform bilgilerini içeren veri tablolarını ve işletim sistemi yükleyicisi ve işletim sistemi tarafından kullanılabilen önyükleme ve çalışma zamanı hizmetlerini içerir. UEFI bellenimi, geleneksel bir BIOS sistemine göre çeşitli teknik avantajlar sağlar:

  • GUID Bölüm Tablosu (GPT) ile büyük bölümler (2 TB üzerinde ) içeren bir diski önyükleme yeteneği 
  • Ağ özelliği, GUI, çoklu dil dahil esnek işletim sistemi öncesi ortam
  • 32 bit (örneğin IA-32 , ARM32 ) veya 64 bit (örneğin x64 , AArch64 ) işletim sistemi öncesi ortam
  • C dili programlama
  • Modüler tasarım
  • Geri ve ileri uyumluluk

uyumluluk

İşlemci uyumluluğu

2.5 sürümünden itibaren, Itanium, x86, x86-64, ARM (AArch32) ve ARM64 (AArch64) için işlemci bağlantıları mevcuttur . Yalnızca küçük endian işlemciler desteklenebilir. Küçük endian modunda çalışan OpenPOWER soyutlama katmanı olan OPAL'in üstüne TianoCore uygulanarak POWERPC64 için resmi olmayan UEFI desteği geliştirilmektedir . MIPS ve RISC-V için benzer projeler mevcuttur . UEFI 2.7'den itibaren, 32-, 64- ve 128-bit modları için RISC-V işlemci bağlamaları resmi olarak oluşturulmuştur.

Standart PC BIOS'u, 16 bit Intel 8088 işlemci kullanan IBM 5150'yi temel alan tasarımdan kaynaklanan, 16 bit işlemci modu ve 1 MB adreslenebilir bellek alanıyla sınırlıdır . Buna karşılık, bir UEFI ortamındaki işlemci modu 32 bit ( x86-32 , AArch32) veya 64 bit ( x86-64 , Itanium ve AArch64) olabilir. 64 bit UEFI üretici yazılımı uygulamaları , önyükleme öncesi ortamdaki uygulamaların makinenin tüm belleğine doğrudan erişim sağlamak için 64 bit adreslemeyi kullanmasına izin veren uzun modu destekler .

UEFI, bellenim ve işletim sistemi yükleyicisinin (veya çekirdeğin) boyut olarak eşleşmesini gerektirir; diğer bir deyişle, 64 bit UEFI sabit yazılımı uygulaması yalnızca 64 bit işletim sistemi (OS) önyükleyici veya çekirdeği (CSM tabanlı Eski önyükleme kullanılmadığı sürece) yükleyebilir ve aynısı 32 bit için de geçerlidir. Sistem "Önyükleme Hizmetleri"nden "Çalışma Zamanı Hizmetleri"ne geçtikten sonra, işletim sistemi çekirdeği devreye girer. Bu noktada, çekirdek isterse işlemci modlarını değiştirebilir, ancak bu, çalışma zamanı hizmetlerinin kullanımını engeller (çekirdek tekrar geri dönmedikçe). Sürüm 3.15'ten itibaren, Linux çekirdeği , x86-64 CPU'larda çalışan 32-bit UEFI üretici yazılımı uygulamalarında önyüklenecek 64-bit çekirdekleri destekler ve gereklilik olarak bir UEFI önyükleyiciden UEFI aktarma desteği sağlanır. UEFI aktarma protokolü , çekirdek ve UEFI önyükleme yükleyicileri arasındaki UEFI başlatma kodunu tekilleştirir ve başlatma işleminin yalnızca Linux çekirdeğinin UEFI önyükleme saplaması tarafından gerçekleştirilmesini sağlar .

Disk cihazı uyumluluğu

UEFI , bir ana önyükleme kaydı (MBR) kullanan standart PC disk bölümü şemasına ek olarak , MBR'nin birçok sınırlamasından bağımsız olan GUID Partition Table (GPT) bölümleme şemasıyla da çalışır . Özellikle, disk bölümlerinin ( disk başına en fazla dört birincil bölüm ve disk başına 2  TB'ye (2 × 2 40 bayt ) kadar) sayısı ve boyutuyla ilgili MBR sınırları gevşetilmiştir. Daha spesifik olarak, GPT, maksimum disk ve 8 ZB (8 × 2 70 bayt) bölüm boyutuna izin verir  .

Linux

Linux'ta GPT desteği, CONFIG_EFI_PARTITIONçekirdek yapılandırması sırasında seçenek (EFI GUID Partition Support) etkinleştirilerek etkinleştirilir . Bu seçenek, sistem üretici yazılımı sistem üzerindeki denetimi Linux'a geçirdikten sonra Linux'un GPT disklerini tanımasına ve kullanmasına olanak tanır.

Tersine uyumluluk için Linux, hem GRUB 2 hem de Linux GPT farkında olduğundan , hem veri depolama hem de önyükleme için BIOS tabanlı sistemlerde GPT disklerini kullanabilir . Böyle bir kurulum genellikle BIOS-GPT olarak adlandırılır . GPT, koruyucu MBR'yi içerdiğinden, BIOS tabanlı bir bilgisayar, koruyucu MBR'nin önyükleme kodu alanında depolanan GPT'ye duyarlı bir önyükleyici kullanarak bir GPT diskinden önyüklenebilir . GRUB durumunda, böyle bir yapılandırma , GPT bölümlenmiş disklerde (GPT'nin Birincil Başlık ve Birincil Bölüm Tablosu tarafından devralınan) MBR sonrası boşluğun olmaması nedeniyle GRUB'un ikinci aşama kodunu gömmesi için bir BIOS önyükleme bölümü gerektirir. ). Genellikle 1  MB boyutunda olan bu bölümün GPT şemasındaki Genel Benzersiz Tanımlayıcısı (GUID) 21686148-6449-6E6F-744E-656564454649'dur ve GRUB tarafından yalnızca BIOS-GPT kurulumlarında kullanılır. GRUB'un bakış açısından, MBR bölümlemesi durumunda böyle bir bölümleme türü yoktur. Sistem UEFI tabanlıysa bu bölüm gerekli değildir çünkü bu durumda ikinci aşama kodunun gömülmesine gerek yoktur.

UEFI sistemleri, GPT disklerine erişebilir ve doğrudan bunlardan önyüklenebilir, bu da Linux'un UEFI önyükleme yöntemlerini kullanmasına olanak tanır. UEFI sistemlerinde Linux'u GPT disklerinden başlatmak, önyükleyiciler, işletim sistemi çekirdekleri ve yardımcı program yazılımı gibi UEFI uygulamalarını içeren bir EFI sistem bölümünün (ESP) oluşturulmasını içerir. Bu tür bir kurulum genellikle UEFI-GPT olarak adlandırılırken , maksimum uyumluluk için ESP'nin en az 512 MB boyutunda olması ve FAT32 dosya sistemiyle biçimlendirilmesi önerilir.

İçin geriye dönük uyumluluk , en UEFI uygulamaları da eski BIOS uyumluluk sağlar Uyumluluk Destek modülü (CSM) içinden MBR bölümlenmemiş diskler, önyükleme destekler. Bu durumda, UEFI sistemlerinde Linux'u başlatmak, eski BIOS tabanlı sistemlerdekiyle aynıdır.

Microsoft Windows

Windows Vista SP1 ve sonraki sürümlerinin 64 bit sürümleri ile Windows 8 , 8.1 ve 10'un 32 bit sürümleri 2 TB'den büyük bir GPT diskinden önyüklenebilir  .

Özellikleri

Hizmetler

UEFI değişkenleri örneği

EFI iki tür hizmeti tanımlar: önyükleme hizmetleri ve çalışma zamanı hizmetleri . Önyükleme hizmetleri yalnızca donanım yazılımı platforma sahip olduğunda (yani ExitBootServices()aramadan önce ) kullanılabilir ve çeşitli cihazlarda metin ve grafik konsolları ile veri yolu, blok ve dosya hizmetlerini içerir. İşletim sistemi çalışırken çalışma zamanı hizmetlerine hala erişilebilir; tarih, saat ve NVRAM erişimi gibi hizmetleri içerirler .

Grafik Çıkış Protokolü (GOP) hizmetleri
Grafik Çıktı Protokolü (GOP) çalışma zamanı hizmetleri vermektedir; ayrıca aşağıdaki Grafik özellikleri bölümüne bakın. İşletim sisteminin, çalışma zamanı modu sırasında GOP tarafından sağlanan çerçeve arabelleğine doğrudan yazmasına izin verilir.
UEFI Bellek harita hizmetleri
SMM hizmetleri
ACPI hizmetleri
SMBIOS hizmetleri
Değişken hizmetler
UEFI değişkenleri, özellikle geçici olmayan veriler olmak üzere verileri depolamak için bir yol sağlar. Bazı UEFI değişkenleri, platform sabit yazılımı ve işletim sistemleri arasında paylaşılır. Değişken ad alanları GUID'ler tarafından tanımlanır ve değişkenler anahtar/değer çiftleridir. Örneğin, UEFI değişkenleri , işletim sisteminin yeniden başlatmanın ardından alması için bir kilitlenme sonrasında NVRAM'de kilitlenme mesajlarını tutmak için kullanılabilir .
Zaman hizmetleri
UEFI zaman hizmetleri sağlar. Saat hizmetleri, donanımın gerçek zamanlı saatinin yerel saate veya UTC'ye ayarlanmasına izin veren saat dilimi ve gün ışığından yararlanma alanları desteğini içerir . PC-AT gerçek zamanlı saat kullanan makinelerde, en son sürümler kullanılmadıkça ve Windows kayıt defterindeki bir giriş , kullanımı belirtmek üzere ayarlanmadıkça , varsayılan olarak donanım saatinin BIOS tabanlı Windows ile uyumluluk için yerel saate ayarlanması gerekir. UTC'nin.

Uygulamalar

EFI önyükleme yöneticisi ve EFI sürücüleri arasındaki etkileşim

UEFI, bir işletim sistemi yüklemenin ötesinde , EFI Sistem Bölümünde dosyalar olarak bulunan UEFI uygulamalarını çalıştırabilir . UEFI Kabuğundan, bellenimin önyükleme yöneticisi veya diğer UEFI uygulamaları tarafından yürütülebilirler. UEFI uygulamaları , orijinal ekipman üreticilerinden (OEM'ler) bağımsız olarak geliştirilebilir ve kurulabilir .

Bir tür UEFI uygulaması, GRUB , rEFInd , Gummiboot ve Windows Önyükleme Yöneticisi gibi bir işletim sistemi önyükleyicisidir ; bu, bazı işletim sistemi dosyalarını belleğe yükler ve bunları yürütür. Ayrıca, bir işletim sistemi önyükleme yükleyicisi, çalışacak başka bir UEFI uygulamasının seçimine izin vermek için bir kullanıcı arabirimi sağlayabilir. UEFI Shell gibi yardımcı programlar da UEFI uygulamalarıdır.

protokoller

EFI, protokolleri iki ikili modül arasında iletişim için kullanılan bir dizi yazılım arabirimi olarak tanımlar. Tüm EFI sürücüleri, protokoller aracılığıyla başkalarına hizmet sağlamalıdır. EFI Protokolleri, BIOS kesme çağrılarına benzer .

Aygıt sürücüleri

Standart talimat seti mimarisine özgü aygıt sürücülerine ek olarak , EFI, geçici olmayan bellekte EFI bayt kodu veya EBC olarak depolanan ISA'dan bağımsız bir aygıt sürücüsü sağlar . Sistem bellenimi, EBC görüntüleri için bir yorumlayıcıya sahiptir. Bu anlamda EBC, diğerlerinin yanı sıra PowerPC tabanlı Apple Macintosh ve Sun Microsystems SPARC bilgisayarlarında kullanılan ISA'dan bağımsız ürün yazılımı olan Open Firmware'e benzer .

Bazı aygıt türleri için mimariye özgü (EFI Bayt Kodu olmayan) bazı EFI sürücüleri, işletim sistemi tarafından kullanılmak üzere arabirimlere sahip olabilir. Bu, işletim sistemine özgü sürücüler yüklenmeden önce ve yüklenmeden önce, sürücülerin temel grafik ve ağ işlevlerini gerçekleştirmesi için işletim sisteminin EFI'ye güvenmesine olanak tanır.

Diğer durumlarda, EFI sürücüsü, diğer disk birimleri türlerinden önyüklemeye izin veren dosya sistemi sürücüleri olabilir. Örnekler arasında , zincir yükleme NTFS ESP'leri için Rufus tarafından kullanılan 37 dosya sistemi ( GRUB2 koduna dayalı) için efektler yer alır .

Grafik özellikleri

EFI 1.0 spesifikasyonu, grafik özelliklerini desteklemenin bir yolu olarak bir UGA (Evrensel Grafik Bağdaştırıcısı) protokolünü tanımladı. UEFI, UGA'yı içermedi ve GOP (Grafik Çıkış Protokolü) ile değiştirdi.

UEFI 2.1, kullanıcı girdisini, yerelleştirilmiş dizeleri, yazı tiplerini ve formları ( HTML anlamında) yönetmek için bir "İnsan Arayüzü Altyapısı" (HII) tanımladı . Bunlar, orijinal ekipman üreticilerinin (OEM'ler) veya bağımsız BIOS satıcılarının (IBV'ler) önyükleme öncesi yapılandırma için grafik arabirimler tasarlamasını sağlar.

Çoğu erken UEFI üretici yazılımı uygulamaları konsol tabanlıydı. Bugün birçok UEFI üretici yazılımı uygulaması GUI tabanlıdır.

EFI sistem bölümü

Genellikle ESP olarak kısaltılan bir EFI sistem bölümü, UEFI belirtimine uyan bilgisayarlarda kullanılan bir veri depolama aygıtı bölümüdür. Bir bilgisayar açıldığında UEFI sabit yazılımı tarafından erişilen, UEFI uygulamalarını ve işletim sistemi önyükleyicileri dahil olmak üzere bu uygulamaların çalıştırması gereken dosyaları depolar . Desteklenen bölüm tablosu şemaları, MBR ve GPT'nin yanı sıra optik disklerdeki El Torito birimlerini içerir. ESP'lerde kullanım için UEFI, FAT32 , FAT16 ve FAT12 dosya sistemlerini kapsayan, UEFI belirtiminin bir parçası olarak ve orijinal FAT belirtiminden bağımsız olarak tutulan FAT dosya sisteminin belirli bir sürümünü tanımlar . ESP ayrıca geriye dönük BIOS uyumluluğunun bir parçası olarak bir önyükleme sektörü için alan sağlar.

Önyükleme

UEFI önyüklemesi

Eski PC BIOS'unun aksine, UEFI önyükleme sektörlerine güvenmez, bunun yerine UEFI belirtiminin bir parçası olarak bir önyükleme yöneticisi tanımlar. Bir bilgisayar açıldığında, önyükleme yöneticisi önyükleme yapılandırmasını kontrol eder ve ayarlarına göre, belirtilen işletim sistemi önyükleme yükleyicisini veya işletim sistemi çekirdeğini (genellikle önyükleme yükleyicisi) yürütür . Önyükleme yapılandırması, işletim sistemi yükleyicilerine veya işletim sistemi çekirdeklerine giden dosya sistemi yollarını gösteren değişkenler de dahil olmak üzere , NVRAM'de depolanan değişkenler tarafından tanımlanır .

İşletim sistemi önyükleme yükleyicileri, USB flash sürücüler gibi çıkarılabilir aygıtlardan kolay önyükleme sağlayan UEFI tarafından otomatik olarak algılanabilir . Bu otomatik algılama, bilgisayar mimarisine bağlı olarak değişen yol ile işletim sistemi önyükleyicisine giden standartlaştırılmış dosya yollarına dayanır . Dosya yolunun biçimi <EFI_SYSTEM_PARTITION>\EFI\BOOT\BOOT<MACHINE_TYPE_SHORT_NAME>.EFI ; örneğin bir OS yükleyici için dosya yolu X86-64 sistemde olduğu \ efi \ boot \ bootx64.efi ve \ efi \ boot \ bootaa64.efi ARM64 mimarisini.

Önyükleme işlemi

UEFI sistemlerini GPT bölümlenmiş disklerden başlatmak , genellikle UEFI-GPT önyüklemesi olarak adlandırılır . UEFI spesifikasyonunun GPT bölüm tablolarının tam olarak desteklenmesini gerektirmesine rağmen, bazı UEFI üretici yazılımı uygulamaları, önyükleme diskinin bölüm tablosunun türüne bağlı olarak hemen BIOS tabanlı CSM önyüklemesine geçerek, UEFI önyüklemesinin EFI Sistem Bölümünden gerçekleştirilmesini etkin bir şekilde engeller. MBR bölümlenmiş disklerde. Böyle bir önyükleme şemasına genellikle UEFI-MBR denir .

Bir önyükleme yöneticisinin, kullanıcının mevcut önyükleme seçenekleri listesinden istenen işletim sistemini (veya kurulum yardımcı programını) seçebilmesi için metinsel bir kullanıcı arabirimine sahip olması da yaygındır.

CSM önyüklemesi

Geriye dönük uyumluluğu sağlamak için, PC sınıfı makinelerdeki çoğu UEFI üretici yazılımı uygulamaları , eski BIOS uyumluluğu sağlayan Uyumluluk Destek Modülü (CSM) aracılığıyla MBR bölümlü disklerden eski BIOS modunda önyüklemeyi de destekler . Bu senaryoda, önyükleme, bölüm tablosunu yok sayarak ve bir önyükleme sektörünün içeriğine dayanarak, eski BIOS tabanlı sistemlerde olduğu gibi gerçekleştirilir .

MBR bölümlenmiş disklerden BIOS tarzı önyükleme , UEFI veya eski BIOS tabanlı sistemlerde gerçekleştirildiğine bakılmaksızın , genellikle BIOS-MBR olarak adlandırılır . Ayrıca, eski BIOS tabanlı sistemlerin GPT disklerinden önyüklenmesi de mümkündür ve böyle bir önyükleme şemasına genellikle BIOS-GPT adı verilir .

Uyumluluk Destek Modülü eski işletim sistemleri ve bazı eski verir opsiyon ROM'lar UEFI desteğine sahip değildir hala kullanılacak. Ayrıca , UEFI SMM tarafından sağlanan özelliklere ek olarak CompatibilitySmm adı verilen gerekli eski Sistem Yönetim Modu (SMM) işlevselliğini sağlar . Bu tür eski bir SMM işlevselliğinin bir örneği, klasik PS/2 karşılıklarını taklit ederek klavye ve fare için eski USB desteği sağlamaktır .

Kasım 2017'de Intel, 2020 yılına kadar CSM desteğini aşamalı olarak kaldırmayı planladığını duyurdu.

Ağ önyüklemesi

UEFI spesifikasyonu, Preboot eXecution Environment (PXE) aracılığıyla ağ üzerinden önyükleme desteği içerir . PXE önyükleme ağ protokolleri arasında İnternet Protokolü ( IPv4 ve IPv6 ), Kullanıcı Datagram Protokolü (UDP), Dinamik Ana Bilgisayar Yapılandırma Protokolü (DHCP), Önemsiz Dosya Aktarım Protokolü (TFTP) ve iSCSI bulunur .

İşletim sistemi görüntüleri , SAN'lara erişim için desteklenen protokoller olarak İnternet Küçük Bilgisayar Sistemi Arayüzü (iSCSI) ve Ethernet Üzerinden Fiber Kanal (FCoE) ile depolama alanı ağlarında (SAN'lar) uzaktan depolanabilir .

UEFI belirtiminin 2.5 sürümü, HTTP protokolü üzerinden önyükleme görüntülerine erişim desteği ekler .

Güvenli Önyükleme

REFInd önyükleme yöneticisi tarafından algılanan etkin bir Güvenli Önyükleme örneği

UEFI 2.3.1 Errata C spesifikasyonu (veya üstü), kabul edilebilir bir dijital imza ile imzalanmamış UEFI sürücülerinin veya işletim sistemi önyükleyicilerinin yüklenmesini önleyerek önyükleme işlemini güvence altına alabilen Güvenli Önyükleme olarak bilinen bir protokolü tanımlar . Bu sürücülerin ne kadar kesin olarak imzalanacağının mekanik detayları belirtilmemiştir. Güvenli Önyükleme etkinleştirildiğinde, başlangıçta "platform anahtarı" (PK) olarak bilinen ortak bir anahtarın bellenime yazılmasına izin veren "kurulum" moduna yerleştirilir. Anahtar yazıldıktan sonra Güvenli Önyükleme, yalnızca platform anahtarıyla imzalanmış UEFI sürücülerinin ve işletim sistemi önyükleyicilerinin bellenim tarafından yüklenebildiği "Kullanıcı" moduna girer. Diğer sertifikaların kullanılmasına izin vermek için bellekte depolanan bir veritabanına ek "anahtar değişim anahtarları" (KEK) eklenebilir, ancak yine de platform anahtarının özel bölümüyle bağlantılarının olması gerekir. Güvenli Önyükleme, sisteme özel anahtarla eşleşmeyen ek ortak anahtarların eklenebileceği "Özel" moda da yerleştirilebilir.

Güvenli Önyükleme, Windows 8 ve 8.1 , Windows Server 2012 ve 2012 R2, Windows 10 , Windows Server 2016 , 2019 ve 2022 ve Windows 11 , VMware vSphere 6.5 ve Fedora (sürüm 18'den beri) dahil olmak üzere bir dizi Linux dağıtımı tarafından desteklenir. openSUSE ( sürüm 12.3'ten beri ), RHEL (sürüm 7'den beri), CentOS (sürüm 7'den beri), Debian (sürüm 10'dan beri) ve Ubuntu (12.04.2 sürümünden beri). Ocak 2017 itibariyle, FreeBSD desteği planlama aşamasındadır.

UEFI kabuğu

UEFI kabuk 2.2 oturumu örneği

UEFI, UEFI önyükleyiciler dahil olmak üzere diğer UEFI uygulamalarını yürütmek için kullanılabilen bir kabuk ortamı sağlar . Bunun dışında, UEFI kabuğunda bulunan komutlar, bellek haritasını alma ( ), önyükleme yöneticisi değişkenlerini değiştirme ( ), bölümleme programlarını çalıştırma ( ), UEFI sürücülerini yükleme , sistem veya bellenim hakkında çeşitli diğer bilgileri elde etmek için kullanılabilir. ve metin dosyalarını düzenleme ( ). memmapbcfgdiskpartedit

Bir UEFI kabuk için kaynak kodu indirilebilir Intel 'in TianoCore UDK / EDK2 projesi. Önceden oluşturulmuş bir ShellBinPkg de mevcuttur. Shell v2, en iyi UEFI 2.3+ sistemlerinde çalışır ve bu sistemlerde Shell v1'e göre önerilir. Shell v1, tüm UEFI sistemlerinde çalışmalıdır.

UEFI kabuğunu başlatmak için kullanılan yöntemler, sistem anakartının üreticisine ve modeline bağlıdır . Bazıları zaten başlatma için üretici yazılımı kurulumunda doğrudan bir seçenek sunar, örneğin kabuğun derlenmiş x86-64 sürümünün <EFI_SYSTEM_PARTITION>/SHELLX64.EFI. Diğer bazı sistemler, uygun tuşa basma kombinasyonlarıyla başlatılabilen, halihazırda gömülü bir UEFI kabuğuna sahiptir. Diğer sistemler için çözüm, uygun bir USB flash sürücü oluşturmak veya bcfgkabuğun derlenmiş sürümüyle ilişkili bir önyükleme seçeneğini manuel olarak ( ) eklemektir .

Komutlar

Aşağıda, EFI kabuğu tarafından desteklenen komutların bir listesi bulunmaktadır .

Uzantılar

UEFI uzantıları , bilgisayara bağlı hemen hemen tüm kalıcı depolama aygıtlarından yüklenebilir . Örneğin, bir orijinal ekipman üreticisi (OEM) , sabit sürücüde bir EFI sistem bölümü olan sistemleri dağıtabilir , bu da anakartın ROM'unda depolanan standart UEFI sabit yazılımına ek işlevler ekler .

UEFI Kapsül

UEFI Kapsül, Donanım Yazılımından İşletim Sistemine, modern ve güvenli bir donanım yazılımı güncelleme arayüzü tanımlar. Windows 8 , Windows 8.1 , Windows 10 ve Linux için Fwupd , UEFI Kapsülünü destekler.

Donanım

Gibi BIOS , UEFI başlatır ve testler sistem donanım bileşenleri (örneğin Hafıza eğitimi, PCIe bağlantı eğitimi, USB bağlantı eğitimi) ve sonra yükler önyükleyicinizi gelen yığın depolama aygıtı veya ağ önyükleme . Gelen x86 sistemlerde, UEFI firmware genellikle saklanır NOR flaş anakart çip.

UEFI sınıfları

UEFI makineleri, UEFI'ye geçişi kolaylaştırmak için kullanılan aşağıdaki "sınıflardan" birine sahip olabilir. Intel, 2020'de Eski BIOS'u sonlandırdı.

  • Sınıf 0: Eski BIOS
  • Sınıf 1: Yalnızca CSM modunda UEFI (yani UEFI önyüklemesi yok)
  • 2. Sınıf: CSM ile UEFI
  • Sınıf 3: CSM'siz UEFI
  • Sınıf 3+: Güvenli Önyükleme Etkinleştirilmiş UEFI

Önyükleme aşamaları

SEC - Güvenlik Aşaması

Bu, UEFI önyüklemesinin ilk aşamasıdır, ancak ondan önce gelen platforma özel ikili koda sahip olabilir. (örneğin, Intel ME , AMD PSP , CPU mikro kodu ). Belirli mimari için montaj dilinde yazılmış minimum koddan oluşur . Geçici bir belleği (genellikle RAM olarak CPU önbelleğini) başlatır ve teslim edilmeden önce PEI'yi doğrulama seçeneğiyle sistemin yazılım güven kökü olarak hizmet eder.

PEI - EFI Öncesi Başlatma

UEFI önyüklemesinin ikinci aşaması, ana bellek başlatma ve bellenim kurtarma işlemleri gibi erken donanım başlatma görevlerini yerine getirmek için PEI modüllerini (PEIM'ler) yükleyen ve çalıştıran, bağımlılığa duyarlı bir dağıtıcıdan oluşur . Ayrıca, mevcut önyükleme modunun bulunmasından ve birçok ACPI S0ix/ACPI S3 işleminin yürütülmesinden sorumludur. ACPI S0ix/ACPI S3'ün devam ettirilmesi durumunda, birçok donanım kaydının uyku öncesi durumuna geri yüklenmesinden sorumludur. PEI ayrıca CPU önbelleğini RAM olarak kullanır.

DXE - Sürücü Yürütme Ortamı

Bu aşama, C modüllerinden ve bağımlılığa duyarlı bir göndericiden oluşur. Ana bellek artık kullanılabilir durumdayken, CPU, yonga seti, anakart ve çevre birimleri DXE ve BDS'de başlatılır.

BDS - Önyükleme Aygıtı Seçimi

BDS, DXE'nin bir parçasıdır. Bu aşamada, I/O aygıtları ve önyükleme aygıtları başlatılır, sistem yapılandırmasına göre PCI aygıtlarının UEFI sürücüleri veya Option ROM'ları çalıştırılır ve önyükleme seçenekleri işlenir.

TSL - Geçici Sistem Yükü

Bu, önyükleme aygıtı seçimi ile işletim sistemine teslim arasındaki aşamadır. Bu noktada UEFI kabuğuna girilebilir veya OS önyükleyici gibi bir UEFI uygulaması çalıştırılabilir.

RT - Çalışma Zamanı

UEFI, ExitBootServices() yürütüldükten sonra işletim sistemine (OS) devreder . UEFI uyumlu bir işletim sistemi, artık gerekli olmayan tüm kod ve verileri boşaltmak için bellenimi tetikleyen ve yalnızca çalışma zamanı hizmetleri kodunu/verilerini, örneğin SMM ve ACPI'yi bırakarak önyükleme hizmetlerinden çıkmaktan sorumludur . Tipik bir modern işletim sistemi, donanım aygıtlarını kontrol etmek için kendi programlarını ( çekirdek sürücüleri gibi) kullanmayı tercih edecektir .

Eski bir işletim sistemi kullanıldığında, CSM bu çağrıyı sistemin eski BIOS beklentileriyle uyumlu olmasını sağlayarak halledecektir.

Uygulama ve benimseme

Intel EFI'si

InsydeH2O, bir UEFI uygulaması

Intel'in EFI uygulaması , kod adı Tiano olan Intel Platform Innovation Framework'tür . Tiano, Intel'in XScale , Itanium , x86-32 ve x86-64 işlemcilerinde çalışır ve tescilli bir yazılımdır, ancak kodun bir kısmı BSD lisansı veya TianoCore olarak Eclipse Kamu Lisansı (EPL) altında yayınlanmıştır . TianoCore bir yük olarak kullanılır coreboot .

Phoenix Technologies'in UEFI uygulaması SecureCore Technology (SCT) olarak markalanmıştır. American Megatrends , Aptio olarak bilinen kendi UEFI ürün yazılımı uygulamasını sunarken, Insyde Software InsydeH2O'yu sunar.

Aralık 2018'de Microsoft , Surface hattı Project Mu'dan TianoCore EDK2 tabanlı UEFI uygulamasının açık kaynaklı bir sürümünü yayınladı .

Das U-Boot

UEFI API'nin bir uygulaması 2017'de Evrensel Önyükleme Yükleyicisine ( Das U-Boot ) dahil edildi. ARMv8 mimarisinde Linux dağıtımları , önyükleme için GNU GRUB ile birlikte U-Boot UEFI uygulamasını kullanır (örn. SUSE Linux ), aynı OpenBSD için geçerlidir. iSCSI'den önyükleme yapmak için iPXE , U-Boot tarafından yüklenen bir UEFI uygulaması olarak kullanılabilir.

EFI/UEFI kullanan platformlar

Intel'in 2000 yılında piyasaya sürülen ilk Itanium iş istasyonları ve sunucuları, EFI 1.02'yi uyguladı.

Hewlett-Packard'ın 2002'de piyasaya sürdüğü ilk Itanium 2 sistemleri EFI 1.10'u uyguladı; Windows , Linux , FreeBSD ve HP-UX'i önyükleyebildiler ; OpenVMS , Haziran 2003'te UEFI özelliğini ekledi.

Ocak 2006'da Apple Inc. , ilk Intel tabanlı Macintosh bilgisayarlarını piyasaya sürdü . Bu sistemler , önceki PowerPC tabanlı sistemlerinde kullanılan Open Firmware yerine EFI kullanıyordu . 5 Nisan 2006'da Apple , Mac OS X'in yeniden yüklenmesini gerektirmeden Windows XP veya Vista kurulumuna izin vermek için bir Windows sürücü diski ve tahribatsız bir bölümleme aracı üreten Boot Camp'i ilk kez piyasaya sürdü. EFI uygulamasına BIOS uyumluluğu. Sonraki Macintosh modelleri, daha yeni bellenimle birlikte gönderilir.

2005 yılında, bir milyondan fazla Intel sistemi, Intel'in UEFI uygulamasıyla birlikte sevk edildi. Intel'in UEFI uygulamasını kullanan yeni mobil, masaüstü ve sunucu ürünleri 2006'da sevk edilmeye başlandı. Örneğin, Intel 945 yonga seti serisini kullanan kartlar Intel'in UEFI ürün yazılımı uygulamasını kullanıyor.

2005 yılından bu yana, EFI, XScale çekirdeklerine dayalı gömülü sistemler gibi PC dışı mimarilerde de uygulanmaktadır .

EDK (EFI Developer Kit), EFI sabit yazılımı ve EFI uygulamalarının bir Windows uygulamasında çalışmasına izin veren bir NT32 hedefi içerir . Ancak EDK NT32 tarafından doğrudan donanım erişimine izin verilmez. Bu, EFI uygulamasının yalnızca bir alt kümesi ve sürücülerin EDK NT32 hedefinde yürütülebileceği anlamına gelir.

2008'de daha fazla x86-64 sistemi UEFI'yi benimsedi. Bu sistemlerin çoğu, Uyumluluk Destek Modülü (CSM) aracılığıyla yalnızca BIOS tabanlı işletim sistemlerinin başlatılmasına izin verirken (dolayısıyla kullanıcıya UEFI tabanlı olarak görünmemektedir), diğer sistemler UEFI tabanlı işletim sistemlerinin önyüklenmesine izin vermeye başlamıştır. Örneğin, IBM x3450 sunucusu, ClickBIOS'lu MSI anakartlar, HP EliteBook Dizüstü Bilgisayarlar.

2009'da IBM, System x makinelerini (x3550 M2, x3650 M2, iDataPlex dx360 M2) ve UEFI özelliğine sahip BladeCenter HS22'yi sevk etti . Dell, UEFI özellikli PowerEdge T610, R610, R710, M610 ve M710 sunucuları gönderdi. Bir UEFI teknik incelemesinde daha ticari olarak mevcut sistemlerden bahsedilmiştir.

2011 yılında, büyük satıcılar ( ASRock , Asus , Gigabyte ve MSI gibi ) , UEFI'li Intel 6 serisi LGA 1155 yonga seti ve AMD 9 Serisi AM3+ yonga setlerini kullanan birkaç tüketici odaklı anakart piyasaya sürdü .

Ekim 2012'de Windows 8'in piyasaya sürülmesiyle, Microsoft'un sertifika gereksinimleri artık bilgisayarların UEFI belirtimini uygulayan bellenim içermesini gerektiriyor. Ayrıca, bilgisayar Windows 8'in " Bağlı Bekleme " özelliğini destekliyorsa (bu, cihazların akıllı telefonlarla karşılaştırılabilir güç yönetimine sahip olmasını ve bekleme modundan neredeyse anında geri dönmesini sağlar), o zaman bellenimin Uyumluluk Destek Modülü içermesine izin verilmez ( CSM). Bu nedenle, Bağlı Beklemeyi destekleyen sistemler, Eski BIOS işletim sistemlerini önyükleyemez.

Ekim 2017'de Intel, UEFI Sınıf 3 lehine 2020 yılına kadar tüm ürünlerinden eski PC BIOS desteğini kaldıracağını duyurdu.

İşletim sistemleri

Bir (U)EFI'den önyüklenebilen bir işletim sistemine (U)EFI özellikli işletim sistemi denir ve (U)EFI belirtimi ile tanımlanır. Burada (U)EFI'den önyükleme terimi, herhangi bir depolama aygıtında depolanan bir (U)EFI işletim sistemi yükleyicisi kullanılarak sistemin doğrudan önyüklenmesi anlamına gelir. İşletim sistemi yükleyicisi için varsayılan konum <EFI_SYSTEM_PARTITION>/BOOT/BOOT<MACHINE_TYPE_SHORT_NAME>.EFImakine tipinin kısa adı etkin olabildiği yerlerde IA32, X64, IA64, ARMveya AA64. Bazı işletim sistemi satıcılarının kendi önyükleyicileri olabilir. Ayrıca varsayılan önyükleme konumunu da değiştirebilirler.

  • Linux çekirdeği kullanan, 2000'lerin başından beri önyükleme sırasında EFI kullanmak mümkün olmuştur elilo son zamanlarda EFI önyükleme yükleyicisi veya, EFI sürümlerini GRUB . Grub+Linux, UEFI'siz bir GUID bölüm tablosundan önyüklemeyi de destekler. Ubuntu dağıtımı , 12.10 sürümünden itibaren UEFI Güvenli Önyükleme için destek ekledi. Ayrıca, Linux çekirdeği, EFI önyükleyici özelliği ile kendi başına bir EFI önyükleyici olarak çalıştırma seçeneği ile derlenebilir.
  • HP-UX , 2002'den beri IA-64 sistemlerinde önyükleme mekanizması olarak (U)EFI kullanmıştır .
  • OpenVMS , Aralık 2003'teki ilk değerlendirme sürümünden bu yana IA-64'te ve Ocak 2005'ten bu yana üretim sürümleri için EFI'yi kullandı. OpenVMS'nin x86-64 bağlantı noktası, işletim sistemini başlatmak için UEFI'yi de kullanır.
  • Apple , Intel tabanlı Mac serisi için EFI kullanıyor . Mac OS X v10.4 Tiger ve Mac OS X v10.5 Leopard, daha yeni 64-bit CPU'larda bile 32-bit modunda EFI v1.10 uygular, ancak OS X v10.8 Mountain Lion ile tam destek geldi .
  • Itanium sürümleri Windows 2000 (İleri Sunucu Sınırlı Üretim ve Datacenter Server Limited Edition) 2002 MS içinde EFI 1.10 uygulanan , Windows Server 2003 için IA-64 , MS Windows XP 64-bit Edition ve Windows 2000 Advanced Server Limited Edition, hepsi Intel Itanium işlemci ailesi içindir, DIG64 spesifikasyonu aracılığıyla platformun bir gereksinimi olan EFI'yi uygular .
  • Microsoft, Windows Vista SP1 ve Windows Server 2008 ile x64 Windows işletim sistemleri için UEFI'yi tanıttı, ancak yalnızca UGA (Evrensel Grafik Adaptörü) 1.1 veya Eski BIOS INT 10h destekleniyor; Grafik Çıkış Protokolü (GOP) desteklenmez. Bu nedenle, Windows Vista SP1 , Windows Vista SP2 , Windows 7 , Windows Server 2008 ve Windows Server 2008 R2'nin 64 bit sürümlerini çalıştıran bilgisayarlar UEFI Sınıf 2 ile uyumludur. 32-bit UEFI, satıcıların herhangi bir ilgisi olmadığından orijinal olarak desteklenmiyordu. 64-bit bilgi işlemin ana akım durumu nedeniyle yerel 32-bit UEFI sabit yazılımının üretilmesinde . Windows 8 sonunda UEFI sistemleri için Grafik Çıkış Protokolü (GOP) desteği, daha hızlı başlatma, 32 bit UEFI desteği ve Güvenli Önyükleme desteği dahil olmak üzere daha fazla optimizasyon getirdi. Microsoft, Windows'u Windows 11 ile çalıştırmak için UEFI'ye ihtiyaç duymaya başladı .
  • 5 Mart 2013'te FreeBSD Vakfı , FreeBSD çekirdeğine ve önyükleyiciye UEFI desteği eklemek isteyen bir geliştiriciye hibe verdi . Değişiklikler başlangıçta FreeBSD kaynak kodunun ayrı bir dalında saklandı, ancak 4 Nisan 2014'te ana hat kaynağıyla birleştirildi (revizyon 264095); değişiklikler yükleyicideki desteği de içerir. AMD64 için UEFI önyükleme desteği ilk olarak FreeBSD 10.1'de ve arm64 için FreeBSD 11.0'da göründü.
  • Oracle Solaris 11.1 ve sonraki sürümleri, UEFI sabit yazılım sürümü 2.1 veya üzeri olan x86 sistemleri için UEFI önyüklemesini destekler. GRUB 2, x86'da önyükleyici olarak kullanılır.
  • OpenBSD 5.9, kendi özel yükleyicisini kullanan 64-bit x86 sistemleri için UEFI önyükleme desteğini tanıttı, OpenBSD 6.0, bu desteği ARMv7'yi içerecek şekilde genişletti.

UEFI'nin sanallaştırma ile kullanımı

  • HP Integrity Virtual Machines , HP Integrity Sunucularında UEFI önyüklemesi sağlar. Ayrıca konuk UEFI farkında işletim sistemleri için sanallaştırılmış bir UEFI ortamı sağlar.
  • Intel, SourceForge'da bir Açık Sanal Makine Ürün Yazılımı projesine ev sahipliği yapıyor.
  • Mac OS X için VMware Fusion 3 yazılımı, UEFI kullanarak Mac OS X Server sanal makinelerini önyükleyebilir.
  • Sürüm 11'den önceki VMware Workstation , UEFI'yi gayri resmi olarak destekler, ancak .vmx dosyası düzenlenerek manuel olarak etkinleştirilir. VMware Workstation sürüm 11 ve üzeri, fiziksel ana bilgisayar sisteminin UEFI tabanlı olup olmadığından bağımsız olarak UEFI'yi destekler. VMware Workstation 14 (ve dolayısıyla Fusion 10) , UEFI'nin Güvenli Önyükleme özelliği için destek ekler .
  • VSphere ESXi 5.0 hiper yönetici resmen UEFI'yi destekler. Sürüm 6.5, Güvenli Önyükleme için destek ekler.
  • VirtualBox , 3.1'den beri UEFI'yi uygulamıştır, ancak Unix/Linux işletim sistemleri ve bazı Windows sürümleriyle sınırlıdır (Windows Vista x64 ve Windows 7 x64 ile çalışmaz).
  • QEMU / KVM , TianoCore tarafından sağlanan Açık Sanal Makine Ürün Yazılımı (OVMF) ile kullanılabilir .
  • VMware vSphere'in bir parçası olan VMware ESXi sürüm 5 hipervizörü, bir sanal makine içindeki eski PC BIOS'una alternatif olarak sanallaştırılmış UEFI'yi destekler.
  • Microsoft Hyper-V sanal makinesinin ikinci nesli, sanallaştırılmış UEFI'yi destekler.
  • Google Cloud Platform Korumalı Sanal Makineler, Güvenli Önyüklemeyi etkinleştirmek için sanallaştırılmış UEFI'yi destekler.

Uygulama geliştirme

EDK2 Uygulama Geliştirme Kiti (EADK), UEFI uygulamalarında standart C kitaplığı işlevlerinin kullanılmasını mümkün kılar . EADK, Intel'in TianoCore UDK / EDK2 SourceForge projesinden ücretsiz olarak indirilebilir . Örnek olarak, Python yorumlayıcısının bir bağlantı noktası , EADK kullanılarak bir UEFI uygulaması olarak kullanıma sunulur. Geliştirme, UDK2015'ten beri GitHub'a taşındı.

EADK kullanılarak yazılmış minimalist bir " merhaba, dünya " C programı, her zamanki C karşılığına benzer :

#include <Uefi.h>
#include <Library/UefiLib.h>
#include <Library/ShellCEntryLib.h>

EFI_STATUS EFIAPI ShellAppMain(IN UINTN Argc, IN CHAR16 **Argv)
{
    Print(L"hello, world\n");
    return EFI_SUCCESS;
}

eleştiri

Çok sayıda dijital hak aktivisti UEFI'yi protesto etti. Ronald G. Minnich , bir eş yazarı coreboot ve Cory Doctorow , bir dijital haklar aktivisti, gerçekten bilgisayarı kontrol etmek kullanıcının yeteneğini kaldırmak için bir girişim olarak UEFI'yi eleştirdi. Çoğu donanım için biri sabit yazılım ve diğeri işletim sistemi için olmak üzere iki farklı sürücü gerektiren BIOS'un uzun süredir devam eden sorunlarını çözmez.

Açık kaynaklı proje TianoCore ayrıca UEFI arayüzleri sağlar. TianoCore yerine tarafından sağlanan yonga seti fonksiyonları başlatmak uzman sürücüleri yoksun coreboot TianoCore birçok yük seçeneklerden biri olduğu,. Coreboot'un geliştirilmesi, başlatma sürücülerini geliştirmek için gereken özellikleri sağlamak için yonga seti üreticilerinin işbirliğini gerektirir.

Güvenli Önyükleme

Özel Güvenli Önyükleme ortak anahtarlarına örnekler
MokManager, Shim önyükleyicisinin bir parçası

2011'de Microsoft, Windows 8 işletim sistemini çalıştırmak için sertifikalandırılmış bilgisayarların Microsoft'un ortak anahtarı kayıtlı ve Güvenli Önyükleme etkinleştirilmiş olarak gönderilmesi gerektiğini duyurdu . Duyuruyu takiben şirket, eleştirmenler ve özgür yazılım/açık kaynak savunucuları ( Özgür Yazılım Vakfı dahil ) tarafından UEFI'nin Güvenli Önyükleme işlevini Linux gibi alternatif işletim sistemlerinin kurulumunu engellemek veya tamamen önlemek için kullanmaya çalışmakla suçlandı . Microsoft, Güvenli Önyükleme gereksiniminin bir tür kilitleme işlevi görmesi amaçlandığını reddetti ve Windows 8 için sertifikalı x86 tabanlı sistemlerin Güvenli Önyükleme'nin özel moda girmesine veya devre dışı bırakılmasına izin vermesi gerektiğini, ancak sistemlerde izin vermemesi gerektiğini belirterek gereksinimlerine açıklık getirdi. ARM mimarisini kullanarak . Windows 10 , OEM'lerin Güvenli Önyüklemenin x86 sistemlerinin kullanıcıları tarafından yönetilip yönetilemeyeceğine karar vermesine olanak tanır .

Diğer geliştiriciler, genel olarak Linux sistemlerinde Güvenli Önyükleme desteğinin uygulanmasının yasal ve pratik sorunları hakkında endişelerini dile getirdiler. Eski Red Hat geliştiricisi Matthew Garrett , GNU Genel Kamu Lisansı sürüm 3'teki koşulların, bir dağıtım geliştiricisi özel anahtarı ifşa etmeden GNU GRand Unified Bootloader'ın kullanımını engelleyebileceğini belirtti (ancak, Free Software Foundation o zamandan beri konumunu netleştirdi ve şunu temin etti: anahtarları kullanılabilir hale getirme sorumluluğu donanım üreticisine aittir) ve ileri düzey kullanıcıların , Güvenli Önyükleme etkinleştirildiğinde kendi kendine imzalamadan çalışabilecek özel çekirdekler oluşturmasının da zor olacağını . Diğer geliştiriciler, başka bir anahtarla imzalanmış Linux yapılarının sağlanabileceğini öne sürdüler, ancak OEM'leri bilgisayarlarını Microsoft anahtarının yanında gerekli anahtarla birlikte göndermeye ikna etmenin zor olacağını kaydetti.

Birkaç büyük Linux dağıtımı, Güvenli Önyükleme için farklı uygulamalar geliştirmiştir. Garrett, kullanıcının Linux dağıtımları tarafından sağlanan anahtarlara bireysel olarak güvenmesine izin veren, önceden derlenmiş, imzalı bir önyükleyici olan, şim olarak bilinen minimal bir önyükleyici geliştirdi. Ubuntu 12.10 , Canonical'in yalnızca önyükleyiciyi doğrulayan ve imzasız çekirdeklerin yüklenmesine izin veren kendi anahtarıyla kullanım için önceden yapılandırılmış eski bir altlık sürümü kullanır ; geliştiriciler, yalnızca önyükleyiciyi imzalama uygulamasının daha uygun olduğuna inanıyorlardı, çünkü güvenilir bir çekirdek, Güvenli Önyükleme'nin koruma eklemek üzere tasarlandığı önyükleme öncesi durumu değil, yalnızca kullanıcı alanını korumada etkilidir . Bu aynı zamanda kullanıcıların sistemi yeniden yapılandırmaya gerek kalmadan kendi çekirdeklerini oluşturmalarına ve özel çekirdek modüllerini kullanmalarına olanak tanır . Canonical ayrıca, işletim sistemini çalıştıran sertifikalı OEM bilgisayarlarda önceden yüklenmiş Ubuntu kurulumlarını imzalamak için kendi özel anahtarını tutar ve ayrıca bir Güvenli Önyükleme gereksinimini de uygulamayı planlar - hem Canonical anahtarı hem de Microsoft anahtarı gerektirir (uyumluluk nedenleriyle ) kendi bellenimlerine dahil edilecek. Fedora ayrıca şim kullanır, ancak hem çekirdeğin hem de modüllerinin imzalanmasını gerektirir.

İşletim sistemi çekirdeğinin ve modüllerinin de imzalanması gerekip gerekmediği tartışılmıştır; UEFI spesifikasyonları bunu gerektirmezken, Microsoft, sözleşme gereksinimlerinin gerektirdiğini ve sistemin güvenliğini tehlikeye atmak için kullanılabilecek kodu imzalamak için kullanılan sertifikaları iptal etme hakkını saklı tuttuğunu iddia etmiştir. Windows'ta, Güvenli Önyükleme etkinse yalnızca WHQL çekirdek sürücüsüne izin verilir. Şubat 2013'te başka bir Red Hat geliştiricisi, Linux çekirdeğine, Microsoft tarafından imzalanmış PE dosyalarına gömülü bir ana X.509 anahtarı kullanarak Microsoft'un kimlik doğrulama imzalamasını ayrıştırmasına izin verecek bir yama göndermeye çalıştı . Ancak teklif, Microsoft'un Güvenli Önyükleme altyapısı üzerindeki kontrolünü desteklediği için Red Hat'a saldıran Linux yaratıcısı Linus Torvalds tarafından eleştirildi .

26 Mart 2013'te İspanyol özgür yazılım geliştirme grubu Hispalinux , Microsoft'un OEM sistemlerindeki Güvenli Önyükleme gereksinimlerinin "engelleyici" ve rekabete aykırı olduğunu iddia ederek Avrupa Komisyonu'na resmi bir şikayette bulundu .

At Black Hat konferansında Ağustos 2013'te, güvenlik araştırmacıları bir grup Güvenli Önyükleme yararlanmak için kullanılabilecek UEFI spesifik satıcı uygulamalarında patlatır bir dizi sundu.

Ağustos 2016'da, iki güvenlik araştırmacısının, Microsoft'un işletim sistemlerini imzalamada kullandığı "altın anahtar" güvenlik anahtarını bulduğu bildirildi. Teknik olarak, hiçbir anahtar açığa çıkmadı, ancak anahtar tarafından imzalanmış, sömürülebilir bir ikili dosyaydı. Bu, herhangi bir yazılımın gerçekten Microsoft tarafından imzalanmış gibi çalışmasına izin verir ve rootkit ve bootkit saldırıları olasılığını ortaya çıkarır . Bu ayrıca, herhangi bir yama (imzalı) sömürülebilir ikili tarafından değiştirilebildiğinden (düşürülebildiğinden) hatanın yamalanmasını imkansız hale getirir. Microsoft, güvenlik açığının yalnızca ARM mimarisinde ve Windows RT cihazlarında bulunduğunu belirten bir açıklamada yanıt verdi ve iki yama yayınladı; ancak yamalar, son kullanıcı donanım yazılımında düzeltilmesi gereken anahtar değişiklikleri gerektiren güvenlik açığını ortadan kaldırmaz (ve kaldıramaz).

RHEL (RHEL 7 ve üstü), CentOS (CentOS 7 ve üstü), Ubuntu , Fedora , Debian (Debian 10 ve üstü), OpenSUSE , SUSE Linux gibi birçok Linux dağıtımı artık UEFI Güvenli Önyüklemeyi destekliyor .

Bellenim sorunları

UEFI donanım yazılımının cihazlarda artan önemi, ilgili uygulamalarında suçlanan bir dizi teknik soruna da yol açmıştır.

2012'nin sonlarında Windows 8'in piyasaya sürülmesinin ardından, Güvenli Önyükleme özelliğine sahip belirli Lenovo bilgisayar modellerinin, başka herhangi bir şeye bakılmaksızın yalnızca " Windows Önyükleme Yöneticisi " veya " Red Hat Enterprise Linux " adlı yürütülebilir dosyaların yüklenmesine izin verecek şekilde sabit kodlanmış bellenime sahip olduğu keşfedildi. ayar. Güvenli Önyükleme özelliğine sahip birkaç Toshiba dizüstü bilgisayar modelinde, düzgün çalışması için gereken belirli sertifikalar eksik olan başka sorunlarla karşılaşıldı .

Ocak 2013'te, bazı Samsung dizüstü bilgisayarlarda UEFI uygulamasını çevreleyen bir hata yayınlandı ve bu , UEFI modunda bir Linux dağıtımı kurduktan sonra tuğlalanmalarına neden oldu . Samsung dizüstü bilgisayarlarda sistem özelliklerine erişmek için tasarlanmış bir çekirdek modülüyle olası çatışmalar başlangıçta suçlanırken (çekirdek bakımcılarının bir güvenlik önlemi olarak UEFI sistemlerinde modülü devre dışı bırakmalarını da isterken), Matthew Garrett hatanın aslında çok fazla UEFI depolayarak tetiklendiğini keşfetti. değişkenleri belleğe kaydeder ve hatanın belirli koşullar altında Windows altında da tetiklenebileceğini belirtir. Sonuç olarak, sorunlu çekirdek modülünün, çekirdek mesaj dökümlerinin bellenime yazılmasına ve dolayısıyla hatayı tetiklemesine neden olduğunu belirledi.

Ayrıca bakınız

Notlar

Referanslar

daha fazla okuma

Dış bağlantılar