EFI Grub2 Multiboot HowTo

who93

Member
Themenstarter
Registriert
5 Mai 2010
Beiträge
324
1)Erstellen der EFI System Partition





Falls ihr Windows 7 installiert habt, dann wurde die Partition bereits erstellt und ihr könnt zu Punkt 2 gehen.





EFI benötigt zum Booten eine kleine FAT32 Partiton. Diese kann entweder mit GNU Parted/GParted oder mit Gdisk erstellt werden. Wichtig dabei ist, dass die FAT32 Partition ca. 200 MB groß ist und die Flag „boot“ besitzt.

Mit GParted:

Wählt eure Festplatte, klickt auf Neu und erstellt einen neue Partition:

gparted3.jpeg

Dannach klickt auf Partition, Markierung bearbeiten und setzt den Boot-Flag:

gparted1.jpeg

So sollte die Partition dann ausschauen:

gparted2.jpeg

2) Installation von Grub

Installiert das Grub 2 EFI Paket für eure Distribution:

Code:
# apt-get install grub-efi-amd64

Dannach wird die erstellte EFI System Partition gemountet und ein neues Verzeichnis erstellt:

Code:
# mkdir /boot/efi

Mounten der Partition:

Code:
# mount /dev/sda1 /boot/efi

Falls ihr nicht wisst, welche Partition die EFI System Partition ist, installiert euch parted und lasst euch mit view alle Partitionen anzeigen.
Code:
[LEFT](parted) print


Model: ATA SAMSUNG HD502HJ (scsi)
[/LEFT]


     
[LEFT]Disk /dev/sda: 500GB

Sector size (logical/physical): 512B/512B[/LEFT]



    [LEFT]Partition Table: gpt
[/LEFT]


         
[LEFT]Number  Start   End    Size    File system     Name                          Flags

 1      1049kB  106MB  105MB   fat32           EFI system partition          boot
[/LEFT]


     
[LEFT] 2      106MB   240MB  134MB                   Microsoft reserved partition  msftres
[/LEFT]


     
[LEFT] 3      240MB   121GB  120GB   ntfs            Basic data partition

 6      121GB   270GB  149GB                   Daten

 5      270GB   278GB  8000MB  linux-swap(v1)
[/LEFT]


     
[LEFT] 4      278GB   500GB  222GB   ext4[/LEFT]

Erstellt euch, falls noch nicht vorhanden, das Verzeichnis /boot/efi/EFI



Code:
# mkdir -p /boot/efi/EFI

Jetzt geht es an die eigentliche Installation von Grub:




Code:
# modprobe dm-mod   

# grub-install --boot-directory=/boot/efi/EFI --bootloader-id=grub --no-floppy --recheck



Als Letztes werden noch die von EFI benötigten Schriftarten kopiert und die Config erstellt:



Code:
# cp /usr/share/grub/unicode.pf2 /boot/efi/EFI/grub
[LEFT] # grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg
[/LEFT]
3)Grub im EFI-Menü anzeigen lassen



Der letzte Schritt ist, dass Grub im EFI-Menü angewählt werden und gestartet werden kann. Da aber dazu das Betriebsystem (in meinem Fall Debian) bereits im EFI-Modus gestartet werden muss, muss eine EFI-Applikation erstellt werden:
Code:
    [LEFT]# grub-mkimage -d /usr/lib/grub/x86_64-efi -O x86_64-efi -p "" -o /boot/efi/EFI/grub/grub_custom.efi part_gpt fat iso9660 udf normal chain linux ls search search_fs_file search_fs_uuid search_label help boot configfile echo efi_gop
[/LEFT]

Nun startet in das EFI-Menü im erweiterten Modues, geht auf Beenden und wählt: EFI Shell aus Datenträger starten. Nach kurzem Laden sollte Grub 2 starten. Jetzt seit ihr im EFI-Modues in eurem Betriebsystem. Um Grub in das EFI-Menü aufzunehmen macht ihr folgendes:​



Code:
[LEFT]# grub-probe --target=device /boot/efi/efi/grub/grub.efi
[/LEFT]
Code:
[LEFT]# modprobe efivars
[/LEFT]
Falls ihr beim Laden von efivars eine Fehlermeldung bekommen habt, seit ihr nicht im EFI-Modus oder euer Kernel unterstützt efivars nicht. Euer Kernel sollte folgende Module haben:​



Enable CONFIG_EFI,CONFIG_FB_EFI,CONFIG_EFI_VARS,CONFIG_EFI_PARTITION



Code:
[LEFT]# efibootmgr --create --gpt --disk /dev/sda --part 1 --write-signature --label "GRUB2" --loader "\\EFI\\grub\\grub.efi"
[/LEFT]
Bei label könnt ihr den Namen wählen, den ihr im EFI-Menü angezeigt bekommen wollt.​



Nun startet euer Betriebsystem neu und wählt im EFI-Menü GRUB2, falls Grub nicht starten sollte, probiert folgendes:​



Code:
[LEFT]cp /boot/efi/efi/grub/grub.efi /boot/efi/shellx64.efi
[/LEFT]
oder​



Code:
[LEFT]cp /boot/efi/efi/grub/grub.efi /boot/efi/EFI/shellx64.efi
[/LEFT]
oder



Code:
[LEFT]cp /boot/efi/efi/grub/grub.efi /boot/efi/EFI/shell/shellx64.efi
[/LEFT]
4) Bugs



Wenn ihr beim Booten folgende Meldung bekommt:

error: no suitable mode found
Booting however



Kopiert


Code:
# cp /usr/share/grub/unicode.pf2 /boot/efi/efi/grub/
und fügt​


Code:
[LEFT]insmod efi_gop
 insmod efi_uga
 insmod font

 if loadfont ${prefix}/unicode.pf2
 then
     insmod gfxterm
     set gfxmode=auto
     set gfxpayload=keep
     terminal_output gfxterm
 fi
[/LEFT]
in /boot/efi/EFI/grub/grub.cfg hinzu.​



5) Windows 7 in Grub 2 aufnehmen



Falls Windows schon installiert ist, müsst ihr nur noch die UUID in der FAT32 Partition des Windows Bootmanagers finden.​



Code:
[LEFT]# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi

088f-0db9
[/LEFT]
Jetzt könnt ihr den Menüeintrag in /boot/efi/EFI/grub/grub.cfg vornehmen:​



Code:
[LEFT]menuentry "Windows x86_64 UEFI-GPT" {
    search --fs-uuid --no-floppy --set=root [COLOR=#000000]088f-0db9[/COLOR]
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
[/LEFT]
6) Quellen​









 
Zuletzt bearbeitet:
Sehr schön. Magst Du das nicht ins Wiki tun? :D

Ich werde es mal im Ubuntu Sticky verlinken, die Pakete gibt es dort auch.
 
klar, kann ich machen
irgendwem nach Rechtschreibfehler aufgefallen?
 
hi,

ich bin haargenau nach anleitung vorgegangen (denke ich ;) ) und lande beim rebooten leider bei einer grub rescue shell mit dem fehler error: file not found!

Kann mir jemand sagen was ich falsch gemacht haben könnte?
Meine grub.cfg sieht solgendermaßen aus.
Code:
root@ubuntu:/# cat /boot/efi/grub/grub.cfg 
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#


### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi


function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}


function recordfail {
  set recordfail=1
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}


function load_video {
true
}


insmod part_gpt
insmod ext2
set root='(hd0,gpt4)'
search --no-floppy --fs-uuid --set=root 8a57f569-8c1b-4ca7-9ff1-14232baae52d
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###


### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 0,71,115; then
  clear
fi
### END /etc/grub.d/05_debian_theme ###


### BEGIN /etc/grub.d/10_linux ###
if [ ${recordfail} != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
if [ "$linux_gfx_mode" != "text" ]; then load_video; fi
### END /etc/grub.d/10_linux ###


### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###


### BEGIN /etc/grub.d/20_memtest86+ ###
### END /etc/grub.d/20_memtest86+ ###


### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###


### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###


### BEGIN /etc/grub.d/41_custom ###
if [ -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
root@ubuntu:/#

Ich habe kein Thinkpad, ich hoffe das ist kein Problem?
Bin für jede Hilfe mehr als dankbar, da ich bereits seit mehr als einer Woche an diesem Problem sitze...

/edit:
ich glaube einen fehler in der anleitung gefunden zu haben:
Code:
grub-install --boot-directory=/boot/efi/EFI --bootloader-id=grub --no-floppy --recheck
da sollte root-directory statt boot-directory stehen. dann lande ich zumindest nichtmehr in der grub rescue sondern in grub>
 
Zuletzt bearbeitet:
EFI Grub2 Multiboot

Hallo Lesende,

kann mir jemand die Vorteil von "EFI Grub2 Multiboot" erklären?
Wann setzt man es ein?

Danke.

MfG

xsid
 
m.E. gibt es keinen Vorteil.
...und, man wird es nur einsetzen müssen, wenn der "Bios"-Hersteller des Computer einem keine andere Wahl läßt...
 
damit die obige anleitung bei mir funktioniert (kubuntu 11.10, samsung rv520) muss (EFI-Partition)/EFI/grub nach /boot/grub gemountet werden da dieser Pfad in grub-mkconfig hardcoded ist!
 
wenn ich ubuntu neben windows 10 installieren will, in wie weit muss ich dan grub vor oder nach der installation von ubuntu nach oben gezeigten parametern konfigurieren? und was muss ich für grub und efi boot partition bei dem installer von ubnuntu angeben?
 
Normalerweise gar nichts. Windows wird automatisch durch den os-prober erkannt und bei grub-mkconfig bzw. update-grub zum Menü hinzugefügt.
 
.... und was muss ich für grub und efi boot partition bei dem installer von ubnuntu angeben?

Wie SammysHP schon erwähnte, nix - boß die Finger von der EFI-Partition lassen, das solltest du.

Der Installer von Ubuntu findet das alleine und auch Grub wird automatisch richtig installiert.

Aber falls du es genauer brauchst, dann mach bitte ein eigenes Thema dazu auf - dort postest du dann am besten gleich die Terminalausgaben von
Code:
sudo parted -l

[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
jeweils in nem Codeblock.

Wie gesagt, bei Bedarf in nem eigenen Thread.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben