======= Rechner mit UEFI bootbar machen ======= * Anleitung nach https://help.ubuntu.com/community/UEFIBooting funktioniert (bei Mmoebius) ====== Grundlagen und Missverständnisse ====== ===== UEFI-Erkennung ===== * EFI wird nicht erkannt, wenn das System nicht als EFI-Gebootet wurde. * Typische Fehlermeldungen: * Try "sudo insmod efivars" , aber ''/sys/modules/efivars'' existiert bereits, insmod-Befehl schlägt fehl. * ''dmesg | grep -i efi'' liefert nur eine Zeile, offensichtlich keine EFI-Variablen * ''/sys/firmware/efi/vars'' ist nicht vorhanden oder leer * Achtung: Mainboard "ASUS E35M" will USB-Sticks im UEFI-Modus nur von [UEB-Stick]/EFI/BOOT/BOOTX64.EFI booten ===== EFI mit MBR-Platte ===== * EFI funktioniert auch mit MBR-Platten * EFI-ID im MBR "ef", Filesystem FAT12 FAT16 oder FAT32 (FAT32 getestet,ok) * EFI-Bootloader werden (außer auf USB-Sticks oder CDs) nicht gescannt sondern müssen mit **efibootmgr** (siehe unten) eingetragen werden. ===== EFI mit GPT-Platte ===== * GPT-EFI-Partition hat FAT32 und spezielle GUID, siehe http://en.wikipedia.org/wiki/EFI_System_Partition * gparted kann auch GPT-Platten bearbeiten * Gparted macht auch einer ca. 200 MiB großen ersten Partition mit dem Namen "UEFI" und dem Filesystem FAT32 automatisch eine richtige EFI-Systempartition mit der "EFI-magic-GUID" aus http://en.wikipedia.org/wiki/EFI_System_Partition * GPT-EFI-Partionen werden nicht nach möglichen Bootloadern gescannt, sondern diese müssen mit **efibootmgr** (siehe unten) eingetragen werden. ====== Installation ====== * Bei der Installatiuon * EFI-Systempartition als /boot/efi mit installieren * EFI-Bootloader installieren (bei der Installation) * chroot in /target gemäß Anleitung * mount /dev/ /target/dev, etc. * chroot /target /bin/bash -l * mount /boot/efi * apt-get-install grub-efi * cd /boot/efi/EFI/BOOT * mv ubuntu BOOT * cd BOOT mv grubx64.efi BOOTX64.EFI * cp -R /boot/grub/. . ====== EFI-Boot-Eintrag erzeugen ====== * Prärequisite: * System muß im UEFI-Modus gebootet sein, sonst sind meist keine EFI-Variablem vom Kernel detektierbar. * **efibootmgr** gemäß Anleitung laufen lassen https://help.ubuntu.com/community/UEFIBooting#Non-Mac_x86_64_UEFI_systems * efibootmgr --create --disk /dev/sda --part 1 --write-signature --label "Linux-UEFI" --loader "\\EFI\\BOOT\\BOOTX64.EFI" * ggf. im o.a. Eintrag --gpt einbauen, wenn die Platte eine GPT-Platte ist. ======= Windows aus Grub heraus im EFI-Modus booten ======= siehe http://www.rodsbooks.com/efi-bootloaders/grub2.html menuentry "Windows 7" { set root='(hd0,gpt1)' chainloader /EFI/microsoft/BOOT/bootmgfw.efi } ====== Windows reparieren ====== * Der Windows-Bootloader meldet sich nach einer Änderung am EFI oder an der Partitionstabelle nur noch mit einer Fehlermeldung **''0xc00000xyz''** . Wahrscheinlich ist die BCD (Boot Configuration Data) - Datei auf dem System nicht aktuell. * Windows 7 Rescue-USB-Stick nehmen. * Stick starten * Sobald Windows gestartet ist: mit **Shift-F10** Windows-Shell starten * 1. Versuch: * ''bootrec.exe /RebuildBCD'' * 2. Versuch: * ''diskpart'' * ''list volume'' * hier sucht man die Nummer **** der EFI-Partition, der vmtl. keine **Volume** (Laufwerksbuchstabe) zugewiesen ist * ''select volume ''**''''** * ''assign'' * Weist der Partition eine **Volume** (Laufwerksbuchstaben) zu und "mountet" diese. * diskpart beenden * ''dir ''**''Volume:''** * Zum Prüfen der richtigen Zuweisung der Boot-Partition. Nicht, dass man hier versehentlich den Boot-Stick erwischt * ''bcdedit /sysstore ''**''Volume:''** * Leitet das Speichern des BCDs auf **Volume:** um. * ''bootrec.exe /RebuildBCD'' * Schreibt den BCD nun auf das richtige Volume ===== BCD (Boot Configuration Data) bearbeiten ===== * Einen beliebige BCD-Datei zum Bearbeiten auswählen: ''bcdedit /store x:/path/to/BCD /enum'' ===== Test of im MBR- oder (U)EFI-Modus ===== ** Das ist ungetestet. Bitte selbst verifizieren ** * bcdedit.exe /sysstore * Im (U)EFI-Modus: funktioniert * im MBR-Modus: Fehlermeldung „Fehler beim Ausführen des Befehls zum Festlegen des Systemspeichergerätes. Die Anforderung wird nicht unterstützt.