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:
Ordner ubuntu in der EFI-Partition kopiert und umbenannt in lubuntu_14_04 Die Datei /etc/default/grub geändert. Und zwar GRUB_DISTRIBUTOR auf lubuntu_14_04 gesetzt Dann den Befehl sudo grub-install eingetippt Neu gestartet und UEFI-Settings aufgerufen In den UEFI-Settings fand ich nun auch lubuntu_14_04 zum Booten 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
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. Habe jetzt die Festplatte nochmal komplett leergemacht und von vorne begonnen. Lubuntu 14.04 erfolgreich installiert (UEFI-Modus). Ubuntu Server 14.04 erfolgreich installiert (UEFI-Modus). Ubuntu Server 14.04 gebootet und in der Datei /etc/default/grub den Wert von GRUB_DISTRIBUTOR auf ubuntu_server gesetzt. 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
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. 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)?
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
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:
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
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:
| 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:
| 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
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
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.
|