[[Vorlage(Getestet, bionic, focal,jammy)]] {{{#!vorlage Warnung An verschiedenen Stellen sind explizit Werte/Platzhalter angegeben (z.B.: #, x, y, z). Bei Verwendung der hier genannten Befehle sind __unbedingt__ die jeweils den eigenen Gegebenheiten entsprechenden Werte zu wählen und einzufügen. }}} {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Im Terminal arbeiten] [:Editor: Mit dem Texteditor arbeiten] [:mount: Einbinden von Dateisystemen] [:chroot: change root einrichten] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/Oxygen/view-refresh.png, 34, align=left)]] Der Bootvorgang in [wikipedia:Unified_Extensible_Firmware_Interface: EFI]-Systemen unterscheidet sich im Wesentlichen von dem im BIOS/[wikipedia:Master_Boot_Record: MBR] System durch die `esp`= EFI-System-Partition. In dieser können, anders als in einem BIOS-System mit [wikipedia:Master-Boot-Record:MBR] mehr als nur ein Bootloader gespeichert und zur Ausführung gebracht werden. Um ein System umzustellen, müssen die entsprechenden `grub` Dateien in die dafür vorgesehenen Verzeichnisse geschrieben werden. Unter bestimmten Umständen kann es erforderlich sein, ein im legacy/CSM/BIOS-Modus installiertes Ubuntu auf den EFI-Modus umzustellen. Beispiele dafür sind: * zu einem vorhandenen Windows 10 (im EFI-Modus auf [wikipedia:GUID_Partition_Table:GPT]) soll eine HDD mit einem im legacy-Modus installiertes Ubuntu hinzugefügt werden: * eine Ubuntu legacy-Installation wird um eine > 2TB Platte für Windows 10 ergänzt (d.h., GPT ist erforderlich, und damit Windows 10 nur im EFI Modus möglich). * Sicherheitsaspekte Je nach Firmware Setup kann man zwar durch Modus-Umstellung und Boot-Device-Wahl das jeweils andere OS starten, aber das ist nicht wirklich praktikabel. = Zweck = Im Artikel wird beschrieben, wie man ein im legacy-Modus (''auch CSM oder BIOS-Kompatibilitäts-Modus genannt'') installiertes Ubuntu auf EFI-Modus umstellen kann. {{{#!vorlage Hinweis Die im Folgenden beschriebene Vorgehensweise enthält eine größere Anzahl von einzelnen Schritten und erfordert das Auslesen einiger Parameter für die erfolgreiche Durchführung. Da ein kleiner Flüchtigkeitsfehler schon ausreicht, um den Erfolg der Umstellung des [:GRUB_2:] komplett zu verhindern, sollte die gesamte Aktion vorher Schritt für Schritt genau geplant und dann Punkt für Punkt akkurat abgearbeitet werden. }}} = Voraussetzungen = * LiveUSB Stick (oder DVD) mit der installierten Version. * System läuft im EFI-Modus (Prüfung s. weiter unten). Die Bezeichnungen dafür sind leider von Hersteller zu Hersteller nicht einheitlich. * Vorhandensein einer `esp` Partition.{{{#!vorlage Hinweis Es stehen verschiedene Werkzeuge zum Erstellen einer `esp` zur Verfügung, u.a. `gparted` oder `gdisk`. Das Vorgehen für beide Anwendungen ist z.B. in [:Universal_stand-alone_grub_für_BIOS_und_EFI_auf_USB_flashkey_und_internen_HDD_und_SSD/#Partitionieren-des-flashkey:] beschrieben}}} * Das erforderliche Verzeichnis '''/boot/efi''' ist nicht vorhanden und wird mit `sudo mkdir /mnt/boot/efi` ''nach'' dem mounten der '''/''' Partition nach '''/mnt''' angelegt. = Ausführung = Eine Terminalausgabe kann hier eingesehen werden: * [[Anhang(Doku-Test_mit_16.04.5.txt)]] {dl} * [[Anhang(Terminalausgabe_mit_focal.txt)]] {dl} == Vorbereitung == * Zuerst prüft man, ob im NVRAM bereits ein Eintrag für "ubuntu" aus einem anderen Zusammenhang existiert. * Dieser ist zu löschen ([:efibootmgr:]), da er die korrekte Installation von grub behindert. `efibootmgr` ist nicht vorhanden und wird mit `sudo apt install efibootmgr` nachinstalliert. * Bezieht sich der Eintrag auf eine bereits anderweitig bestehenden Ubuntu-Installation im EFI-Modus, ist anders vorzugehen, z.B. :arrow: [:EFI_Nachbearbeitung/#Zusaetzliches-Bootverzeichnis-erstellen:]. * Sollte keine `esp`-Partition im System existieren - z.B. ohne Windows - muss diese zuerst angelegt werden. Hinweise dazu findet man in [:GRUB_2/Grundlagen:]. * Die [:UUID:] dieser Partition ermittelt man mit `sudo blkid` oder `lsblk -f`. == System von BIOS auf EFI umstellen == Dafür wird zunächst im Setup auf EFI-Modus umgestellt, und ein geeignetes (→ z.B. [:EFI_USB-Stick:]) Live-System gestartet. Dabei ist darauf zu achten, dass durch die richtige Einstellung __ausschließlich__ im EFI-Modus gebootet werden kann. * Richtig: `efi` oder `efi only`. * Falsch: `efi or legacy`, `both`, `first boot` oder ähnliche, mehrdeutige Einstellungen. Ob man im EFI-Modus "fährt" prüft man im [:Terminal:] mit: {{{#!vorlage Befehl [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS }}} == Vom LiveSystem mit chroot ins installierte (BIOS) System == Um per chroot in das installierte System zu wechseln, stehen Wiki-Seiten mit entsprechenden Befehlsabläufen zur Verfügung. :arrow: [:chroot:], [:chroot/Live-CD:]. Der Ablauf wird im Terminal durchgeführt und sieht wie folgt aus: 1. die '''/''' Partition mounten nach '''/mnt''', falls nicht bereits oben erledigt. 1. '''/boot/efi''' anlegen (siehe oben). 1. die EFI Partition mounten nach '''/mnt/boot/efi'''. 1. die üblichen chroot-Befehle, z.B. mit dem Einzeiler: [[Vorlage(Befehl, "for dir in /dev /dev/pts /proc /sys /run; do sudo mount --bind $dir /mnt/$dir; done")]] 1. jetzt wechselt man in das zu bearbeitende System mit `sudo chroot /mnt /bin/bash`. In diesem System ist man dann "root" und führt alle Befehle mit ebendiesen Rechten aus. === grub-pc Dateien deinstallieren === Zunächst werden die nicht mehr benötigten grub-Bestandteile entfernt, * [[Vorlage(Befehl, "apt-get purge grub-common grub-pc os-prober")]] * die Frage ''"Wollen Sie alle Daten von GRUB 2 aus /boot/grub entfernen lassen?"'' kann mit ''""'' belassen werden, da im chroot ohnehin nicht alles deinstalliert werden kann. === grub-efi Dateien installieren === und durch die neu benötigten EFI-Versionen ersetzt. * [[Vorlage(Befehl, "apt-get install grub-common grub-efi-amd64 os-prober")]] Wenn das alles fehlerfrei durchgelaufen ist, kann `grub` installiert werden. === grub installieren === * [[Vorlage(Befehl, "grub-install")]] ohne weitere Zielangabe installiert grub automatisch in die ESP (Partition mit der Markierung `esp`). Ein anschließendes [[Vorlage(Befehl, "update-grub")]] erzeugt die erforderliche Konfigurationsdatei '''/boot/grub/grub.cfg'''. == Nacharbeiten == === Anpassen der /etc/fstab === Wer möchte, kann auch gleich die '''/etc/fstab''' z.B. mittels `sudoedit /etc/fstab` editieren (Achtung beim Speichern). Die erforderliche Zeile {{{ UUID=5A8E-000B /boot/efi vfat umask=0077 0 1 }}} am Ende einfügen und mit einer weiteren Leerzeile abschließen. Die richtige UUID hat man schon weiter oben mit [:blkid:] ermittelt und ist hier einzusetzen anstelle von `5A8E-000B`. Möglich ist das aber auch nach Verlassen der chroot-Umgebung {{{#!vorlage Befehl root@ubuntu:/# exit }}} und womöglich einfacher mit einem [wikipedia:GUI:]-Editor zu bewerkstelligen. ([: mit_Root-Rechten_arbeiten:] → `pkexec`, `sudo -H`) === Überprüfung der prinzipiellen Bootfähigkeit === * Wichtig ist jetzt die Überprüfung des NVRAM * dazu führt man `sudo efibootmgr -v` aus * ist alles richtig abgelaufen, steht in der Liste am Ende ein neuer Eintrag mit "Ubuntu" *{{{sudo efibootmgr -v BootCurrent: 000C Timeout: 0 [...] Boot001F* ubuntu HD(2,GPT,ed0b16ce-22ae-407e-97f7-27c5a3802210,0xfa000,0x32000)/File(\EFI\ubuntu\grubx64.efi)}}} * und das Setzen der richtigen Bootreihenfolge, z.B. mit * `sudo efibootmgr -n ####`, oder anpassen der Reihenfolge mit `sudo efibootmgr -o xxxx,yyyy,zzzz,...` * ggf. kann man auch im Setup die Reihenfolge wählen und verändern. === Kein Eintrag im NVRAM === Sollte kein neuer Eintrag für *ubuntu im NVRAM vorhanden sein, überprüft man das '''/boot/efi'''-Verzeichnis ob die Grub2-Dateien vorhanden sind. {{{#!vorlage Befehl ### Einhängen der EFI-Boot-Partition auf /mnt sudo mount /dev/sdxy /mnt ### Abfrage der Ordner und Dateien sudo ls -aR /mnt }}} Die Ausgabe für die Verzeichnisse von Ubuntu sieht dann in etwa so aus. {{{ /mnt: . .. EFI /mnt/EFI: . .. BOOT ubuntu /mnt/EFI/BOOT: . .. BOOTX64.EFI fbx64.efi /mnt/EFI/ubuntu: . .. BOOTX64.CSV grub.cfg grubx64.efi mmx64.efi shimx64.efi }}} Wichtig sind die Dateien, welche hier in der letzten Zeile der o.g. Abfrage erscheinen und im Verzeichnis '''/mnt/EFI/ubuntu''' liegen. Sind diese vorhanden, aber kein Eintrag im NVRAM, kann versucht werden mit [:efibootmgr:] einen Eintrag im NVRAM herzustellen. Bei signierten Kerneln, welche auch mit aktiviertem Secureboot booten können, ist die '''shimx64.efi''' die maßgebende Datei, auf die der Eintrag im NVRAM verweisen muss. Ist diese Datei im Verzeichnis vorhanden, sollte der Eintrag im NVRAM auf diese Datei verweisen, sonst kann das OS u.U. nicht gebootet werden - unabhängig davon ob Secureboot aktiviert ist oder nicht. {{{#!vorlage Befehl sudo efibootmgr -v }}} {{{ BootCurrent: 000C Timeout: 0 [...] Boot001F* ubuntu HD(2,GPT,ed0b16ce-22ae-407e-97f7-27c5a3802210,0xfa000,0x32000)/File(\EFI\ubuntu\shimx64.efi) }}} Fehlen diese Dateien, ist die Umstellung nicht geglückt und muss wiederholt werden. = Nachbemerkung = Ein wie oben beschriebener Wechsel ist zwingend erforderlich, falls kein anderer Bootloader bereits vorhanden ist. Ein EFI-Windows `bootmgr` - erweitert mit EasyUEFI - ist nicht in der Lage, ein "BIOS"-Linux zu starten, ein EFI-Linux kann das aber sehr wohl. = Stolperfallen = * `efi`-Verzeichnis vergessen oder falsches Dateisystem: Fällt beim Versuch zu mounten auf. * Falscher Pfad beim Speichern der '''/etc/fstab''' nach Änderung mit einem Editor: System bootet bis zur `grub`-Konsole. siehe unten. * Fehler in der UUID der `esp` beim Eintrag in die '''/etc/fstab''': System bootet bis zur `grub`-Konsole, macht man dann einen Boot mit Hilfe der SymLinks, bleibt der Bootvorgang stecken wegen Fehlers in der '''/etc/fstab'''. Live-System booten und korrigieren. * Festplattencontroller unterstützt kein UEFI: Bei der Nutzung älterer Festplattencontroller (meist Steckkarten) kann es vorkommen, dass diese kein UEFI unterstützen und nicht von diesen im EFI-Modus gebootet werden kann. In diesem Fall darf sich weder die `esp`-Partition noch /boot auf einer Festplatte befinden, die an diesem Controller angeschlossen ist. = Links = * [:chroot:] * [:chroot/Live-CD:] * [:efibootmgr:] * [:EFI_USB-Stick:] * [post:9029942:Post im Supportforum, der der Auslöser für diesen Artikels war] #tag: EFI, BIOS, GRUB 2, Bootloader, System