Kernel lässt sich in UEFI von Grub laden, aber nicht von Gummiboot

ferda

New member
Registriert
6 März 2015
Beiträge
31
Hallo allerseits, ich habe auf meinem neuen L450 Arch Linux und Windows 8.1 frisch installiert, es klappt soweit auch ganz gut; es läuft ein reines UEFI, BIOS und CMS sind deaktiviert.

Ich habe als Bootmanager GRUB2 installiert, würde aber lieber Gummiboot verwenden. Das will aber nicht so recht klappen und mir gehen die Ideen aus.

Gummiboot an sich ist installiert und lässt sich starten, ich kann von dort aus auch Windows und die UEFI Shell laden, wenn ich aber Arch auswähle, bleibt der Bildschirm schwarz. Das gleiche geschieht auch, wenn ich den Kernel direkt von der UEFI Shell aus lade.

Kann mir da von euch jemand weiterhelfen?

Hier sind noch die relevanten Einstellungsdateien:

Code:
/boot/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=/dev/sda4 rw rootflags=subvol=@
Code:
#
# 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 ###
insmod part_gpt
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

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 load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

set menu_color_normal=light-blue/black
set menu_color_highlight=light-cyan/blue

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt 
insmod btrfs
set root='hd0,gpt4'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt4 --hint-efi=hd0,gpt4 --hint-baremetal=ahci0,gpt4  6200ad0a-358d-4f69-8f06-bd940c7b33bf
else
  search --no-floppy --fs-uuid --set=root 6200ad0a-358d-4f69-8f06-bd940c7b33bf
fi
    font="/@/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=de_DE
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
insmod part_gpt 
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  99B5-FC98
else
  search --no-floppy --fs-uuid --set=root 99B5-FC98
fi
insmod png
background_image -m stretch /archlinux.png
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=10
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-6200ad0a-358d-4f69-8f06-bd940c7b33bf' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt 
    insmod fat
    set root='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  99B5-FC98
    else
      search --no-floppy --fs-uuid --set=root 99B5-FC98
    fi
    echo    'Linux linux wird geladen …'
    linux    /vmlinuz-linux root=/dev/sda4 rw rootflags=subvol=@  quiet
    echo    'Initiale Ramdisk wird geladen …'
    initrd     /initramfs-linux.img
}
submenu 'Erweiterte Optionen für Arch Linux' $menuentry_id_option 'gnulinux-advanced-6200ad0a-358d-4f69-8f06-bd940c7b33bf' {
    menuentry 'Arch Linux, mit Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-6200ad0a-358d-4f69-8f06-bd940c7b33bf' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt 
        insmod fat
        set root='hd0,gpt1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  99B5-FC98
        else
          search --no-floppy --fs-uuid --set=root 99B5-FC98
        fi
        echo    'Linux linux wird geladen …'
        linux    /vmlinuz-linux root=/dev/sda4 rw rootflags=subvol=@  quiet
        echo    'Initiale Ramdisk wird geladen …'
        initrd     /initramfs-linux.img
    }
}

### END /etc/grub.d/10_linux ###

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

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (auf /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-99B5-FC98' {
    insmod part_gpt 
    insmod fat
    set root='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  99B5-FC98
    else
      search --no-floppy --fs-uuid --set=root 99B5-FC98
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
### 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  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

### BEGIN /etc/grub.d/60_memtest86+ ###
### END /etc/grub.d/60_memtest86+ ###
Code:
efibootmgr -v
BootCurrent: 0013
Timeout: 0 seconds
BootOrder: 0013,0015,0014,000C,0000,0001,0002,0003,0008,0007,0009,000A,000B,000D,0012
Boot0000  Setup    FvFile(721c8b66-426c-4e86-8e99-3457c46ab0b9)
Boot0001  Boot Menu    FvFile(126a762d-5758-4fca-8531-201a7f57f850)
Boot0002  Diagnostic Splash Screen    FvFile(a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380)
Boot0003  Lenovo Diagnostics    FvFile(3f7e615b-0d45-4f80-88dc-26b234958560)
Boot0004  Startup Interrupt Menu    FvFile(f46ee6f4-4785-43a3-923d-7f786c3c8479)
Boot0005  Rescue and Recovery    FvFile(665d3f60-ad3e-4cad-8e26-db46eee9f1b5)
Boot0006  MEBx Hot Key    FvFile(ac6fd56a-3d41-4efd-a1b9-870293811a28)
Boot0007* USB CD    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,86701296aa5a7848b66cd49dd3ba6a55)
Boot0008* USB FDD    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,6ff015a28830b543a8b8641009461e49)
Boot0009* ATA HDD0    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f600)
Boot000A* ATA HDD1    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f601)
Boot000B* ATA HDD2    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f602)
Boot000C* USB HDD    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,33e821aaaf33bc4789bd419f88c50803)
Boot000D* PCI LAN    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,78a84aaf2b2afc4ea79cf5cc8f3d3803)
Boot000E* IDER BOOT CDROM    ACPI(a0341d0,0)PCI(16,2)ATAPI(0,1,0)
Boot000F* IDER BOOT Floppy    ACPI(a0341d0,0)PCI(16,2)ATAPI(0,0,0)
Boot0010* ATA HDD    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,91af625956449f41a7b91f4f892ab0f6)
Boot0011* ATAPI CD    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,aea2090adfde214e8b3a5e471856a354)
Boot0012* PCI LAN    VenMsg(bc7838d2-0f82-4d60-8316-c068ee79d25b,78a84aaf2b2afc4ea79cf5cc8f3d3803)
Boot0013* GRUB    HD(1,800,40000,0cb49bbc-8895-415a-afda-9fc39cd92e87)File(\EFI\GRUB\grubx64.efi)
Boot0014* Windows Boot Manager    HD(1,800,40000,0cb49bbc-8895-415a-afda-9fc39cd92e87)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...3................
Boot0015* Linux Boot Manager    HD(1,800,40000,0cb49bbc-8895-415a-afda-9fc39cd92e87)File(\EFI\gummiboot\gummibootx64.efi)
Code:
lsblk -f
NAME   FSTYPE LABEL   UUID                                 MOUNTPOINT
sda                                                        
├─sda1 vfat           99B5-FC98                            /boot
├─sda2 ntfs   windows 39E927B441F77F58                     
├─sda3 ntfs   daten   64BE8C2D1B181F12                     
└─sda4 btrfs          6200ad0a-358d-4f69-8f06-bd940c7b33bf /var
Code:
parted -l
Modell: ATA ST500LM000-SSHD- (scsi)
Festplatte  /dev/sda:  500GB
Sektorgröße (logisch/physisch): 512B/4096B
Partitionstabelle: gpt
Disk-Flags: 

Nummer  Anfang  Ende    Größe   Dateisystem  Name                   Flags
 1      1049kB  135MB   134MB   fat32        EFI System             boot, esp
 2      135MB   75,3GB  75,2GB  ntfs         Windows                msftdata
 3      75,3GB  363GB   288GB   ntfs                                msftdata
 4      363GB   500GB   137GB   btrfs        Linux x86-64 root (/)
 
Gummiboot funktioniert nur bei deaktivierten SecureBoot.

Probiere es mal so:
Code:
/boot/loader/entries/arch.conf
title Arch Linux
efi  /vmlinuz-linux
initrd  /initramfs-linux.img
options root=/dev/sda4 rw rootflags=subvol=@
 
Ich erinnere mich aber deutlich, dass Gummiboot genau dafür – nämlich Secure Boot – entwickelt wurde ...:confused:
Zudem funktioniert doch meines Wissens unter Grub2 das Chainloading von Windows nur bei deaktiviertem SecureBoot, oder hat sich da mittlerweile was geändert?
 
Code:
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-6200ad0a-358d-4f69-8f06-bd940c7b33bf' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt 
    insmod fat
    [B]set root='hd0,gpt1'[/B]
    [...]
und
Code:
/boot/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options [B]root=/dev/sda4[/B] rw rootflags=subvol=@
Ich bin zwar alles andere als ein Bootloaderprofi, aber kann es sein, dass die Startdaten deines Arch auch auf der EFI-Partition (also /dev/sda0 bzw. 'hd0, gpt1') liegen?
 
und

Ich bin zwar alles andere als ein Bootloaderprofi, aber kann es sein, dass die Startdaten deines Arch auch auf der EFI-Partition (also /dev/sda0 bzw. 'hd0, gpt1') liegen?


Das sollte schon richtig sein, in dem Header von grub.cfg geht es darum, von wo Grub geladen wird. Er ist auf /dev/sda1 installiert (EFI-Partition, als /boot eingebunden).

Wenn Du in der grub.cfg weiter runterscrollst, kommt da bei „menuentry“ ebenfalls:
Code:
    echo    'Linux linux wird geladen …'
    linux    /vmlinuz-linux root=/dev/sda4 rw rootflags=subvol=@  quiet
    echo    'Initiale Ramdisk wird geladen …'
    initrd     /initramfs-linux.img
mit dem Bootparameter „root“ wird festgelegt, welche Partition als / eingebunden wird. Das wird aber (vermutlich?) erst relevant, wenn der Kernel geladen ist, was bei mir (anscheinend?) fehlschlägt.
 
Zuletzt bearbeitet:
Hi, ich nutz zwar kein Arch, aber ein Bootloader ist ein Bootloader - egal, was ich sagen will, warum steht da bei dir ne Devicenummer und nicht ne UUID?

Code:
 echo    'Linux 3.19.0-10-generic wird geladen …'
        linux    /boot/vmlinuz-3.19.0-10-generic root=UUID=f79a9222-f658-44d9-a3f9-682d32a733d1 ro recovery nomodeset 
        echo    'Initiale Ramdisk wird geladen …'
        initrd    /boot/initrd.img-3.19.0-10-generic
    }

Partitionbezeichnungen können sich ändern, ne UUID ist eindeutig und bleibt immer gleich (solange nicht neu partitioniert wird)

Grüßle

Frieder
 
Hi, ich nutz zwar kein Arch, aber ein Bootloader ist ein Bootloader - egal, was ich sagen will, warum steht da bei dir ne Devicenummer und nicht ne UUID?
Ich habe Grub von UUID auf den Partitionspfad umgestellt – bei nur einer Festplatte dürfte das herzlich egal sein.
Mit meinem Problem hat das aber nichts zu tun, da schon das Laden des Kernels fehlschlägt. Wenn der Kernel geladen wird, aber initrd falsch ist, kommt es zu einer Kernel Panic, bei einem falschen Parameter für „root“ sollte eine Rescue-Shell aufgehen.
Bei mir bleibt aber das Display schwarz und es passiert nichts weiter.
Weiß von euch vllt. jemand, wie man Gummiboot debuggen kann? Ich habe dazu im Netz (noch) nichts gefunden.
 
Also, die Lösung ist, dass das EFI von Lenovo einfach kein EFISTUB unterstützt.

Ich habe dieselbe Konstellation mit dem EFI von Virtualbox getestet, dort funktioniert es einwandfrei.
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben