You are not logged in.

#1 2013-11-24 05:24:00

hippieben
Member
Registered: 2013-10-27
Posts: 195

GRUB - Can boot efi but not BIOS

Background:
I am running a MacBook Pro 8,2 which has AMD/Intel hybrid graphics, however the intel card only works when booted via efi and the ATI card only works when booted via Apple's BIOS emulation, and unfortunately video out only works with the ATI card.  Currently I am booting via grub-efi and everything is fine.  However if I try to boot through the BIOS I get a Kernel error saying the rootfs (identified by UUID) cannot be found (at this point fsck would normally run). 

What I've done to get to this point:

1.  Installed xf86-video-ati
2.  Ran

grub-install --target=i386-pc --recheck /dev/sda

2a. 

[ben@ben grub]$ ls
fonts     grub.cfg.example  grub.gfc        i386-pc  themes
grub.cfg  grubenv           grub_intel.cfg  locale   x86_64-efi

note: there are some extra files (grub.gfc and grub_intel.cfg)
3.  Added an appropriate grub menuentry (copied the fallback entry)
4.  Restarted with option key held which brought me to GRUB with the proper config file & menu entries
5.  Get to kernel boot readout with error which lists the proper UUID for root from the grub.cfg file.

As you can see, the UUIDs match between all entries, so I'm not sure what's going on here

[ben@ben grub]$ sudo cat grub.cfg
[sudo] password for ben: 
#
# 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
insmod part_msdos
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
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  485b95dc-f8de-4edd-96ad-b441988586a0
else
  search --no-floppy --fs-uuid --set=root 485b95dc-f8de-4edd-96ad-b441988586a0
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
fi
terminal_input console
terminal_output gfxterm
set timeout=5
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux, with Linux core repo kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-485b95dc-f8de-4edd-96ad-b441988586a0' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        set gfxmode=${GRUB_GFXMODE}
        outb 0x728 1
        outb 0x710 2
        outb 0x740 2
        outb 0x750 0
        load video
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  485b95dc-f8de-4edd-96ad-b441988586a0
        else
          search --no-floppy --fs-uuid --set=root 485b95dc-f8de-4edd-96ad-b441988586a0
        fi
        echo    'Loading Linux core repo kernel ...'
        linux   /boot/vmlinuz-linux root=UUID=485b95dc-f8de-4edd-96ad-b441988586a0 rw  quiet radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2 i915.lvds_use_ssc=0 i915.i915_enable_rc6=1
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initramfs-linux.img
}
menuentry 'Arch Linux, ATI' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-485b95dc-f8de-4edd-96ad-b441988586a0' {
        load_video
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  485b95dc-f8de-4edd-96ad-b441988586a0
        else
          search --no-floppy --fs-uuid --set=root 485b95dc-f8de-4edd-96ad-b441988586a0
        fi
        echo    'Loading Linux core repo kernel ...'
        linux   /boot/vmlinuz-linux root=UUID=485b95dc-f8de-4edd-96ad-b441988586a0 rw  quiet radeon.dpm=1
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initramfs-linux.img
}
menuentry 'Arch Linux, with Linux core repo kernel (Fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-485b95dc-f8de-4edd-96ad-b441988586a0' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  485b95dc-f8de-4edd-96ad-b441988586a0
        else
          search --no-floppy --fs-uuid --set=root 485b95dc-f8de-4edd-96ad-b441988586a0
        fi
        echo    'Loading Linux core repo kernel ...'
        linux   /boot/vmlinuz-linux root=UUID=485b95dc-f8de-4edd-96ad-b441988586a0 rw  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initramfs-linux-fallback.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 ###
### 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+ ###

Offline

#2 2013-11-26 01:53:49

cfr
Member
From: Cymru
Registered: 2011-11-27
Posts: 5,675

Re: GRUB - Can boot efi but not BIOS

I don't know whether it would be different, but did you consider generating a new grub.cfg in case there's something different for BIOS?

It might be easier to use different boot loaders for EFI and BIOS to avoid things getting this confusing.

Take quiet out of the command line to get more output.

Did you check whether you initramfs needed to be regenerated?


How To Ask Questions The Smart Way | Help Vampires

Arch Linux | x86_64 | GPT | EFI boot | grub2 | systemd | LVM2 on LUKS
Lenovo x121e | Intel(R) Core(TM) i3-2367M CPU @ 1.40GHz GenuineIntel | Intel Centrino Wireless-N 1000 | US keyboard with Euro | 320G 7200 RPM Seagate HDD

Offline

#3 2013-11-27 01:57:06

hippieben
Member
Registered: 2013-10-27
Posts: 195

Re: GRUB - Can boot efi but not BIOS

cfr wrote:

I don't know whether it would be different, but did you consider generating a new grub.cfg in case there's something different for BIOS?

It might be easier to use different boot loaders for EFI and BIOS to avoid things getting this confusing.

Take quiet out of the command line to get more output.

Did you check whether you initramfs needed to be regenerated?

Rebuilt kernel image, same result.

8fgz8nW.jpg

Last edited by hippieben (2013-11-27 01:57:52)

Offline

#4 2013-11-27 02:16:40

srs5694
Member
From: Woonsocket, RI
Registered: 2012-11-06
Posts: 719
Website

Re: GRUB - Can boot efi but not BIOS

A quick Web search turned up this Arch bug report. I've just skimmed it, though, and it seems to be related to the keyboard, not the disk device:

https://bugs.archlinux.org/task/27555

Try the following diagnostics:

  • Type "ls -l /dev/sd*" to see what disk devices are identified by the kernel. If you see none when you don't have any USB disk devices plugged in, then the kernel isn't detecting your hard disk. If you do see a device, use fdisk, gdisk, or parted to verify its size and therefore positively identify it as your hard disk (or as not your hard disk).

  • Type "dmesg | less" and search for messages related to the hard disk devices. There may be a clue about why it's not showing up, if it's not, or about why partitions aren't being detected even if the disk itself is.

There may be a way to get the ATI video working in EFI mode, but I'm not an expert on this topic, which tends to vary a lot from one machine to another.

Offline

#5 2013-11-27 02:23:54

cfr
Member
From: Cymru
Registered: 2011-11-27
Posts: 5,675

Re: GRUB - Can boot efi but not BIOS

Do you get the message about the controller when you boot in EFI mode? [EDIT: I am guessing if so, it is the keyboard thing - I found the same bug report, I think. EDIT 2: Different bug report but probably the same problem.]

Did you try creating a fresh config with the bios version installed to disk?

You said that one card only worked when you booted in BIOS mode. How can you boot in BIOS mode, then? That is, what does work?

EDIT: Don't know if https://bbs.archlinux.org/viewtopic.php … 6#p1139226 is in any way related.

Last edited by cfr (2013-11-27 02:32:41)


How To Ask Questions The Smart Way | Help Vampires

Arch Linux | x86_64 | GPT | EFI boot | grub2 | systemd | LVM2 on LUKS
Lenovo x121e | Intel(R) Core(TM) i3-2367M CPU @ 1.40GHz GenuineIntel | Intel Centrino Wireless-N 1000 | US keyboard with Euro | 320G 7200 RPM Seagate HDD

Offline

#6 2013-11-27 02:29:11

hippieben
Member
Registered: 2013-10-27
Posts: 195

Re: GRUB - Can boot efi but not BIOS

srs5694 wrote:

A quick Web search turned up this Arch bug report. I've just skimmed it, though, and it seems to be related to the keyboard, not the disk device:

https://bugs.archlinux.org/task/27555

Try the following diagnostics:

  • Type "ls -l /dev/sd*" to see what disk devices are identified by the kernel. If you see none when you don't have any USB disk devices plugged in, then the kernel isn't detecting your hard disk. If you do see a device, use fdisk, gdisk, or parted to verify its size and therefore positively identify it as your hard disk (or as not your hard disk).

  • Type "dmesg | less" and search for messages related to the hard disk devices. There may be a clue about why it's not showing up, if it's not, or about why partitions aren't being detected even if the disk itself is.

There may be a way to get the ATI video working in EFI mode, but I'm not an expert on this topic, which tends to vary a lot from one machine to another.

I'm considering the controller error to be irrelevant as it shows up in EFI boot but doesn't cause anything to not work.  No disk devices were found when running ls -l /dev/sd* at kernel recovery prompt.  dmesg | less didn't tell me anything useful as I have no way to scroll the console (apple keyboard has no scroll lock).  I'd really like to be able to get the ATI card working in EFI boot, but I've never been able to figure it out despite trying many many times in many many distros.

Last edited by hippieben (2013-11-27 02:30:21)

Offline

#7 2013-11-27 02:32:47

hippieben
Member
Registered: 2013-10-27
Posts: 195

Re: GRUB - Can boot efi but not BIOS

cfr wrote:

Did you try creating a fresh config with the bios version installed to disk?

You said that one card only worked when you booted in BIOS mode. How can you boot in BIOS mode, then? That is, what does work?

What do you mean by creating a fresh config with the bios version installed to disk?  Do you mean grub.cfg?  I did delete grub.cfg and run grub-update with no different results, not sure why I didn't include that in the post.  As far as only one card working under BIOS, that's just a fact of this hardware.

Offline

#8 2013-11-27 02:34:30

cfr
Member
From: Cymru
Registered: 2011-11-27
Posts: 5,675

Re: GRUB - Can boot efi but not BIOS

I cross-posted a thread link with yours. That seems to concern the opposite issue (BIOS -> EFI) but it does concern a similar error on Macs and the solution looks potentially harmless, at least.


How To Ask Questions The Smart Way | Help Vampires

Arch Linux | x86_64 | GPT | EFI boot | grub2 | systemd | LVM2 on LUKS
Lenovo x121e | Intel(R) Core(TM) i3-2367M CPU @ 1.40GHz GenuineIntel | Intel Centrino Wireless-N 1000 | US keyboard with Euro | 320G 7200 RPM Seagate HDD

Offline

#9 2013-11-27 02:46:46

hippieben
Member
Registered: 2013-10-27
Posts: 195

Re: GRUB - Can boot efi but not BIOS

cfr wrote:

I cross-posted a thread link with yours. That seems to concern the opposite issue (BIOS -> EFI) but it does concern a similar error on Macs and the solution looks potentially harmless, at least.

No luck sad

Offline

#10 2013-11-27 03:06:08

cfr
Member
From: Cymru
Registered: 2011-11-27
Posts: 5,675

Re: GRUB - Can boot efi but not BIOS

hippieben wrote:
cfr wrote:

Did you try creating a fresh config with the bios version installed to disk?

You said that one card only worked when you booted in BIOS mode. How can you boot in BIOS mode, then? That is, what does work?

What do you mean by creating a fresh config with the bios version installed to disk?  Do you mean grub.cfg?  I did delete grub.cfg and run grub-update with no different results, not sure why I didn't include that in the post.  As far as only one card working under BIOS, that's just a fact of this hardware.

What distro are you using? There is no grub-update in Arch's grub package.


How To Ask Questions The Smart Way | Help Vampires

Arch Linux | x86_64 | GPT | EFI boot | grub2 | systemd | LVM2 on LUKS
Lenovo x121e | Intel(R) Core(TM) i3-2367M CPU @ 1.40GHz GenuineIntel | Intel Centrino Wireless-N 1000 | US keyboard with Euro | 320G 7200 RPM Seagate HDD

Offline

Board footer

Powered by FluxBB