Forum: PC Hard- und Software UEFI: Per Script den Filesystem Boot Pfad setzen


von Andre008 (Gast)


Lesenswert?

Hallo,

ich versuche eine OS-Installation einer 64-bit Intel Architecture von 
einem USB-Stick zu automatisieren.

Diese soll per UEFI standfinden.
Auf dem USB-Stick ist bereits die richtige Ordnungsstruktur angelegt und 
der First-Stage Loader kopiert:

/EFI/BOOT/BOOTX64.EFI

Wenn den Rechner startet kann man zur UEFI-Shell wechseln.

Was ich nun probieren möchte, ist die User Interaktion zu Automatisieren

Manuell würde man jetzt auf den USB-Stick wechseln und den Pfad zum 
First- Stage Loader setzen.
1
Shell> fs0:
2
fs0:\> EFI\BOOT\BOOTX64.EFI

Diesen Schritt kann man ins das File "startup.nsh" verlagern.
Dieses File wird automatisch startet, wenn es vom Bootloader gefunden 
wird.
Das File liegt:
EFI\BOOT\startup.nsh

Jetzt kommt der Punkt an dem ich nicht weiter kommen.

Als nächstes kommt der UEFI boot manager:
Der UEFI boot manager hat in dieser Implementierung vier Optionen:

1) Return to loader
2) Reset system
3) Create boot path
4) Delete boot path

Die manuelle Vorgehensweise wäre:

      3 wählen um den boot path zu setzen

Es erscheint eine Liste der File Systeme:

[0]: [Acpi(PNP0A03,0)/Pci(1D|0)/Usb(5)/HD(Part1,Sig00000000)]#

      0 wählen um die Boot Variable zu setzen

Danach erscheint wieder das Menü des UEFI boot managers.

1) Return to loader
2) Reset system
3) Create boot path
4) Delete boot path

      2 zum reseten des systems

Zum Schluss muss nur noch im BIOS die Boot Reihenfolge festgelegt 
werden. Dann funktioniert das Ganze.

Mein Frage ist nun: Wie bekommt man die User-Eingabe für den UEFI boot 
manager von "3 ,0, 2" automatisch hin?

Danke im Voraus
Andre

: Verschoben durch User
von X2 (Gast)


Lesenswert?

Ich habe zwar nicht ganz verstanden was du vorhast, aber ein paar Tips:

Zu startup.nsh:

nicht der Bootloader führt die startup.nsh aus, sondern die Shell. 
Meiner Erfahrung nach muss diese Datei aber im root liegen. Also in 
deinem Fall direkt unter fs0:\startup.nsh.

Aber, warum stellst du nicht das erste Bootdevice auf den Stick, dann 
müsste (falls die UEFI Version nicht Uralt ist) automatisch der 
Bootloader auf dem Stick ausgeführt werden (der Pfad unter dem er liegt 
ist ja richtig).

Ich kann in deiner Beschreibung jedoch leider nicht erkennen wann du vom 
im Bios enthaltenen Bootmenü und wann vom in bootx64.efi enthaltenen 
Bootloader sprichst...

von Andre008 (Gast)


Lesenswert?

Danke für die schnelle Antwort.

Ausgangspunkt ist eine leere unformatierte Festplatte
Was ich vorhabe ist, vom USB stick eine Festplatte zu bespielen.
Das heisst alles das, was man manuelle machen müsste, um von der 
Festplatte booten zu können, sollte in ein Skript. (Im Idealfall :) )


Das starten des startup.nsh klappt soweit.

Andre008 schrieb:
> Es erscheint eine Liste der File Systeme:
>
> [0]: [Acpi(PNP0A03,0)/Pci(1D|0)/Usb(5)/HD(Part1,Sig00000000)]#
>
>       0 wählen um die Boot Variable zu setzen


An dieser Stelle steht dann der Eintrag der Festplatte, das war falsch 
von mir beschrieben.

Mit geht es hauptsächlich darum wie man dem UEFI boot 
managers(efibootmgr) Parameter übergeben kann.

von X2 (Gast)


Lesenswert?

Andre008 schrieb:
> Mit geht es hauptsächlich darum wie man dem UEFI boot
> managers(efibootmgr) Parameter übergeben kann.

Du meinst damit das Linux Programm efibootmgr?

http://linux.die.net/man/8/efibootmgr

Ansonsten kann man in der UEFI-Shell mit setvar eigene Variablen 
anlegen. Unter folgendem Link: https://wiki.mageia.org/en/About_EFI_UEFI
kannst du im Kapitel "The NVRAM array" sehen wie die Bootvariablen 
aussehen und was darin enthalten ist. Du brauchst jedoch mindestens eine 
FAT Partition (ESP = EFI System Partition) auf welcher der Bootloader 
liegt.

Aber ehrlich gesagt verstehe ichs immer noch nicht, bootet bootx64.efi 
ein Linux in dem du dann efibootmgr benutzt?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.