Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

Summary

Add support for Intel-based Mac computers.

Rationale

Apple has moved all its Mac ranges to Intel hardware. These are different from normal Intel systems in a number of ways, including the use of EFI firmware and a different partition table format; they also have several peripherals not found on other systems. As of Edgy, Ubuntu can just about be installed on these systems but only with substantial difficulty, and a number of peripherals are not yet supported, leaving a poor impression.

Apple provides a BIOS compatibility layer called "Boot Camp" which relieves us from the necessity of supporting all of EFI immediately. At present, the framebuffer driver needed for native EFI operation is reported not to work properly, and booting without Boot Camp requires an HFS+ hybrid CD image, which we do not yet have the tools to produce (and it is a substantial amount of work). We will therefore only target Boot Camp for the time being.

Since many current Macs are based on the Intel Core 2 Duo processor architecture (i.e. EM64T, Ubuntu architecture name amd64), all these extensions will be applied to both i386 and amd64 architectures.

Design

Of the available boot loaders, none currently boots Intel-based Macs smoothly. The grub2 specification should deal with this; if it does not, we will make use of refit, which is known to work. [As it turns out, grub has now been patched to deal with Intel-based Macs, so we no longer need this step.]

EFI-based systems such as the Intel-based Macs use GPT (the GUID Partition Table format) rather than an MBR partition table. libparted already has support for this, but we will ensure that partman uses it by default on Intel-based Macs. [done, partman-base 100ubuntu3]

We will extend os-prober and grub-installer to be able to detect and boot Mac OS X on x86 systems. [not possible unless booting with EFI, so deferred]

Contrary to the EFI specification, Apple's EFI implementation and Boot Camp require that the legacy MBR partition table be in sync with the GPT. The refit package (in universe) provides a gptsync program to do this. We will create a gptsync-udeb package so that we can do this transparently in the installer. [done, and integrated in partman-efi 11ubuntu1; but also grub 0.97-20ubuntu3 should obviate the need for this]

Supporting Intel-based Macs in Ubiquity requires the implementation of ubiquity-advanced-partitioner in order to be able to support GPT. Since grub2 support has already been partially integrated into grub-installer (which is used in Ubiquity) in Debian, we expect boot loader installation to work smoothly if grub2 can be used; otherwise, we will extend Ubiquity to make use of whatever other boot loader installer package is needed. [grub works, so this is unnecessary]

The kernel team already has patches in hand to support the iSight and Apple Remote peripherals. [done, though you need a firmware extractor for iSight]

We need to support middle- and right-clicking despite the single-button mouse available on many Macs, but the kernel hack (mac_hid) that we have been using for this on powerpc is not available on the x86 architecture. Instead of working on this, we will switch to the more modern userspace package mouseemu, fixing the currently known bug in key event propagation that was preventing it from being used by default.

Notes

Gentoo installation instructions

Debian installation instructions for the macbook

Debian installation instructions for the macbook pro

I've booted with Fedora core 6 live cd (holding c on computer startup). Resolution was correctly detected on macbook core 2 duo without 915resolution. xorg.conf uses driver intel instead of i810 which apparently does automatic mode setting.

In order to support Macbook's hotkeys, pommed needs to be promoted to main and installed if a macbook is detected.


CategorySpec

IntelMacSupport (last edited 2008-08-06 16:29:27 by localhost)