1

I have an old, white MacBook. Not sure if that is a 2009 or 2010 model, but I think it is the 2010 model. It has no macOS installed anymore (the partition was deleted) and as it cannot run any current macOS version to begin with (I think 10.11 is the last one it could run), I tried to install elementary OS on it instead.

I downloaded 5.1.7 Hera, made a bootable USB stick and was able to boot from the USB stick without issues. I ran the installer and everything seem to be working fine. Except when I try to boot the installed system, I only get a very dark gray screen, then after a short while a black screen, and nothing else happens. No boot logo, no boot menu, and the system does not react to any keyboard input (e.g. CTRL+ALT+FN+F1 does nothing).

I can only open the GRUB prompt by pressing ESC during boot but I don't know what to do there. I tried to boot in recovery mode but that only shows more boot messages and finally also ends up in a black screen.

In an attempt to work around, I downloaded rEFInd and made a bootable USB stick from it. I can boot into the rEFInd boot menu without problems. There I can choose to boot either

EFI\ubuntu\grubx64.efi

which shortly displays some text on screen, so that's more than when booting without rEFInd, but no GRUB boot menu and it's displayed way too short to be readable. After that the same behavior as before.

Or I can choose to boot

boot/vmlinuz-5.4.0-60-generic

which shows the normal text messages of a booting Linux kernel, so it seems the kernel is loading and initializing just fine, followed by text output of system services starting (looks familiar if you know other Linux systems - I guess these are from systemd) but at the end, the screen goes black again and that's it.

rEFInd allows me to pass boot options to either GRUB or the Linux kernel.

  • I tried to pass nomodeset to either one, no effect.
  • I tried to pass nouveau.modeset=0 to either one, no effect.
  • I tried to pass the following to either one, without any effect: i8042.nomux=1 i8042.reset i915.lvds_channel_mode=2 i915.modeset=1 i915.lvds_use_ssc=0

These are all the solutions I found here when searching for similar problems yet none of these worked. I'm somehow lost.

Note that I can run the live system without any problems, so if you want me to boot into that system and perform some commands to get further debug info or to change the installed system, this is no problem. As you may have noticed, I'm very tech-savvy but not an expert for debugging Linux boot issues.

Update

Without quiet splash in GRUB I get the same behavior as when using rEFInd and directly boot boot/vmlinuz-5.4.0-60-generic: I see the kernel boot messages, I see systemd starting up services (no indication of any start up failure) and then the screen goes black and that's it. Everything is displayed way too short to be captured or even read.

I suspect the problem is the graphics driver. It seem that the system freezes the moment it tries to bring up a graphical UI. Not only it will fail to bring up this mode, it also kills the keyboard somehow and thus no shortcuts work (like switching to a text console again).

Is there a way not to boot into graphical UI to debug, read logs or try different configs? I read somewhere that you can add a legacy run level at the end of the config string in Ubuntu and when you add 3 after all options, you are not booting into UI mode but this doesn't seem to work for me, I still get a black screen that way.

3 Answers 3

2

I just figured out how to do this on Friday for my wife's 2010 Macbook7,1. You are correct that this is an issue with the graphics drivers. A bug in Apple's EFI leads to the graphics card not being initialized correctly and subsequent loading of the proprietary Nvidia drivers fails. The blank screen of death doesn't occur when using the Nouveau drivers. This presents a couple different ways to solve your problem which I enumerate below.

Option #1: Legacy BIOS

You can install elementary OS in legacy BIOS mode in which case the graphics drivers are initialized correctly and brightness controls will work sometimes but not reliably right now. The instructions to do this are as follows.

  1. Boot the installation media as usual.

  2. Proceed through the installation as normal.

  3. On the Updates and other software dialog, check the box next to Install third-party software for graphics... to install the Nvidia drivers.

Install third-party software

  1. On the Installation type dialog, select Something else and click Continue.

Installation Type Something Else

  1. Next you will be presented with the partitions of the attached disks.

Initial Partitions

  1. In my case, /dev/sda is the disk in my machine and already contains several partitions for an existing operating system. I'm just going to irreversibly destroy all of that and install elementaryOS on the disk. Select your device, /dev/sda in my case here, and then press New Partition Table button and confirm the next prompt.

Empty Partition Table

  1. This step is the important one to ensure that the system boots in legacy BIOS compatibility mode. Select the free space row under your disk and click the plus symbol in the bottom left. Now create a 1 MiB partition with the type Reserved BIOS boot area.

Create Reserved BIOS Boot Area

  1. Click Okay and your partition table should now look similar to what is shown here.

Created Reserved BIOS Boot Area

  1. At this point, you can partition the rest of your disk however you like. Below is an example of what your final partition table might look like. I chose to encrypt my installation and use btrfs instead of the default ext4 filesystem. Make sure not to create an EFI partition.

Final Partition Table

  1. Select Install Now when you are satisfied.

Write the Changes to Disks

  1. A dialog will warn you that No EFI System Partition was Found but go ahead and click Continue.

No EFI System Partition was Found

  1. Now complete the installation as normal and reboot.

  2. The system should boot without a problem. Of course, there are a couple of finicky things to fix still.

  3. Edit /etc/default/grub and uncomment and set GRUB_GFXMODE to 1280x800 to fix the resolution of the boot splash screen.

GRUB_GFXMODE=1280x800
  1. Update grub for these changes to be applied at the next boot.
$ sudo update grub
  1. Now, create a new file /etc/X11/xorg.conf.d/20-nvidia.conf to apply some X settings for the Nvidia drivers. The file should look like what is shown here.
Section "Device"
        Identifier "Nvidia Card"
        Driver "nvidia"
        VendorName "NVIDIA Corporation"
        BoardName "GeForce 320M"
        Option "NoLogo" "1"
        Option "RegistryDwords" "EnableBrightnessControl=1"
EndSection

This disables the tacky Nvidia splash screen and also enables brightness controls.

  1. Restart for these changes to take effect.

Since you've installed in BIOS mode, you can easily switch between the proprietary and free drivers safely. In AppCenter, just open the Installed tab and near the top will be an option for the Nvidia drivers which can be uninstalled and reinstalled at will.

Option #2: Patch the Bootloader

It's possible to get the drivers working in EFI mode by having the bootloader initialize the graphics card instead. This solution is described in the Debian Wiki here under the section Black screen fix (EFI mode). I was unable to get Linux to recognize the appropriate backlight driver when using this method so controlling the screen's brightness isn't possible. The brightness does work with a kernel parameter when booting in legacy BIOS compatibility mode. If you are unable to boot into your system at all like I was, you will need to boot the installation media, select Try elementary OS, mount your installed partitions, and chroot into the installation before following these instructions. The chroot process is described in the Debian Wiki here.

Patching Grub

The Grub bootloader can be patched using the following instructions.

  1. Create a Grub script which initializes the graphics card.
$ echo "setpci -s \"$(sudo lshw -businfo -class bridge -class display | awk '/MCP89 PCI Express Bridge/ {gsub("pci@0000:", "", $1); print $1}')\" 3e.b=8" | sudo tee /etc/grub.d/01_enable_vga.conf
setpci -s "00:17.0" 3e.b=8
$ echo "setpci -s \"$(sudo lshw -businfo -class bridge -class display | awk '/MCP89 GeForce 320M/ {gsub("pci@0000:", "", $1); print $1}')\" 04.b=7" | sudo tee -a /etc/grub.d/01_enable_vga.conf
setpci -s "02:00.0" 04.b=7
  1. Set the appropriate permissions for the Grub script.
$ sudo chmod 755 /etc/grub.d/01_enable_vga.conf
  1. Update Grub.
$ sudo update-grub
  1. If you're chrooted in to your installation, leave the chroot.
$ exit
  1. Reboot.
$ systemctl reboot
  1. If you are using rEFInd, make sure to choose the option for EFI\ubuntu\grubx64.efi to boot Grub via EFI.

Option #3: Nouveau

Removing the proprietary Nvidia drivers and using the Nouveau drivers will boot and function in either EFI or legacy BIOS mode but this is not ideal. My wife's Macbook experiences frequent hangs and complete crashes when using this particular Macbook with the Nouveau drivers when booting in EFI mode, particularly under X11. I suspect that the Nouveau drivers function much better under legacy BIOS, but I haven't tested this yet. My experience with the Nouveau drivers and the Epiphany browser aren't the greatest either. I can deterministically crash the entire operating system by opening GitHub's homepage in Epiphany when using the Nouveau drivers due to the 3D acceleration. The laptop also runs much hotter than it does when using the proprietary drivers. That said, Nouveau drivers tend to integrate much better with desktop environments.

See also

I also recommend looking into mbpfan and TLP to get the most out of your Macbook.

4
  • Interesting... I will see if I can patch the Bootloader. Booting the Live-CD works without an issue, so this might be possible. I will let you know about the results.
    – Mecki
    Commented Jan 26, 2021 at 22:16
  • I wasn't able to get the brightness controls working when using the EFI boot mode. I've since figured out how to install so that elementaryOS is booted in legacy BIOS compatibility mode and will be updating my post with the necessary instructions on how to do so in the near future. It's also more straightforward since no chroot is required.
    – jwillikers
    Commented Feb 4, 2021 at 13:37
  • Do you know if the system did not even notice that the brightness control keys were pressed or was it just not able to actually set another brightness level? Or let's put it that way: Was there a way to test if setting brightness in software would have worked? As not being able to regulate brightness at all is indeed a killer, in that case I'd also try the legacy setup.
    – Mecki
    Commented Feb 7, 2021 at 22:40
  • So, in EFI mode no backlight was registered in /sys/class/backlight while in BIOS mode apple_backlight is at least registered and tapping the brightness keys shows the brightness bar move up and down. Sometimes the system works and this actually effects the backlight and other times it doesn't. The good news is that the brightness controls for the Nouveau drivers work reliably. Just open the Installed page in AppCenter. Near the top the Nvidia drivers will show up and you can uninstall them right there. You can reinstall in the future in the same way.
    – jwillikers
    Commented Feb 8, 2021 at 13:15
0

Since boot does not halt at grub, your os is booting. Since its mac and all, i expect (gpu) driver faults.

You might try esc or f2 when booting to switch from the splash screen to boot output text. This might show where it fails.

Otherwise try in the grub prompt to remove the quiet splash entries.

Post any output you might find back here.

2
  • Without quiet splash I get the same as when using rEFInd and directly boot boot/vmlinuz-5.4.0-60-generic: I see the kernel boot messages, I see systemd starting up services and then the screen goes black and that's it.
    – Mecki
    Commented Jan 17, 2021 at 13:53
  • Its little detail you pass on. So hard to tell what is amiss. I would suggest try to repair/ install grub, as explained here: howtoubuntu.org/…
    – odin
    Commented Jan 17, 2021 at 14:01
0

I have installed with no problems ElementaryOS on a MacBook Pro 15" Retina from 2012. I have also a white MacBook from 2009 ? (not sure). My problem whit this machine is that is NOT ABLE to boot Legacy OSes from USB :-( I

I am blocked in this point. Have you maked anything to start from usb on yours ?

Best regards,

Joan
3
  • Hi Joan, you might want to make this a new question so that it gets proper attention.
    – jwillikers
    Commented Feb 9, 2021 at 13:54
  • Also, how did you create your USB installer? Most Linux installers, including elementary OS, should work with both UEFI and legacy BIOS computers.
    – jwillikers
    Commented Feb 9, 2021 at 13:55
  • Yeah ! I have created the USB from Linux and problem solved. Now it'is installing the files and in a couple of minutes it will be rebooted. We will see what happens ... Many thanks !!
    – FurkaPass
    Commented Feb 9, 2021 at 20:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.