snape90
Goto Top

Woher bezieht das UEFI den Namen der Systeme?

Hallo,

ich nutze ein Xubuntu und ein Kubuntu auf 2 verschiedenen SSDs. Alle Partitionen sind GPT-Partitionen und jedes OS hat seine eigenen Boot-Partition. Beide tauschen aber im UEFI-Menü als 'ubuntu' auf und ich erkenne nur anhand der Festplatten-Nr. welches welches ist. Woher bezieht das UEFI die Informationen über die installierten OS? Muss ja irgendwo stehen. Grub bezieht die Namen der anderen Linux-Systeme die parallel noch installiert z. B. aus deren "/etc/lsb-release". Ändert man die Einträge hier, kann man den Grub-Eintrag manipulieren (das gilt für die anderen Systeme, nicht für das zur Grub-Installation gehörende). Ist das bei UEFI auch so? Oder bei jedem UEFI anders?

Content-Key: 3781958948

Url: https://administrator.de/contentid/3781958948

Printed on: May 8, 2024 at 06:05 o'clock

Member: TK1987
Solution TK1987 Aug 29, 2022 updated at 14:22:29 (UTC)
Goto Top
Moin,

Woher bezieht das UEFI die Informationen über die installierten OS?
die wird beim Installieren von Grub aus der /etc/default/grub geholt und in den NVRAM geschrieben, genauer gesagt aus der Zeile:
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

AFAIK ist efibootmgr nicht in der Lage dazu, einen Eintrag direkt umzubenennen, daher:

Option 1:
Booteintrag direkt übers UEFI editieren

Option 2:
Booteintrag löschen und mit neuem Namen erneut erstellen:
# Booteinträge anzeigen lassen:
sudo efibootmgr -v

# Booteintrag löschen (hier z.B. Boot0002*):
sudo efibootmgr -b 2 -B

# Beispiel für neuen Eintrag:
sudo efibootmgr --create --label "xubuntu" --disk /dev/sda --part 1 --loader "\EFI\ubuntu\shimx64.efi"  

Option 3:
Zeile in der /etc/default/grub abändern, z.B. auf
GRUB_DISTRIBUTOR="xubuntu"
anschließend
sudo grub-install
so wird ein neuer Eintrag namens "xubuntu" erstellt. Der alte "ubuntu"-eintrag kann dann wahlweise übers UEFI oder mittels efibootmgr (siehe Option 2) gelöscht werden.

Bei Option 3 wird auf der Bootpartition für den Eintrag zusätzlich ein neuer Ordner neben dem alten ubuntu-ordner angelegt. Der Vorteil ist, dass so auch 2 Booteinträge für unterschiedliche *buntu's auf einer EFI-Partition gelagert werden können.
Da du ja mehrere Bootpartitionen hast, kann der alte ubuntu-ordner dann natürlich weg.

Gruß Thomas
Member: Snape90
Snape90 Aug 30, 2022 at 07:16:04 (UTC)
Goto Top
Der NVRAM ist ein Speicher auf dem Mainboard? Dort wird sozusagen jede Änderung an den Boot-Einstellungen hinterlegt (und evtl. anderes). Da du schreibst, der Inhalt wird beim "Installieren von Grub" geschrieben heißt das, der NVRAM wird vom OS selbst gefüllt und das EFI holt dann die Informationen zur Anzeige der Boot-Optionen aus dem NVRAM?

Liege ich mit folgendem richtig:
EFI holt die Informationen sozusagen 'live' bei jedem EFI-Start? Bei Grub ist das anders. Wenn ich ein OS hinzufüge oder lösche ist das Grub-Menü weiterhin wie vor der Installation/Deinstallation. Erst ein 'update-grub' ändert das Menü. Das passiert bei EFI nicht?

Ich hab gerade das EFI gestartet, dort wurde neben den beiden Ubuntus auch ein MXLinux angezeigt, das aber schon vor Monaten gelöscht wurde. Beide Grubs der beiden Ubuntus zeigen das MXLinux nicht mehr an. Evtl. liegt noch ein Ordner dazu in der Boot-Partition des einen Ubuntu? Bei einem zweiten EFI-Start war das MXLinux plötzlich weg. An der Boot-Partition wurden keine Änderungen vorgenommen. Das widerspricht etwas meine Vermutung oben, dass EFI die Informationen 'live' holt. Kann es sein, dass die Änderungen einfach erst beim nächsten EFI-Start angezeigt werden?
_______________________

zu Option 1: Wusste nicht, dass sowas geht. Ist das abhängig vom EFI? Ich finde dazu nichts.

zu Option 2: Hier schreibe ich manuell alles in den NVRAM? Mache also das, was Grub automatisch bei der Installation macht?
_______________________

Angenommen ich habe folgende Situation:
-> SSD 1: Xubuntu + Windows
-> SSD 2: Kubuntu
Jede SSD hat eine eigene Boot-Partition und der dortige Grub kann jede System starten. Grub müsste also 2x Daten in den NVRAM geschrieben haben. Doppelt käme aber kein Eintrag im EFI vor, oder? Das Kubuntu findet sich in boot1 und in boot2, einmal als optional auswählbares System (boot1) und einmal als Standard-System (boot2). Gleichen Grub und/oder das EFI hier z. B. die UUID ab um doppelte Einträge zu verhindern? Eigentlich müsste das Kubuntu doppelt im EFI stehen.
Member: TK1987
Solution TK1987 Aug 30, 2022 at 08:59:09 (UTC)
Goto Top
Zitat von @Snape90:
Der NVRAM ist ein Speicher auf dem Mainboard? Dort wird sozusagen jede Änderung an den Boot-Einstellungen hinterlegt (und evtl. anderes).
Genau, ein Speicher auf dem Mainboard, der seine Daten auch ohne Stromversorgung behält (anders als z.B. der Arbeitsspeicher).

Da du schreibst, der Inhalt wird beim "Installieren von Grub" geschrieben heißt das, der NVRAM wird vom OS selbst gefüllt und das EFI holt dann die Informationen zur Anzeige der Boot-Optionen aus dem NVRAM?
So ist es. Die jeweiligen Betriebssysteme schreiben beim Installieren des Bootloaders den NVRAM-Eintrag, welcher besagt, wo der Bootloader zu finden ist.

EFI holt die Informationen sozusagen 'live' bei jedem EFI-Start?
Die Daten werden beim Start aus dem NVRAM gelesen.
Je nach Hersteller versuchen Systeme, fehlende Booteinträge, zu denen jedoch ein EFI-Bootfile auf einer EFI-Partition existiert, selbst zu ergänzen.
Das kann sinnvoll sein (z.B. wenn eine bereits installierte Platte in einen neuen Rechner eingebaut wird) - kann aber auch lästig sein, weil dann ggfs. immer wieder doppelte Einträge auftauchen.

Bei Grub ist das anders. Wenn ich ein OS hinzufüge oder lösche ist das Grub-Menü weiterhin wie vor der Installation/Deinstallation. Erst ein 'update-grub' ändert das Menü.
Grub lädt sein Menü aus der /boot/grub/grub.cfg, welche mit update-grub generiert wird.
BTW: update-grub ist eigentlich auch nur ein Alias für
grub-mkconfig -o /boot/grub/grub.cfg

Ich hab gerade das EFI gestartet, dort wurde neben den beiden Ubuntus auch ein MXLinux angezeigt, das aber schon vor Monaten gelöscht wurde. Beide Grubs der beiden Ubuntus zeigen das MXLinux nicht mehr an. Evtl. liegt noch ein Ordner dazu in der Boot-Partition des einen Ubuntu?
Entweder es existiert noch ein Ordner mit EFI-Bootfile, oder es existiert nur noch der Eintrag im NVRAM. Wie du diesen mittels efibootmgr löschen kannst, habe ich ja oben beschrieben.

zu Option 1: Wusste nicht, dass sowas geht. Ist das abhängig vom EFI? Ich finde dazu nichts.
Ja, leider von Hersteller zu Hersteller unterschiedlich, ob das geht oder nicht. Falls es geht, sollte das im selben Abschnitt zu finden sein, in dem man auch die Bootreihenfolge festgelegt.

zu Option 2: Hier schreibe ich manuell alles in den NVRAM? Mache also das, was Grub automatisch bei der Installation macht?
Genau, der Befehl efibootmgr ist dazu da, die Daten im NVRAM manuell zu lesen/bearbeiten/erstellen.

Jede SSD hat eine eigene Boot-Partition
das ist optional - auf einer der beiden Platten eine EFI-Partition für alle Systeme zu haben reicht vollkommen.

und der dortige Grub kann jede System starten. Grub müsste also 2x Daten in den NVRAM geschrieben haben.
Wenn man für beide Systeme jeweils grub installiert hat, hat man auch 2 Einträge im NVRAM.
Aber auch das ist optional - ein grub für beide Linux-Systeme reicht auch hier volkommen.

Doppelt käme aber kein Eintrag im EFI vor, oder?
Nein. Jedes System erstellt nur seinen eigenen Eintrag.

Gleichen Grub und/oder das EFI hier z. B. die UUID ab um doppelte Einträge zu verhindern?
Zu Grub:
Das OS, welches Grub verwaltet, erstellt zuerst einen eigenen Eintrag für sich.
Anschließend läuft ein Skript (/etc/grub.d/30_os-prober), welches nach Fremdsystemen sucht und diese im Bootmenü ergänzt.
Bei fremden Linux-Systemen wird die jeweilige UUID der OS-Partition in die grub.cfg eingetragen. Für Windows hingegen wird der Pfad zu dessen EFI-Bootfile eingetragen, welches dann als Chainloader geladen.

Zum UEFI:
Im NVRAM steht immer nur die PARTUUID der EFI-Partition, sowie der Pfad zum EFI-Bootfile. Auf welcher Partition sich das zu bootende OS befindet, steht dann in diesem Bootfile.
Für ein besseres verständnis einfach mal die Ausgabe von
efibootmgr -v
ansehen.

Gruß Thomas