ubuntuusers.de

Fragen zu UEFI/GPT

Status: Ungelöst | Ubuntu-Version: Lubuntu 14.04 (Trusty Tahr)
Antworten |

user32847

(Themenstarter)

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

Jetzt muss ich den Thread doch nochmal rausgraben, da mich syscon-hh in den oberen Posts darauf hingewiesen hat, dass man das Überschreiben der EFI-Ordner beachten sollte, wenn man z. B. Ubuntu 2x installiert.

Habe deshalb auf meinem Rechner mit dieser Anleitung versucht, ein Bootverzeichnis für Lubuntu 14.04 zu erstellen. Leider hat das nicht geklappt - beim Booten erschien dann die GRUB2-Shell. Bin folgendermaßen vorgegangen:

  1. Ordner ubuntu in der EFI-Partition kopiert und umbenannt in lubuntu_14_04

  2. Die Datei /etc/default/grub geändert. Und zwar GRUB_DISTRIBUTOR auf lubuntu_14_04 gesetzt

  3. Dann den Befehl sudo grub-install eingetippt

  4. Neu gestartet und UEFI-Settings aufgerufen

  5. In den UEFI-Settings fand ich nun auch lubuntu_14_04 zum Booten

  6. lubuntu_14_04 gebootet → Anstatt, dass Lubuntu hochfährt, erscheint nur die GRUB-Shell

Habe ich irgendwas vergessen oder falsch gemacht? Funktioniert das bei euch?

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Wohnort: Berlin

Du hattest aber vorher Lubuntu installiert? Zeige mal bitte die Ausgabe von

sudo parted -l
efibootmgr -v
cat /boot/grub/grub.cfg
ls /boot/efi/ubuntu
ls /boot/efi/lubuntu_14_04

user32847

(Themenstarter)

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

So, bin jetzt ein Stückchen weitergekommen. Aber noch nicht ganz fertig.

  1. Habe jetzt die Festplatte nochmal komplett leergemacht und von vorne begonnen.

  2. Lubuntu 14.04 erfolgreich installiert (UEFI-Modus).

  3. Ubuntu Server 14.04 erfolgreich installiert (UEFI-Modus).

  4. Ubuntu Server 14.04 gebootet und in der Datei /etc/default/grub den Wert von GRUB_DISTRIBUTOR auf ubuntu_server gesetzt.

  5. Den Befehl sudo grub-install erfolgreich ausgeführt.

Nun ein paar Infos:

sudo parted -l:

Festplatte  /dev/sda:  250GB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: gpt

Nummer  Anfang  Ende    Größe   Dateisystem     Name                  Flags
 1      1049kB  368MB   367MB   fat32           EFI System Partition  boot
 2      368MB   31,8GB  31,5GB  ext4 # Lubuntu 14.04
 3      31,8GB  52,8GB  21,0GB  ext4 # Ubuntu Server 14.04
 4      52,8GB  57,5GB  4719MB  linux-swap(v1)

sudo efibootmgr:

BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0001,0008,0007,0006
Boot0000* ubuntu
Boot0001* ubuntu_server
Boot0006* CD/DVD-Laufwerk 
Boot0007* Festplatte 
Boot0008* ubuntu

sudo efibootmgr --verbose:

BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0001,0008,0007,0006
Boot0000* ubuntu	HD(1,800,af000,8a335fbb-f21c-47eb-8661-ce8415864523)File(\EFI\ubuntu\shimx64.efi)
Boot0001* ubuntu_server	HD(1,800,af000,8a335fbb-f21c-47eb-8661-ce8415864523)File(\EFI\ubuntu_server\shimx64.efi)
Boot0006* CD/DVD-Laufwerk 	BIOS(3,0,00)AMGOAMNO........m.H.L.-.D.T.-.S.T. .D.V.D.R.A.M. .G.H.2.4.N.S.B.0....................A.........................>..Gd-.;.A..MQ..L.C.K.E.8.L.5.1.A.4.1. .3. . . . . . . . ......AMBO
Boot0007* Festplatte 	BIOS(2,0,00)AMGOAMNO........m.W.D.C. .W.D.2.5.0.0.A.V.J.S.-.6.3.N.9.A.0....................A.........................>..Gd-.;.A..MQ..L. . . . .W. .-.D.M.W.V.A.E.2.2.P.1.9.9.4......AMBO
Boot0008* ubuntu	HD(1,800,af000,8a335fbb-f21c-47eb-8661-ce8415864523)File(EFI\Ubuntu\grubx64.efi)

/boot/efi/EFI$ ls:

ubuntu  ubuntu_server

So, nun meine Frage hierzu:

  • Ist es normal, dass bei der BootOrder die Reihenfolge nicht fortlaufend ist (also 0001, 0002, 0003, ...)?

  • Was ist der Unterschied zwischen BootOrder 0000 und BootOrder 0008?

  • Welches Betriebssystem ist jetzt eigentlich mein primäres und sekundäres (siehe hier)?

  • Wenn ich in den UEFI-Settings in der Bootreihenfolge ubuntu als Nummer 1 eingestellt habe, kommt das gleiche GRUB-Menü, wie wenn ich ubuntu_server als Nummer 1 eingestellt habe. Das sieht (von der Reihenfolge) so aus:

    Ubuntu (entspricht Ubuntu Server)
    ...
    Ubuntu 14.04 (entspricht Lubuntu 14.04) 

    Das verstehe ich nicht ganz, denn eigl. wäre es doch logisch, dass (wenn ich ubuntu in den Boot-Settings auf Nr. 1 habe) auch Lubuntu 14.04 im GRUB-Menü ganz oben steht. Wie läuft das denn im Hintergrund ab (siehe auch nächste Frage)?

  • Folgendes steht im Wiki. Ist es auch möglich, dass sekundäre Betriebssystem auch über das sekundäre Betriebssystem zu starten? Oder wie ist hier der Hintergrund?

Nachdem ein sekundäres Betriebssystem über das primäre Betriebssystem gestartet werden kann, sollte man den Eintrag im NVRAM für das sekundäre Betriebssystem wieder löschen!

Danke nochmal für eure Hilfe! 👍 Teilweise etwas kleinliche Fragen, aber ich würde das gerne auch richtig verstehen. 😉

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Wohnort: Berlin

user32847 schrieb:

So, nun meine Frage hierzu:

  • Ist es normal, dass bei der BootOrder die Reihenfolge nicht fortlaufend ist (also 0001, 0002, 0003, ...)?

Ja. Du kannst die Reihenfolge beliebig ändern. Es ist, als ob du früher erst Floppy, dann CD und dann HDD eingestellt hättest, dann wird erst die Diskette untersucht, dann das CD-Laufwerk, und wenn in beiden kein Startmedium gefunden wird, startet die HDD. Die Einträge im NV-Ram sind durch ihre Postition gekennzeichnet, aber man kann die Reihenfolge nach Wunsch sortieren. Wenn Grub bzw. der efibootmgr einen neuen Eintrag erstellen, dann wird dieser automatisch auf Position 1 in der Bootreihenfolge gesetzt, gleichgültig, um welchen EIntrag es sich handelt.

  • Was ist der Unterschied zwischen BootOrder 0000 und BootOrder 0008?

Zunächst ist der Eintrag

Boot0008* ubuntu	HD(1,800,af000,8a335fbb-f21c-47eb-8661-ce8415864523)File(EFI\Ubuntu\grubx64.efi)

ncht ganz korrekt, da hier das Verzeichnis /EFI/Ubuntu angesprochen wird, mit großem Anfangsbuchstaben. Da das Dateisystem aber fat32 ist, wird zwischen Groß und Kleinschreibung nicht unterschieden. Der grundsätzliche Unterschied ist aber, dass mit EIntrag 0 Ubuntu im secure-mode gestartet wird (shimx64.efi) während Eintrag 8 ohne Secure boot startet (grubx64.efi). Wenn du im Setup also secure-boot aktivieren würdest, sollte Eintrag 0 starten, Eintrag 8 wird aber nicht gestartet.

  • Welches Betriebssystem ist jetzt eigentlich mein primäres und sekundäres (siehe hier)?

  • Wenn ich in den UEFI-Settings in der Bootreihenfolge ubuntu als Nummer 1 eingestellt habe, kommt das gleiche GRUB-Menü, wie wenn ich ubuntu_server als Nummer 1 eingestellt habe. Das sieht (von der Reihenfolge) so aus:

    Ubuntu (entspricht Ubuntu Server)

Dein derzeit primäres System ist Ubuntu-Server. Denn du hast nicht genau überlegt, bevor du mit deiner Installation begonnen hast:

  • Du hast Lubuntu installiert. Die Startdateien von Lubuntu sind nach /boot/efi/EFI/unbuntu installiert worden.

  • Du hast Ubuntu-Server installiert. Die Startdateien von Ubuntu-Server wurden nach /boot/efi/EFI/unbuntu installiert

  • Du hast den Installationsort für Ubuntu Server geändert. Die Startdateien wurden nach /boot/efi/EFI/unbuntu-sever installiert.

Du hast also in /EFI/ubuntu und /EFI/ubuntu-server die gleichen Startdateien. Jene, die zu Lubuntu gehören, hast du überschrieben. Du hättest also entweder zunächst Ubuntu Server installieren sollen, und gleich dessen Dateien sichern um anschließend Lubuntu zu installieren, oder unmittelbar nach der Installation von Lubuntu den Ort für dessen Startdateien ändern. Dann wäre Ubuntu-Server dein primäres System geworden. Eigentlich ist es egal, welches System du wählst, es ist nur wichtig, dass nicht 2 Systeme im selben Ordner installiert sind.

Wenn du aber ubuntu-server normal installiert hast, dann solltest du aus dessen Menü Lubuntu starten können. Wenn du im System von Lubuntu bist, genügt im Terminal ein

 sudo grub-install

normalerweise, um die Lubuntu Startdateien wieder nach /EFI/ubuntu zu installieren. Am besten du fügst dir ein Hintergrundbild ein wie im Wiki beschrieben dann siehst du auf den ersten Blick, welches Grub-Menü gestartet wurde.

Ubuntu 14.04 (entspricht Lubuntu 14.04) }}}Das verstehe ich nicht ganz, denn eigl. wäre es doch logisch, dass (wenn ich ubuntu in den Boot-Settings auf Nr. 1 habe) auch Lubuntu 14.04 im GRUB-Menü ganz oben steht. Wie läuft das denn im Hintergrund ab (siehe auch nächste Frage)?

  • Folgendes steht im Wiki. Ist es auch möglich, dass sekundäre Betriebssystem auch über das sekundäre Betriebssystem zu starten? Oder wie ist hier der Hintergrund?

Nachdem ein sekundäres Betriebssystem über das primäre Betriebssystem gestartet werden kann, sollte man den Eintrag im NVRAM für das sekundäre Betriebssystem wieder löschen!

Grub sucht bei einem update-grub standardmäßig nach anderen Systemen und fügt dafür entsprechend einen Eintrag ins Grubmenü ein. Insofern kann man von beiden Menüs aus das jeweils andere System starten.

Warum man den anderen Eintrag löschen sollte, erschließt sich mir nicht.

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

Deine Fakten:

BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0001,0008,0007,0006
Boot0000* ubuntu	HD(1,800,af000,8a335fbb-f21c-47eb-8661-ce8415864523)File(\EFI\ubuntu\shimx64.efi)
Boot0001* ubuntu_server	HD(1,800,af000,8a335fbb-f21c-47eb-8661-ce8415864523)File(\EFI\ubuntu_server\shimx64.efi)
Boot0006* CD/DVD-Laufwerk 	BIOS(3,0,00)AMGOAMNO........m.H.L.-.D.T.-.S.T. .D.V.D.R.A.M. .G.H.2.4.N.S.B.0....................A.........................>..Gd-.;.A..MQ..L.C.K.E.8.L.5.1.A.4.1. .3. . . . . . . . ......AMBO
Boot0007* Festplatte 	BIOS(2,0,00)AMGOAMNO........m.W.D.C. .W.D.2.5.0.0.A.V.J.S.-.6.3.N.9.A.0....................A.........................>..Gd-.;.A..MQ..L. . . . .W. .-.D.M.W.V.A.E.2.2.P.1.9.9.4......AMBO
Boot0008* ubuntu	HD(1,800,af000,8a335fbb-f21c-47eb-8661-ce8415864523)File(EFI\Ubuntu\grubx64.efi)

Nun zu der Erklärung und den möglichen Problemen:

Auf der EFI-Partition (/boot/efi/EFI) befinden sich (u.a.) die Verzeichnisse

  • ubuntu

  • ubuntu-server

Nun passiert beim Installieren folgendes: Wird zuerst das ubuntu installiert, so wird nach dem Booten über das UEFI die Datei shimx64.efi aufgerufen gemäß

  • BootOrder: 0000,0001,0008,0007,0006
    Boot0000* ubuntu .... File(\EFI\ubuntu\shimx64.efi)

Das ist bis dahin unproblematisch - wird jetzt aber noch zusätzlich das ubuntu-server installiert, so kann dieses nicht starten, denn nach

  • BootOrder: 0000,0001,0008,0007,0006
    Boot0001* ubuntu_server .... File(\EFI\ubuntu_server\shimx64.efi)

wird ja nun shimx64.efi im Verzeichnis ubuntu_server aufgerufen. Und in der Datei shimx64.efi ist immer fest einprogrammiert:

  • suche grubx64.efi im Verzeichnis \EFI\ubuntu

was natürlich nicht funktioniert, weil dort das normale ubuntu mit seinen Zieldaten drin ist.

Darum dieser Hinweis mit dem primären und sekundären Systemen und der Aufforderung entsprechende Vorkehrungen für ein Multiboot zu treffen!

lionlizard

Avatar von lionlizard

Anmeldungsdatum:
20. September 2012

Beiträge: 6244

Wohnort: Berlin

@syscon-hh Vielen Dank für die Erklärung. Dann sollte es aber auch keine Probleme geben, wenn ich Secure-Boot deinstalliere

sudo apt-get purge grub-efi-amd64-signed

Sehe ich das richtig?

user32847

(Themenstarter)

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

Ein großes Dankeschön für die Antworten, lionlizard und syscon-hh!

Wenn ich das jetzt richtig verstehe, ist es also grundsätzlich bei Secure-Boot nie möglich, das GRUB-Menü vom sekundären Betriebssystem zu starten, da eben immer die Datei grubx64.efi in /EFI/ubuntu gesucht wird. Habe ich das richtig verstanden? ☺

Und wenn man kein Secure-Boot verwendet müsste es aber schon klappen, zwei verschiedene GRUB-Menüs aufrufen zu können, richtig?

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

Das hat nichts mit secure-boot zu tun.

Bei einer Installation ohne secure-boot wird dann sofort die Datei \EFI\ubuntu\grubx64.efi aufgerufen (steht dann auch so im NVRAM). Aber auch diese sucht dann die Datei grub.cfg im genannten Verzeichnis.

Diese Datei grub.cfg besteht (im normalen, nicht geänderten Fall) nur aus wenigen Zeilen:

1
2
3
search.fs_uuid 2b1e9065-c1f1-4c1d-89e8-202b46b184c9 root hd3,gpt4 
set prefix=($root)'/@/boot/grub'
configfile $prefix/grub.cfg
  • Zeile 1 verweist auf die Partition, die benutzt werden soll

  • Zeile 2 verweist auf den Pfad auf dieser Partition

  • Zeile 3 lädt die systemrelevante grub.cfg nach

und bringt damit das Grubmenü zu Anzeige.

user32847 schrieb:

Wenn ich das jetzt richtig verstehe, ist es also grundsätzlich bei Secure-Boot nie möglich, das GRUB-Menü vom sekundären Betriebssystem zu starten, da eben immer die Datei grubx64.efi in /EFI/ubuntu gesucht wird. Habe ich das richtig verstanden?

Auch das hat nichts damit zu tun - bei einem secure-boot fähigem System sind immer alle Komponenten, die nachgeladen werden müssen, mit einer Signatur versehen.

Wenn also das primäre System ein anderes, sekundäres System nachladen soll, so sind die Daten bereits in der gestarteten, signierten grub.cfg enthalten, auch die von einem sekundären System.

Aber Achtung: Auf einem System mit aktiven secure-boot müssen auch alle in der grub-cfg enthaltenen Kerneldateien signiert sein → z.b.: vmlinuz-xxxx-generic.efi.signed!

user32847

(Themenstarter)

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

syscon-hh schrieb:

Aber auch diese sucht dann die Datei grub.cfg im genannten Verzeichnis.

Sagen wir mal, ich möchte ubuntu_server starten, dann sucht /boot/efi/EFI/ubuntu_server/grubx64.efi also trotzdem immer im Verzeichnis /boot/efi/EFI/ubuntu nach der Datei grub.cfg?

syscon-hh schrieb:

Auch das hat nichts damit zu tun - bei einem secure-boot fähigem System sind immer alle Komponenten, die nachgeladen werden müssen, mit einer Signatur versehen.

Wenn also das primäre System ein anderes, sekundäres System nachladen soll, so sind die Daten bereits in der gestarteten, signierten grub.cfg enthalten, auch die von einem sekundären System.

Aber Achtung: Auf einem System mit aktiven secure-boot müssen auch alle in der grub-cfg enthaltenen Kerneldateien signiert sein → z.b.: vmlinuz-xxxx-generic.efi.signed!

Also kann immer nur (egal ob Secure-Boot oder nicht) das GRUB-Menü des primären Betriebssystem (/boot/efi/EFI/ubuntu) gestartet werden?

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

user32847 schrieb:

Sagen wir mal, ich möchte ubuntu_server starten, dann sucht /boot/efi/EFI/ubuntu_server/grubx64.efi also trotzdem immer im Verzeichnis /boot/efi/EFI/ubuntu nach der Datei grub.cfg?

Ja das ist so - es wird das System gestartet, dessen Dateien im Verzeichnis /EFI/ubuntu sind. Egal ob es nun per Definition das primäre oder sekundäre System ist.

Also kann immer nur (egal ob Secure-Boot oder nicht) das GRUB-Menü des primären Betriebssystem (/boot/efi/EFI/ubuntu) gestartet werden?

Du kannst auch das "Grubmenü" von allen weiteren System im gleichen Rechner starten - dazu müsste aber im sogenannten primären System ein Eintrag dafür in der entsprechenden grub.cfg vorhanden sein, der im Minimum eben beispielhaft angepasst an das Serversystem enthält:

1
2
3
4
menuentry 'Server aufrufen' {
search.fs_uuid 2b1e9065-c1f1-4c1d-89e8-202b46b184c9 root 
configfile /boot/grub/grub.cfg
}

Weitere Zeilen (insmod xyz) für alle relevante Komponenten sind noch einzufügen. Aber das steht ja alles im WIKI - nun mal selber sich schlau machen und nicht alles vorkauen lassen.

Normalerweise entsteht dieser Eintrag ja, wenn im primären System ein

  • sudo update-grub

erfolgt und in der /etc/default/grub das os-prober nicht deaktiviert wurde.

user32847

(Themenstarter)

Anmeldungsdatum:
29. Januar 2014

Beiträge: 332

syscon-hh schrieb:

user32847 schrieb:

Sagen wir mal, ich möchte ubuntu_server starten, dann sucht /boot/efi/EFI/ubuntu_server/grubx64.efi also trotzdem immer im Verzeichnis /boot/efi/EFI/ubuntu nach der Datei grub.cfg?

Ja das ist so - es wird das System gestartet, dessen Dateien im Verzeichnis /EFI/ubuntu sind. Egal ob es nun per Definition das primäre oder sekundäre System ist.

Danke. Weißt du zufällig, warum das so ist? Wieso sucht shimx64.efi oder grubx64.efi nicht erstmal im gleichen Verzeichnis nach den entsprechenden Dateien?

syscon-hh

Anmeldungsdatum:
8. Oktober 2005

Beiträge: 10220

user32847 schrieb:

Danke. Weißt du zufällig, warum das so ist? Wieso sucht shimx64.efi oder grubx64.efi nicht erstmal im gleichen Verzeichnis nach den entsprechenden Dateien?

Tut es doch - zumindest in einer normalen ubuntu Installation, da gibt es eben nur das eine Verzeichnis ubuntu. Was wir hier besprochen haben, weicht ja von einer Standard-Installation ab.

Diese beiden Pakete werden aufwendig (mit Kosten verbunden) von Canonical bei der

  • Microsoft UEFI Certificate Authority (CA)

signiert. Deshalb sind eben alle binary gleich. Und jede Veränderung zerstört die Signatur.

Es bleibt Dir aber vorbehalten, dieses Paket neu zu schreiben und mit dem (vorhandenen) MokManager selbst zu signieren.

Nur zur Information: Andere Distributionen → z.B. Debian 8 (Jessie) regeln das durchaus anders. Man kann sich da also nicht allgemein gültig festlegen.

Antworten |