2014-03-25 9 views
6

Ich kann build and manually execute eine EFI-Anwendung in einer UEFI-Umgebung. Aber ich möchte meine Anwendung automatisch beim Booten ausführen lassen.Ausführen einer EFI-Anwendung automatisch beim Booten

Gibt es eine Möglichkeit, den Bootloader zu sagen, dies zu tun oder muss ich meine Anwendung zu aktivieren, um einen Fahrer es automatisch ausgeführt haben? Gibt es vielleicht einen Eintrag in einer FDF-, DEC-, DSC- oder INF-Datei, die ich vermisse?

Antwort

6

Sie können eine startup.nsh-Skriptdatei zu Ihrem UEFI-Shell-Startlaufwerk hinzufügen, das Ihre Anwendung aufruft.

Der folgende Link sollte mit Skripten in der Schale als praktisches Nachschlagewerk dient für die Arbeit: UEFI Shells and Scripting. Sehen Sie sich Abschnitt 3 (EFI Shell Scripts) genauer an.

Wenn Sie jedoch tatsächlich Ihre eigenen Firmware erstellen, können Sie auch Ihre Standard-Boot-Option auf diesen binären suchen ein startfähiges EFI Bild zu schaffen und eingestellt. Dies ist am nützlichsten, wenn Sie die Binärdatei als Teil Ihres ROMs einschließen, aber es könnte ein wenig kompliziert sein, das Dateisystem so einzurichten, dass es als normale Bootoption betrachtet wird.

Auch, wenn Sie vollständigen Zugriff auf Ihre Firmware Quelle haben, können Sie auch einfach laden und die Binärdatei von BDS-Treiber aufrufen. Ich empfehle diese Route nicht, es sei denn, Sie möchten ein eigenständiges Gerät erstellen, das niemals ein anderes Image startet.

+0

Diese Antwort ist genial. Bitte Nicholas, kannst du mir mehr über die zweite und dritte Option erzählen? –

1

@NicholasEmbry Antwort enthalten fast alle, was notwendig ist, aber ich möchte einige Dinge klären und die jüngsten Verbesserungen in diesem Bereich hinzuzufügen.

UEFI Anwendung Bild Hinzufügen Option zum Booten tatsächlich Methode am besten bekannt, wenn Sie nicht Quellcode Ihre Firmware haben, was typische Situation. Sie benötigen kein spezielles bootfähiges Image zu erstellen, um es einfach UEFI Anwendung Bild sein sollte, was bedeutet, dass Ihre INF enthalten:

MODULE_TYPE   = UEFI_APPLICATION 

Diese Option ist nicht nur für die Option ROMs dies für alle UEFI lesbares Medium ist. Zum Beispiel können Sie FAT32 Partition auf Ihrem Speicher erstellen (egal, ob es USB, HDD, SSD, etc. nur von Firmware gelesen werden muss) und Anwendungsabbild auf dieser Partition platzieren. Starten Sie dann die UEFI-Shell und verwenden Sie den Befehl bcfg, um die Startreihenfolge zu beeinflussen.

bcfg Befehl kann von Ihnen BIOS-Anbieter blockiert werden. In dieser Situation folgen Sie bitte dem Verfahren von this post. Dies ist Booten rEFInd mit USB-Stick. rEFInd enthalten bcfg Werkzeug und geben Ihnen die Fähigkeit, es zu verwenden.

Wie zu verwenden bcfg?

Alles ist in der Hilfe help bcfg -b beschrieben. -b ist UEFI-Pager. Für diejenigen, die Verknüpfungen mögen, wird dieser Befehl alle Boot-Optionen in System an:

bcfg boot dump -v 

Sie können Ihre Anwendung mit dem Befehl hinzufügen:

bcfg boot add <boot_pos> <path_to_uefi_image> <boot_order_name> 

<boot_pos> - Position in Startreihenfolge. Beachten Sie, dass Sie Ihre Anwendung normalerweise vor dem Betriebssystem installieren möchten. Wenn vor Ihrem Betriebssystem keine freie Boot-Optionsnummer vorhanden ist, können Sie Ihre OS-Option natürlich um bcfg boot mv <old_pos> <new_pos> nach unten verschieben und dann Ihr Anwendungsimage dazwischen hinzufügen.

<path_to_uefi_image> - Pfad zu Ihrem UEFI-Bild. Dies ist UEFI-lesbarer Pfad, d. fs0:\foobar.efi

<boot_order_name> - das ist, wie Sie Anwendung im Boot-BIOS-Menü sichtbar ist, wird