Skript vor dem Start des Betriebssystems

393
Luciano

Ich muss ein Skript ausführen, bevor das Betriebssystem startet. Das Skript liest eine Textdatei (im Dateisystem FAT32). Wenn das Ergebnis "A" ist, starten Sie OS1. Andernfalls, wenn das Ergebnis "B" ist, wird OS2 (ein anderes Betriebssystem) gestartet. Ich dachte an Grub, aber ich weiß nicht, wie man das machen könnte. Alternativ könnte ich EFI Shell verwenden, aber in der Firmware meines Computers befindet sich keine EFI Shell. Wie kann ich? Danke euch allen.

1
Willkommen bei Super User! Eine interessante Frage, aber welches Problem wollen Sie lösen, wenn Sie nichts dagegen haben? Wenn es etwas "Neustart in X / Y bei Benutzereingriff / programmgesteuert" ist, gibt es Möglichkeiten, dies abhängig von Ihrem Setup zu tun :) bertieb vor 5 Jahren 2
Wenn das Betriebssystem ausgeführt wird, schreibt es eine Textdatei (über ein Skript) auf eine FAT32-Partition. Dies hängt davon ab, ob ein Ereignis aufgetreten ist oder nicht. Angenommen, es schreibt "A" oder "B" (ein Flag). Dies kann von allen auf der Maschine installierten Betriebssystemen durchgeführt werden. Wenn "A" geschrieben wird, muss beim nächsten Neustart (oder beim erneuten Starten) OS1 gestartet werden, wenn stattdessen "B" geschrieben wird, muss ein anderes Betriebssystem gestartet werden, z. B. OS2 (nicht OS2 Warp :-)). Das ist alles. Das Management muss unbedingt vor dem Booten sein Luciano vor 5 Jahren 0
@Luciano UEFI bietet diese Funktion standardmäßig an. Unter Linux müssen Sie `efibootmgr -n ausführen`(Zahlen drucken, indem Sie` efibootmgr` ausführen). Bei Windows muss man es selbst herausfinden, ich habe es noch nicht benutzt. gronostaj vor 5 Jahren 1

1 Antwort auf die Frage

1
gronostaj

Sie können EFI Shell aus dem TianoCore-Projekt herunterladen . Es ist eine Open-Source-Version, die auf der Intel-Implementierung basiert.

Laden Sie diese Binärdatei herunter, legen Sie sie auf der EFI-Systempartition ab und fügen Sie einen UEFI-Starteintrag hinzu. Am einfachsten geht das mit Linux: (als root)

cd /efi/boot wget https://github.com/tianocore/edk2/raw/master/ShellBinPkg/UefiShell/X64/Shell.efi efibootmgr -c -p 1 -l shell.efi -L "EFI Shell" 

Legen Sie es dann als Standardstartoption über Ihre UEFI-Konfigurationsschnittstelle fest oder verwenden Sie efibootmgr:

efibootmgr -o $(efibootmgr | grep 'EFI Shell' | sed -r -e 's/^Boot0+//' -e 's/\*.*//') 
Vielen Dank, jetzt versuche ich es. Wie heißt das Skript für den Autostart? Luciano vor 5 Jahren 0
@ Luciano http://h17007.www1.hpe.com/docs/iss/proliant_uefi/UEFI_Edgeline_103117/s_enable_shell_auto.html gronostaj vor 5 Jahren 0
@ Luciano .. Bei UEFI-Shells lautet der Name `startup.nsh` fpmurphy1 vor 5 Jahren 0