2014-11-09 19 views
5

Sono interessato alla programmazione del firmware del PC e sto solo studiando le specifiche UEFI. Con mia sorpresa, sembra una specifica per un intero sistema operativo che è incorporato nel firmware. È anche possibile scrivere "applicazioni" UEFI, che vengono eseguite direttamente utilizzando i servizi di avvio UEFI, senza alcun altro OS presente.Che tipo di cose sono effettivamente utilizzate per le "applicazioni" UEFI?

Ho trovato post di blog che mostrano come creare un "Hello, world!" applicazione che può essere eseguita nell'ambiente di preavvio UEFI. Questo è ... interessante e bizzarro allo stesso tempo. Gestirò i miei programmi "Hello, world" su un normale sistema operativo, grazie.

Che tipo di casi d'uso sono effettivamente validi per le applicazioni UEFI? Schermate di configurazione di avvio fantasiose? Qualche firmware "reale" disponibile in commercio utilizza le applicazioni UEFI per implementare qualcosa di più che semplici boot loader e utility di configurazione di avvio?

+0

Se stai studiando così seriamente che un esempio di "Ciao mondo" è sotto di te, devi aver letto almeno la [pagina di Wikipedia] (https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface) sull'argomento , che risponde di più, se non di tutte le tue domande, e riassume un buon numero di esempi di vita reale, oltre a hardware esistente che utilizza già EFI. – GolezTrol

+0

@GolezTrol, ho letto la pagina di Wikipedia e, a meno che non mi sia sfuggito qualcosa, gli unici esempi di applicazioni UEFI che fornisce sono boot loader, la shell UEFI (che fa cose come ... avviare un boot loader), e "Hello , mondo ". Si noti che la domanda non sta chiedendo se l'hardware "reale" utilizza UEFI, ma si concentra in particolare sull'utilità delle applicazioni UEFI ** ** (che vengono eseguite durante la fase di pre-avvio). Ho modificato la domanda per rendere la mia intenzione leggermente più chiara. –

+1

[Intel] (https://software.intel.com/en-us/articles/uefi-application#What_is_UEFI_Application.3F) suggerisce che gli strumenti di diagnostica possono essere eseguiti come applicazioni UEFI, il che ha il vantaggio di non aver bisogno di un) OS per quello. Un altro esempio casuale è [Caricabatteria Microsoft] (https://dev.windowsphone.com/en-US/OEM/docs/Phone_Bring-Up/Architecture_of_the_UEFI_battery_charging_application) che verifica che un telefono abbia abbastanza energia prima di continuare l'avvio. – GolezTrol

risposta

5

Tutto ciò che non è PEI/DXE core/SMM o un driver è un software, in modo che qualsiasi PC "reale" loro hanno , perché l'installazione del BIOS è in realtà un'applicazione UEFI. Alcuni fornitori includono varie altre app come aggiornamenti firmware, utilità di diagnostica e risoluzione dei problemi, ecc. UEFI 2.4 rende possibile aggiungere la propria applicazione con una coppia variabile BootXXXX/KeyXXXX piena e quindi eseguirla premendo una combinazione di tasti durante il POST.

La maggior parte delle applicazioni console scritte in C può essere compilata come applicazione UEFI utilizzando StdLib package dell'attuale EFI Development Kit e quindi eseguita nella shell UEFI.

Principali esempi di applicazioni utili UEFI (oltre bootloader, guscio e kernel di Linux, ovviamente) sono Intel ME System Tools, Read Universal, Python 2.7 e molti altri.

Eventualmente, quando l'avvio legacy non sarà più disponibile, tutte le utility DOS attualmente utili devono essere rese UEFI o estinte.

2

Windows 7 - 8 ha un programma di installazione UEFI. Non sono pienamente consapevole dei dettagli, ma sono abbastanza sicuro che questo nuovo ambiente dia maggiore flessibilità agli sviluppatori rispetto all'ambiente di boot tradizionale su DVD.

Alcune schede madri dispongono di funzionalità "istantanee" che consentono di accedere a uno schermo del desktop in pochi secondi. Questo di solito è un sapore spoglio di alcuni linux che consente di accedere a un browser Web e riprodurre musica/video. ASUS ha tali schede.

3

Bene, ci sono i caricatori del sistema operativo, sia quelli più pesanti (Windows, GRUB, BSD Loader) che quelli "presenti un menu" (RICEVERE, Gummiboot). Shim, che abilita UEFI Secure Boot per piattaforme Linux, è costituito da un'applicazione e dall'installazione di un protocollo per l'utilizzo da parte di altre applicazioni.

Quindi avete cose come il kernel di Linux, che quando compilato con CONFIG_EFI_STUB diventa un'applicazione UEFI valida, con la consapevolezza di avviarsi.

E gli aggiornamenti del firmware possono anche essere spediti come applicazioni UEFI.

La shell UEFI stessa è un'applicazione.

Poi ci sono cose come le utility di test di produzione in fabbrica, strumenti di diagnosi di sviluppo, ...

5

Qui è un esempio di un'applicazione pre-avvio UEFI in piena regola;

Ci sono SED unità SSD/HDD.Non appena SSD/HDD perde il suo potere entra nello stato bloccato (crittografia basata su hardware) Non è possibile accedere ai dati dell'unità e tutte le partizioni sull'unità non sono più nemmeno visibili. È disponibile solo la piccola partizione di sola lettura(ShadowMBR). Il firmware UEFI avvia un'applicazione UEFI da quella sola partizione disponibile (l'app UEFI viene scritta su quella partizione durante il processo di inizializzazione e quando viene acquisita la proprietà di un SED). Autentica l'utente in modo sicuro e se le credenziali sono valide, sblocca l'unità. Quando l'unità è sbloccata Shadow MBR scompare e tutte le partizioni sull'unità diventano disponibili. Quindi la catena di applicazioni avvia il sistema operativo installato.

Quindi, se non si dispone di credenziali non è possibile nemmeno avviare il sistema operativo e non è possibile accedere ai dati sul disco con qualsiasi mezzo.

8

Nonostante molte valide risposte qui, perché ho scritto io stesso un paio di applicazioni UEFI, cercherò di aggiungere i miei 2 centesimi. In primo luogo, che cosa è l'applicazione UEFI per fare solo terra quello che stiamo parlando:

UEFI Specificatin v2.5:

sezione 2.1.1

Le principali differenze tra tipi di immagine sono il tipo di memoria che il firmware caricherà l'immagine e l'azione eseguita quando il punto di ingresso dell'immagine termina o ritorna. Un'immagine dell'applicazione viene sempre scaricata quando il controllo viene restituito dal punto di ingresso dell'immagine.

sezione 2.1.2

quando l'applicazione ritorna dalla suo punto di ingresso, o quando si chiama il servizio di avvio EFI_BOOT_SERVICES.Exit(), l'applicazione viene scaricato dalla memoria e il controllo viene restituito al componente UEFI che ha caricato l'applicazione.

gruppi di applicazioni che hanno senso in UEFI: - (. Cioè per i controller di memoria)

  • strumenti di configurazione interfaccia di configurazione per ROM delle opzioni, dalla gestione di banda (. Cioè strumenti di configurazione AMT) , strumenti di Ottimizzazione delle prestazioni del produttore
  • strumenti di provisioning - utilizzati dagli amministratori per precaricare impostazioni del BIOS specifica, impostando manualmente tutte le opzioni di configurazione del BIOS sarebbe inefficiente
  • Strumenti di diagnostica - principalmente per test che non possono essere eseguiti nel sistema operativo (test DRAM, scansione di archiviazione completa, test di archiviazione R/W, ecc.). In alcuni distretti sono richiesti strumenti di diagnostica specifici in UEFI BIOS, quindi questi possono essere venduti al governo.
  • Applicazioni sicurezza - HDD applicazioni di crittografia/decrittografia, scanner antivirus e ladro di anti
  • BIOS capacità di valorizzazione - Power Over estensioni Ethernet, scoperta DRAM, patching e la modifica delle tabelle di sistema (SMBIOS, ACPI)
  • strumenti di visualizzazione - per la visualizzazione di animazioni complesse durante l'esecuzione, lo splash screen che visualizza
  • Bootloader - questo è speciale tipo di applicazione, che può chiamare EFI_BOOT_SERVICES.ExitBootServices() caus terminazione di tutta la gestione della memoria e passaggio del controllo al sistema operativo.

Si noti che la funzione molto importante dell'applicazione UEFI è che può essere aggiunta all'ordine di avvio ed eseguita ogni volta di avvio. Inoltre, l'applicazione UEFI non deve essere fornita con l'immagine del BIOS, può essere archiviata nella memoria del dispositivo collegato, che è comune per gli strumenti di configurazione della Option ROM.