First thing first. Backup all your partitions and installations. I had hard time installing Fedora 15 on my MacBook Pro 17″ (3,1 model, late 2007), which has three partitions, on which Snow Leopard, Window 7 and Fedora 14 are installed using rEFIt.

Booting and installation:

I initially tried an upgrade from Fedora 14 to 15. Booting from the CD/DVD (in my case DVD) or EFI was not possible because of a bug. So, still under Fedora 14, I copied the content of isolinux directory of Fedora 15 DVD to /boot directory and added a grub loader entry for Fedora 15 installation. Which looks like:

title Fedora 15 Installation
root (hd0,3)
kernel /f15/boot/vmlinuz
initrd /f15/bootinitrd

(hd0,3) is my /boot partition. /f15/boot is where I copied the isolinux’s contents under /boot partition. You can copy isolinux’s content anywhere you want, but better be under Linux partitions. Importance is mapping the right partition and directory in grub.conf file. I restarted, selected Linux from rEFIt and selected Fedora 15 Installation from grub bootloader of Fedora 14. Booting and installation (well, upgradation) went smooth. Alas, when I restarted the machine the newly upgraded Fedora 15 hanged. I tried everything humanly possible to make it work. But nothing happened.

So I decided to install Fedora 15 afresh. Thankfully, grub bootloader didn’t change the Fedora 15 Installation entry. So I booted from that, selected fresh Fedora 15 installation from the Anacoda installer. This time I opted for fresh partitioning and rearranging the partition structure.

I deleted all existing Linux partitions and created /boot with 500 MB and LVM with remaining space. Under the logical partition, I created swap with 4024 MB and “/” with remaining space (Don’t go with default partitioning. It allocates swap with 4024 MB and /home and “/” with 50:50 of remaining space, which makes the “50% ‘/’ space” not available to other users.).

The mistake I made this time was that I didn’t insert the DVD in the drive. After selecting network as eth0 for ethernet, I went for installation. Thinking that the DVD is still in  drive and wanting to install only the content of DVD, I refused to install from fedora and fedora updates repos, which resulted in installation failure. Ouch! Now, I have nothing in my Linux partitions except for two virgin /boot and LVM (with swap and “/“) partitions.

Now, the real pain started.

By the time, an EFI boot with grub shell has been installed on to my rEFIt.

However, booting from any of EFI boots (either from rEFIt or USB stick or DVD) resulted in booting hanging at “waiting for hardware to initialize”. Booting from CD/DVD resulted in booting hanging at:

1.
2.
Select CD-ROM Boot Type:

My observations why booting failed:

  1. Firmware problems in MacBook models made before 2008, mainly with 64 bit support. Or, may be even current models and 32 bit as well.
  2. Failure of graphics card detection, especially booting from CD/DVD or EFI under partitions other than Linux partitions. If booted from ext4 (of my Fedora 14) Anaconda installer worked perfectly! If booted from FAT, EFI, CD/DVD, Anaconda installer failed at hardware initialization.

Bottom line is ONLY IF booted from Linux Partitions (ext2, ext3 or ext4, in my case ext4, and I have not tested others) booting, hardware detection and initialization and installation go smooth. And the supposed bug is related to graphics card detection problem.

The workaround:

Copy isolinux’s content of Fedora 15 DVD to a USB stick under a directory, say /f15/boot. Insert the Fedora 15 installer DVD. Select either EFI boot from rEFIt or from DVD. Go to grub shell (in DVD boot press “e” in grub bootloader and then press “c” to go to grub command line.)

Issue the following grub commands.

grub:/> root (hd0,0)
grub:/> kernel /f15/boot/vmlinuz nomodeset
grub:/> initrd /f15/boot/initrd
grub:/> boot

Where (hd0,0) is USB sitck. Booting will not probe for hardware detection and thus will start with text based installation. Select appropriate language, partition (I let Anaconda installer delete any previous Linux partitions and create fresh partitions using that space, which starts from /dev/sda4), etc. The installation will start and it will not ask any inputs from user afterwards. This is a very minimal installation (around 200 packages got installed). But, now I got /boot partition on ext4 file system under /dev/sda4, i.e.: (hd1,3).

Warning: Post installation writes the grub bootloader on to /dev/sda1, i.e.: (hd0,0), which will destroy your Mac machines’ hard drive’s first partition, i.e.: EFI partition. Thankfully there was a USB stick inserted to my machine, which acted as /dev/sda1, i.e.: (hd0,0). So, better leave a USB stick inserted to the machine.

  • Now, select EFI boot of your USB stick, since the grub bootloader is installed on to your USB stick. Go to grub command line and change root from (hd0,0) to (hd1,x), where hd1 is your Mac’s hard drive and x is the partition number where /boot is located. In my case it’s /dev/sda4, i.e.: (hd1,3). And then press “b” for booting. The booting starts, which will be text based.
  • Once booted, go to root and install grub loader using “grub-install” command on to your first Linux partition. In my case it’s /boot partition, which is /dev/sda4. Copy the isolinux’s content from Fedora 15 DVD to a directory under /boot, say /f15/boot. Remove USB stick. Restart the machine.

Now, you will have a “Linux grub bootloader” on rEFIt under ext4 partition, thanks to “grub-install” command. Boot from it. You will get only a grub command shell. Issue the following commands.

grub:/> root (hd0,3)
grub:/> kernel /f15/boot/ vmlinux
grub:/> initrd /f15/boot/initrd
grub:/> boot

The booting will go smoothly and anaconda graphical installer starts as usual, since it’s booted from ext4 file system. Select /dev/sda4 for grub bootloader. The installation will be smooth. Complete the installation. Remove DVD. Restart the machine.

Voila, now you a have perfect Fedora 15 installed on your machine.

Next: Configuring Fedora 15 on MacBook Pro

Thanks for the read and please leave comments🙂