Als langjähriger Ubuntu-Benutzer habe ich vor Kurzem einen Acer Revo One gekauft, auf dem Windows 8 auf einer 60 GB großen SSD vorinstalliert war. Dieses Mal habe ich beschlossen, die Lizenz zu behalten. Ich habe das kostenlose Upgrade auf MS Windows 10 genutzt (ich habe mich für eine Neuinstallation von einem USB-Datenträger entschieden, damit ich die Partitionen auf der SSD kontrollieren konnte – ich habe genug Platz für eine Root-Partition gelassen). Diese Installation hat problemlos funktioniert.
Als Nächstes habe ich eine Festplatte eingebaut und mit der Installation von Ubuntu 16.04 über einen Live-USB-Stick fortgefahren.
Ich habe die Festplatten wie folgt partitioniert (das habe ich von GParted bekommen, nachdem ich vom Ubuntu Live-USB gebootet hatte):
Grundsätzlich möchte ich:
- beide Betriebssysteme können von der SSD gebootet werden
- Ubuntu, um die Festplatte für eine nominale
/home
Swap-Partition zu verwenden und/tmp
- eine gemeinsam genutzte Partition, auf die sowohl Windows als auch Ubuntu schreiben können
Ich habe keine Ahnung, warum /dev/sdb3
und /dev/sdb4
habe „msftdata“-Flags bekommen.
Secure Boot ist aktiviert (ich habe verschiedene Beiträge gelesen – einige sagen, man solle es bei der Installation von Ubuntu deaktivieren, andere sagen, das sei nicht nötig). Fast Boot ist deaktiviert.
Ubuntu wird wie erwartet installiert, beim Neustart (nachdem die Live-USB-Festplatte entfernt wurde) startet die Maschine jedoch nur in Windows.
Ich habe das BIOS geprüft und es gibt keine Möglichkeit, mit etwas anderem als dem Windows-Boot-Manager (oder der Live-USB-Festplatte, sofern installiert) zu booten.
efibootmgr meldet:
BootCurrent:0002
Timeout: 2 seconds
BootOrder: 0000,0002,0001
Boot0000* Windows Boot Manager
Boot0001 ubuntu
Boot0002* UEFI: SanDisk
Mir ist aufgefallen, dass neben Boot0001 kein Sternchen steht, was bedeutet, dass es nicht „aktiv“ ist. Ich habe versucht, es auf „aktiv“ zu setzen und ich habe auch versucht, die Startreihenfolge zu ändern, sodass Boot0001 zuerst kommt. Ich habe sogar versucht, BootNext auf 0001 zu ändern. Nichts davon funktioniert. Mir ist aufgefallen, dass Änderungen zum Aktivieren von Boot0001 beim nächsten Start zurückgesetzt werden – meine Änderungen bleiben also nicht erhalten.
Ich habe zahlreiche Beiträge gelesen, die zahlreiche Empfehlungen enthalten:
- Einige sagen, installieren Sie zuerst Windows, andere sagen das Gegenteil.
- Installieren Sie Grub erneut.
- Reparieren Sie die EFI-Bootloadereinträge entweder manuell (durch Mounten der EFI-Partition und Kopieren/Umbenennen der Einträge) oder mithilfe von Boot-Repair.
Ich kann anscheinend keinen Dump der EFI-Partition anhängen, aber hier ist ein Fragment:
./EFI
./EFI/Microsoft
./EFI/Microsoft/Boot
./EFI/Microsoft/Boot/bg-BG
./EFI/Microsoft/Boot/bg-BG/bootmgfw.efi.mui
./EFI/Microsoft/Boot/bg-BG/bootmgr.efi.mui
./EFI/Microsoft/Boot/bootmgr.efi
./EFI/Microsoft/Boot/memtest.efi
./EFI/Microsoft/Boot/boot.stl
./EFI/OEM/Boot
...
./EFI/Microsoft/Boot/en-GB
./EFI/Microsoft/Boot/en-GB/bootmgfw.efi.mui
./EFI/Microsoft/Boot/en-GB/bootmgr.efi.mui
...
./EFI/OEM
./EFI/OEM/Boot
./EFI/OEM/Boot/boot.stl
./EFI/OEM/Boot/bootmgfw.efi
./EFI/OEM/Boot/bootmgr.efi
./EFI/OEM/Boot/memtest.efi
./EFI/OEM/Boot/BOOTSTAT.DAT
./EFI/OEM/Boot/BCD
./EFI/OEM/Boot/BCD.LOG
./EFI/OEM/Boot/BCD.LOG1
./EFI/OEM/Boot/BCD.LOG2
...
./EFI/OEM/Boot/en-GB
./EFI/OEM/Boot/en-GB/bootmgfw.efi.mui
./EFI/OEM/Boot/en-GB/bootmgr.efi.mui
...
./EFI/ubuntu
./EFI/ubuntu/fw
./EFI/ubuntu/fwupx64.efi
./EFI/ubuntu/grubx64.efi
./EFI/ubuntu/grub.cfg
./EFI/ubuntu/shimx64.efi
./EFI/ubuntu/MokManager.efi
./OEM
./OEM/AcerOA30.xml
./OEM/Factory
./OEM/Factory/AMIDEWINx64.exe
./OEM/Factory/AMIFLDRV64.sys
./OEM/Factory/CHK.bat
./OEM/Factory/CHK_DK.bat
./OEM/Factory/Delay-Diags.exe
...
Ich weiß, dass ich kurz davor bin, diese Nuss zu knacken. Welcher der oben genannten Vorschläge wird also wahrscheinlich funktionieren? Ich möchte lieber nicht in die Situation kommen, dass Windows nicht mehr startet und ich neu starten muss. Es dauert lange, alles neu zu installieren.
Eine Art Erfolg.
Mein BIOS war veraltet, also habe ich es aktualisiert.
Ich habe auch Boot-Repair von einer USB-Bootdiskette verwendet, um die EFI-Bootpartition zu reparieren (ich bin nicht sicher, ob sie überhaupt kaputt war).
Dann habe ich den Vorschlag von @ford ausprobiert – bcdedit innerhalb von w$ ausführen – Erfolg! Grub wird mit einer Vielzahl von Auswahlmöglichkeiten angezeigt – Ubuntu ist die Standardeinstellung.
Das alles war umsonst, als ich Windows neu startete und beim Herunterfahren beschloss, ein Update anzuwenden, das den Bootvorgang von Ubuntu stoppte. (tiefer Seufzer).
Alles, was ich bekomme, sind ein paar Zeilen, in denen ich vorschlage,
sysctl reboot
oder
sysctl defaults
beides hat nicht viel bewirkt.
Hat das Windows-Update die Windows-Bcdedit- und/oder Linux-Boot-Reparatur rückgängig gemacht? Wenn ja, wie verhindere ich, dass Windows-Updates täglich Chaos anrichten?
Antwort1
Haben Sie versucht, den Standard-Bootloader in der Windows-Eingabeaufforderung auf Grub einzustellen? Das musste ich tun, als ich Ubuntu für die Ausführung mit Windows 10 installierte:
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Ich würde auch empfehlen, Secure Boot auszuschalten. Windows ist ein launisches Biest, wenn es um Dual Boot geht.
Antwort2
Nach dem Windows 10 Creator's Update wird beim Rechtsklick auf das Windows-Logo die Option PowerShell (Admin) anstelle von Eingabeaufforderung (Admin) angezeigt. Ich habe versucht, bcdedit mit PowerShell zu bearbeiten, aber es ist schiefgegangen. Verwenden Sie PowerShell also nicht mit bcdedit, es sei denn, Sie wissen, was Sie tun.
Die Lösung besteht darin, nach der Eingabeaufforderung zu suchen, sie im Administratormodus zu öffnen (Rechtsklick -> als Administrator öffnen) und die oben bereits erwähnten allgemeinen Befehle zu verwenden -
bcdedit /set {bootmgr} path "\EFI\ubuntu\shimx64.efi"
Wenn jemand herausfindet, wie man PowerShell für bcdedit verwendet, posten Sie es bitte hier.
Antwort3
Ich nehme alles zurück ... w$ hat mir (überraschenderweise) nicht den Tag verdorben - es waren meine mangelhaften Fähigkeiten beim Bearbeiten von /etc/fstab zur SSD-Optimierung, die mich daran hinderten, Ubuntu zu booten. Die Welt ist in Ordnung.
Ich hoffe, meine Erfahrung hilft jemandem da draußen!
Antwort4
Eine andere Lösung besteht darin, zwei EFI-Partitionen zu verwenden. Eine nur für Windows, eine andere für Linux und andere Systeme. Erstellen Sie in der zweiten Partition einen Pfad EFI\Microsoft\Boot\ und kopieren Sie shimx64.efi nach bootmgrfw.efi innerhalb dieses Pfads und lassen Sie EFI\ubuntu\ unberührt. ACER-Laptops sehen Shim auf dieser Partition als Windows-Boot-Manager und booten auch von hier. Ich sehe, dass os-prober, wenn sich in dieser Partition nur bootmgrfw.efi und nicht BCD usw. befindet, nur den Windows-Bootloader auf der ersten Originalpartition erkennt und keinen doppelten Menüeintrag in grub.cfg erstellt. Sie können also GRUB EFI booten und Ubuntu oder Windows mit dem richtigen Chaniload auf der anderen Partition aufrufen. In diesem Modus behält Windows die richtige EFI-Partitionsstruktur in der ersten Partition bei und sollte bei Updates das falsche bootmgrfw.efi (Shim) in der zweiten Partition nicht überschreiben. Bei mir funktioniert es auf einem ACER 5750g.