[EFI] Grub einrichtung nach Windows Installation nicht möglich

theo_retiker

Cadet 2nd Year
Registriert
Feb. 2015
Beiträge
18
[EFI] Grub Einrichtung nach Windows Installation nicht möglich

Hallo,

ich habe auf meinem Laptop Linux drauf (LinuxMint 17) und habe mir Windows 7 zusätzlich installiert (weil GameDesign+Unity3D+Linux = igitt).
Das nette: Grub geht natürlich ohne weiteres nicht mehr, aber im EFI kann ich nun die Boot-Partition auswählen. Kann somit etwas umständlich in Windows oder in Linux booten, erreiche also Linux trotzdem noch.

Wenn ich nun von der Linux Partition boote, startet auch GRUB ganz normal. Habe dann versucht Windows 7 in GRUB rein zu kriegen (damit ich den Umweg über EFI nicht immer machen muss) hat jedoch bisher nicht funktioniert.

Was ist bisher versucht habe:

1.) Im StartUp-Manager war die Windows Partition nicht aufgelistet, ergo konnte ich sie nicht zu Grub hinzufügen.
2.) Habe von YannUbuntu das Boot-Repair ausprobiert, auch er hat die Partition, bzw. den Windows-Loader nicht gefunden.
3.) Habe mit Config-Hacking versucht einen manuellen Eintrag zu erstellen - hat natürlich auch nicht funktioniert.
4.) GRUB komplett neu installiert habe ich auch schon, hat auch nichts gebracht (die Config allein neu generiert mit update-grub hab ich natürlich auch versucht)

Mit fdisk -l finde ich die Partition und sie ist als boot-partition gekennzeichnet:

sda1: EFI
sda2: Linux
sda3: NTFS (Windows 7, als boot gekennzeichnet)
sda4: SWAP

Wer hat damit eventuell Erfahrung gemacht, bzw. hat eine Idee, woran es liegen könne?

mfg
Hauke
 
Zuletzt bearbeitet:
Mit EFI funktioniert der boot halt anders, als früher mit Lilo/Grub-legacy und ntloader. Bei Windows ruft erst das EFI bootx64.efi, das auf der EFI-Systempartition liegen muss, auf und bootx64.efi initialisiert bootmgr, bootmgr ruft jetzt die winload.exe auf und erst die liegt irgendwo auf der NTFS-Partition. Die Stage von Grub, die dir eine Bootauswahl bietet, lieg, genau wie bei Windows winload.exe, bereits auf einer Datenpartition - man ist jetzt im Bootprozess also schon einen Schritt weiter, als der Windows-Boot beginnen muss.

Wenn die UEFI-Adaptionen der Boardhersteller die Option bieten würden, eine Bootauswahl automatisch und nicht erst per Knopfdruck einzublenden, wär alles in Butter, aber vielleicht müssen sich das auch nur mehr Menschen per Mail wünschen.
 
link in meiner sig
 
Bei Linux Mint 17 und 17.1 ist mit Grub irgend was nicht in Ordnung. Hatte dieser Tage ähnliches Problem, das Grub bei Neuinstallation von Mint 17 oder 17.1 nicht eingerichtet wurde und mein Win7 auf SDB und mein XP auf SDA noch starteten ohne Grub. Mit Mit 15 oder aktuellem Ubuntu auf SDA wird Grub normal automatisch eingerichtet.
 
Ist os-prober installiert? Wenn ja, sollte grub-mkconfig eigentlich einen Eintrag für Windows generieren.
Edit: Nein, tut es leider nicht. Bzw. bei mir nur, weil ich von Hand irgendwas gemacht habe.

Ansonsten doch mal von Hand. Windows-Einträge für EFI sehen etwa so aus:
Code:
menuentry 'Windows 8.1' --class windows --class os {
    insmod part_gpt
    insmod fat
    set root='hd0,gpt1'
    if [ x = xy ]; then
        search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 4409-2F8D
    else
        search --no-floppy --fs-uuid --set=root 4409-2F8D
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

Partitionsnummern, die UUID (herausfindbar mittels ls -l /dev/disk/by-uuid) und eventuell den Pfad zum Windows-Bootloader (relativ zur EFI-Partition) ändern, dann das ganze in eine Datei /etc/grub.d/29_windows schreiben, mit grub-mkconfig die Konfiguration neu erstellen lassen und fertig.
 
Zuletzt bearbeitet:
Erstmal danke für die Antworten!

Habe jetzt einen ähnlichen Eintrag wie den von VikinGE drin, doch bei mir finde er den Pfad /EFI/Microsoft/Boot/bootmgfw.efi nicht.

Habe dann geguckt, bei mir ist der Pfad zu der Datei C:\Windows\Boot\EFI\bootmgfw.efi. Habe den Pfad dann eingetragen und kriege die Error-Message 0xc000000f. Er schreibt auch, dass er die BCD nicht laden kann. Ich kann jedoch von der Windows Partition booten (ohne irgendwelche Probleme), wenn ich diese halt im EFI Menü einstelle.

Immerhin scheint er die Datei ja nun gefunden zu haben.


Hat jemand ne Idee, wie ich, den Fehler beheben kann (Mit Installer-CD und dann "bootrec /rebuildbcd" hats nicht geklappt)?


Hier nochmal mein aktueller grub.cfg eintrag für Windows:

Code:
menuentry 'Windows 7 (loader) (on /dev/sda3)' --class windows --class os
$menuentry_id_option 'osprober-chain-66B6470AB646D9E7' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3
--hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 --hint='hd0,msdos3'
 66B6470AB646D9E7
    else
      search --no-floppy --fs-uuid --set=root 66B6470AB646D9E7
    fi
    parttool ${root} hidden-
    chainloader /Windows/Boot/EFI/bootmgfw.efi
}

mfg
Hauke
 
Zuletzt bearbeitet:
Der Eintrag ist - jetzt mal abgesehen von der letzten Zeile - eigentlich eher für MBR-Boot. Einerseits sind die Partitionsbezeichnungen Blödsinn (msdos... - du hast doch höchstwahrscheinlich eine GPT-Tabelle), andererseits versuchst du gerade, den Bootloader von der Windows-Partition zu starten - du müsstest den aber von der EFI-Partition starten, weil da auch die Konfiguration dafür liegen dürfte.

Probier mal, meinen Eintrag 1:1 zu übernehmen - bis auf die UUID. Da die UUID von deiner EFI-Partition eintragen.
Was den Pfad zur Datei angeht - den auch so lassen, wie er war. Die Datei auf dem C-Laufwerk interessiert herzlich wenig.
 
Habe die Einstellung 1:1 übernommen, mit meiner UUID der EFI Partition und dann halt grub-mkconfig und update-grub gemacht. Der Eintrag war da, doch er sagt mir, dass er die boomgfw.efi nicht findet.
Habe den Pfad natürlich nicht geändert, sondern nur die UUID eingetragen.

Habe nach dem fehler gesucht - da ich endlich was konkretes habe - und jemand hat bei ähnlichem Fehler das bootinfoscript vorgeschlagen. Das gibt bei mir das aus:

Code:
                  Boot Info Script 0.61      [1 April 2012]


============================= Boot Info Summary:
===============================

 => Windows is installed in the MBR of /dev/sda.

sda1:
__________________________________________________________________________

    File system:       vfat
    Boot sector type:  FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:
    Boot files:        /efi/linuxmint/grubx64.efi
                       /efi/linuxmint/MokManager.efi
                       /efi/linuxmint/shimx64.efi

sda2:
__________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info:
    Operating System:  Linux Mint 17 Qiana
    Boot files:        /boot/grub/grub.cfg /etc/fstab

sda3:
__________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows Vista/7: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  Windows 7
    Boot files:        /grldr /bootmgr /Boot/BCD
                       /Windows/System32/winload.exe /grldr

sda4:
__________________________________________________________________________

    File system:       swap
    Boot sector type:  -
    Boot sector info:

============================ Drive/Partition Info:
=============================

Drive: sda
_____________________________________________________________________

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 Köpfe, 63 Sektoren/Spur, 60801 Zylinder, zusammen 976773168 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Sector size (logical/physical): 512 bytes / 4096 bytes

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1               2,048     1,050,623     1,048,576  ef EFI
(FAT-12/16/32)
/dev/sda2           1,050,624   653,033,471   651,982,848  83 Linux
/dev/sda3    *    653,033,472   960,233,471   307,200,000   7 NTFS /
exFAT / HPFS
/dev/sda4         960,233,472   976,771,071    16,537,600  82 Linux swap
/ Solaris


"blkid" output:
________________________________________________________________

Device           UUID                                   TYPE       LABEL

/dev/sda1        2B05-74CF                              vfat
/dev/sda2        7fa568f9-994e-4e97-b827-328b02b9d329   ext4
/dev/sda3        66B6470AB646D9E7                       ntfs
/dev/sda4        e5209435-9961-449c-839c-e91f1767a058   swap

================================ Mount points:
=================================

Device           Mount_Point              Type       Options

/dev/sda1        /boot/efi                vfat       (rw)
/dev/sda2        /                        ext4       (rw,errors=remount-ro)

Anscheinend liegt auf der EFI Partition keine bootmgfw.efi und auch sonst nirgends :/
 
Mounte doch mal die EFI-Partition unter Linux und schaue mal nach, was da so drin ist.

Was mich etwas verwundert:
=> Windows is installed in the MBR of /dev/sda.
Wurde Windows im EFI-Modus installiert bzw. nachträglich darauf umgestellt? Was gibt efibootmgr (ohne Argumente) aus?
 
Also in der EFI Partition sind folgende Dateien und Ordner:

Code:
-rwxr-xr-x 1 root root      45 Feb 13 17:33 /media/EFI-partition/boot/grub/device.map
-rwxr-xr-x 1 root root     128 Feb 13 17:30 /media/EFI-partition/EFI/linuxmint/grub.cfg
-rwxr-xr-x 1 root root  119296 Feb 13 17:37 /media/EFI-partition/EFI/linuxmint/grubx64.efi
-rwxr-xr-x 1 root root 1178240 Feb 13 17:30 /media/EFI-partition/EFI/linuxmint/MokManager.efi
-rwxr-xr-x 1 root root 1355736 Feb 13 17:30 /media/EFI-partition/EFI/linuxmint/shimx64.efi

In welchem Modus Windows installiert wurde weiß ich ehrlich gesagt nicht mehr, ich habe nachträglich jedoch nichts verändert.

Edit:
efibootmgr gibt das aus:
Code:
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0005,0000,0003,0001
Boot0000* linuxmint
Boot0001* ubuntu
Boot0003* Hard Drive
Boot0005* ubuntu
Der LinuxMint und ubuntu Eintrag kommen aus dem ganzen config-hacking. Egal ob ich von "ubuntu" oder "LinuxMint" boote, es macht keinen Unterschied.
 
Zuletzt bearbeitet:
Ah okay, dann ist die Situation tatsächlich etwas komplizierter. Du hast Linux im EFI-Modus installiert, Windows aber nicht - dann ist auch klar, dass er die Datei nicht findet.

Jetzt müsste man Windows irgendwie dazu bringen, die Boot-Files auf die EFI-Partition zu schreiben. AFAIK geht das nur mit einer im EFI-Modus gestarteten Installations-DVD.

Da müsste man dann
- den Reparaturmodus starten
- und irgendwie "Startprobleme beheben" oder sowas auswählen.

Keine Garantie, dass das so direkt funktioniert - ich durfte den Blödsinn auch schon einmal machen, habe aber vergessen, welche Schritte genau nötig waren.
In jedem Fall aber sorgt das dafür, dass Windows alle anderen Boot-Einträge, die du da im efibootmgr-Output siehst, löscht - ein funktionierendes Linux-Live-System sollte man also unbedingt zur Hand haben, gerade auch für den Fall, dass etwas schief geht.
 
OK also Windows Install CD und Linux Live stick hab ich hier, kann es also machen, ich werd damit aber warten bis ich ein wenig zeit hab (bin momentan etwas beschäftigt). Berichte dann aber wie es gelaufen ist ;)
 
Zuletzt bearbeitet:
Zurück
Oben