Translation(s): русский


This page describes how to install Debian on a MacBook Pro.

Most points are the same like the MacBook so we point out the differences only.

Status Updates

Other Resources

Install Debian

See the MacBook Install Debian section.

If the kernel panics when you press return at the ISOLINUX prompt, enter "install noapic" at the ISOLINUX prompt (the kernel may panic while enabling the IO-APIC IRQs, bug 381719).

For MacBook Pro 13 (7,1)

(Obsolete with squeeze) Current installer can not install. But you can use Iwamatsu's D-I.

For MacBook Pro 13 (8,1)

First of all, it is important that you read carefully the MacBook Install Section of Debian Wiki, so that you can prepare your Macbook Pro, and understand the terms needed for proceeding with the installation.

Note that the current Debian installer can not install, because it is not able to load the components from the cdrom (I was able to install Debian in Dualboot scheme). However, it is possible to proceed using a usb driver in which you'll dump all the archives of the same iso image used for burning the cdrom for making the installation and "cheating" the debian installer by mounting the USB in /cdrom as follows:

  1. Prepare the USB driver. For this, you'll need the same ISO that you used for burning the cdrom and execute (I did it with netinst image of Debian Testing):
    dd if=debian.iso of=/dev/disk1
    Where /dev/disk1 correspond to your USB. Note that you can do this even in Mac OS X or other linux machine.
  2. Proceed with the installation following the MacBook Install Section of Debian Wiki. It is important to boot with the USB attached to your Macbook Pro (if you don't do it like this, it may fail for mounting the device in /cdrom). But for installing, you are going to choose the cdrom as installer medium and not the USB.

  3. When the installer tries to load the components of the cdrom, it will fail. Now, open a TTY by executing Ctrl + Alt + F2, and mount the USB in /cdrom as follows:
    mount /dev/sdX /cdrom
    Where sdX should correspond to your device. Sometimes it can fail to mount the USB drive. If it doesn't work for you, then try to unplug the USB and plug it again. It should work.

    Note: If you boot directly from the USB medium the installer automatically detects the components as it were a CDRom, no need to mount it manually, no need for a CD at all.

  4. Go back to the installer by pressing Ctrl + Alt + F1, and keep doing the installation process up to GRUB or LILO. If you install either GRUB or LILO without syncing first, Linux won't boot. So, do not install any bootloader yet, and follow next step.

  5. At this point, you are going to sync the partitions using refit. Open again a TTY (Ctrl + Alt + F2) and install refit and gptsync (I downloaded the 2 required debian packages in another USB from http://packages.debian.org).

    Note: I didn't try by doing modprobe tg3, and use the internet connection (actually I didn't have idea about the module used until now ;)), but it should be worthy to try it (Instead of using other USB drive).

  6. Mount the USB containing refit and gptsync in /mnt:
    mount /dev/sdX /mnt
    Copy the deb archives of refit /target/tmp:
    cp /mnt/path/*.deb /target/tmp
  7. Chroot in /target and proceed to install refit and gptsync, and sync the MBR and GPT:
    chroot /target
    dpkg -i /tmp/*.deb
    refit
  8. Once you have synced, get back to the installer (Ctrl + Alt + F1) and proceed to install GRUB (I did it and it worked. I didn't try with LILO). It is really IMPORTANT that you select as partition /dev/sdX3 (Where X correspond to your partitioning scheme). If you install GRUB in the MBR, this won't work. Anyways, if you do it by error it is possible to erase the MBR in Mac OS X.

Done!, enjoy Debian in your MacBook Pro 8.1!

For MacBook Pro 15" (8,2)

Here's a step by step tutorial on how to setup Debian in EFI mode on the late 2011 ?MacBookPro8,2: http://dentifrice.poivron.org/laptops/macbookpro8,2/

Kernel

linux-2.6 2.6.22 should work out of the box.

linux-2.6 2.6.18-3 supports MacBook Pros out of the box, but you'll need to ensure that the appletouch module is loaded before the usbhid module. You can do so by creating a file /etc/modprobe.d/local.conf that contains the following line:

install usbhid /sbin/modprobe appletouch && /sbin/modprobe --ignore-install usbhid $CMDLINE_OPTS

For some reason, this doesn't always work.

The MacBook instructions suggest that you use the kernel parameters "noapic irqpoll acpi=force". I found that on a March 2008 MacBook Pro, the irqpoll option caused the CDROM drive (HL-DT-ST DVDRW GSA-S10N, ATAPI CD/DVD-ROM drive) to give errors along the lines of

Mar 13 19:52:24 rotten kernel: hda: status error: status=0x58 { DriveReady SeekComplete DataRequest }
Mar 13 19:52:24 rotten kernel: hda: drive not ready for command

Using "noapic acpi=force" instead solved the problem.

Using stock kernel and patch from svn

You can build your own kernel using the stock Linux kernel and the patches found in the mactel-linux SVN. Here is the steps to follow:

X Window System

See the MacBook page for other details.

The first MBP versions have an ATI card built in (MBP 2,2: ATI Technologies Inc M56P [Radeon Mobility X1600]). Later versions (MBP 3,1 and up) have an Nvidia card.

The installation of x.org should work out of the box with the lenny (and later) version of x.org (nv or radeonhd drivers).

ATI graphics

Lenny contains the free radeonhd driver (package name xserver-xorg-video-radeonhd) which supports the ATI card and 3D. Squeeze defaults to the free radeon driver (xserver-xorg-video-radeon); you need to install the package firmware-linux-nonfree to use 3D acceleration.

If you wish to use the binary vendor driver on ATI cards, install the non-free fglrx-driver package and, in the Device section of /etc/X11/xorg.conf, change the driver from "ati" to "fglrx". Afterwards, to enable 3D you need to build the kernel fglrx module:

apt-get install fglrx-control fglrx-kernel-src module-assistant
m-a a-i fglrx

PowerPlay does not work with the fglrx driver as of v8.42. A patched radeontool is available at http://www.g2inf.one.pl/~anszom/MBP-ATI/.

NVidia graphics

With MacBookPro5,5 under Debian Lenny (2.6.26), use the NVidia proprietary driver. Brightness adjustment can be obtained by using Ubuntu packages

echo "deb http://ppa.launchpad.net/mactel-support/ubuntu intrepid main" >> /etc/apt/sources
aptitude update
aptitude install bcm5974-dkms usbhid-dkms applesmc-dkms hid-dkms hal-applesmc
echo "nvidia_bl shift=2" >> /etc/modules

For MacBookPro7,1 download the driver from Nvidia (Geforce GT 320M) and install it manually. (Obsolete with squeeze)

Wireless

See the MacBook/Wireless page.

Bluetooth

(Obsolete with squeeze) For MacBookPro7,1 apply the following patch to Kernel 2.6.35-rc3:

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 5d9cc53..6871d24 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -65,6 +65,9 @@ static struct usb_device_id btusb_table[] = {
        /* Bluetooth Ultraport Module from IBM */
        { USB_DEVICE(0x04bf, 0x030a) },
 
+       /* Apple MacBook Pro 7,1 */
+       { USB_DEVICE(0x05ac, 0x8213) },
+
        /* ALPS Modules with non-standard id */
        { USB_DEVICE(0x044e, 0x3001) },
        { USB_DEVICE(0x044e, 0x3002) },

Then modprobe btusb.

Sound

See the MacBook Sound section.

MacBookPro2

With a Core 2 Duo MacBook Pro and kernel 2.6.18-3-amd64 sound only works with the headphone but no speaker output.

With a Core2 Duo MacBook Pro (built fall 06) running (unpatched) 2.6.18-3-686, sound output can be changed as follows in alsamixer:

MacBookPro3

With MBPv3 (mid 2007), sound works out-of-the-box starting with kernel 2.6.24.

MacBookPro5,5

With MacBook Pro 5.5 (mid 2009) with kernel 2.6.26, the following little hack helps to enable sound under Lenny.

rm -rf /lib/modules/`uname -r`/kernel/sound
aptitude reinstall linux-image-2.6.26-2-686 linux-headers-2.6.26-2-686

Reboot

wget ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/alsa-driver-unstable-snapshot.tar.gz
tar xf alsa-driver-unstable-snapshot.tar.gz
cd alsa-driver-unstable
sudo ./configure --enable-dynamic-minors  --without-oss --with-cards="hda-intel"
sudo make
sudo make install

Under Squeeze, with kernel 2.6.32, simply add the following line to /etc/modprobe.d/alsa-base.conf

options snd-hda-intel model=mbp55

MacBookPro7,1

(Obsolete with squeeze) For MacBookPro7,1 with the kernel 2.6.35-rc3 and above, append the following line to /etc/modprobe.d/alsa-base

options snd-hda-intel model=mbp55

The front speaker can be unmuted with the gnome-alsamixer or with the alsamixer from console.

Touchpad

Apple ClickPad

Multi-touch gestures like the drag two-finger drag gesture are supported in the current xserver-xorg-input-synaptics package (>1.6.1).

If you would like your touchpad to behave like the natural scrolling mode in Mac OS X Lion, you have to add the next line to your ~/.Xmodmap

pointer = 1 2 3 5 4 7 6 8 9 10 11 12                                        

Apple Touchpad

?MacBookPro3,1 touchpad behavior might be smoother with the kernel boot option:

appletouch.threshold=3

possibly adding it to the GRUB_CMDLINE_LINUX_DEFAULT line in /etc/defaults/grub

For older versions you can check PageFragmentClickPadOld

In the Keyboard section, it is possible to have an example on how to modify the .Xmodmap file.

Keyboard

For MacBook Pro 13 (8,1)

If your Macbook Pro has an English International Keyboard as this one: http://people.debian.org/~muammar/MB110Z.jpg So, the best layout you can use is the Macintosh (International) layout, and you can apply the next Xmodmap: http://people.debian.org/~muammar/Xmodmap which means that you download that file and you place it in your /home/ directory as .Xmodmap. In this Xmodmap file, the key Shift + 3 is showing the # instead of the £, and the question mark down (¿) is shown when pressing Alt-Right + /.

Before you proceed to use this file, it is good to make a backup of your current layout. You can execute:

xmodmap -pke > Xmodmap.back

Now, the diff between the Xmodmap.back and Xmodmap is pasted below, and thus you can have an idea on the changes and how to do them:

diff -ur .Xmodmap.back .Xmodmap
--- .Xmodmap.back       2011-07-02 00:07:05.000000000 +0200
+++ .Xmodmap    2011-07-02 00:10:44.000000000 +0200
@@ -2,7 +2,7 @@
 keycode   9 = Escape NoSymbol Escape
 keycode  10 = 1 exclam 1 exclam onesuperior exclamdown
 keycode  11 = 2 at 2 at EuroSign onehalf
-keycode  12 = 3 sterling 3 sterling twosuperior onethird
+keycode  12 = 3 numbersign 3 numbersign twosuperior onethird
 keycode  13 = 4 dollar 4 dollar threesuperior onequarter
 keycode  14 = 5 percent 5 percent onehalf threeeighths
 keycode  15 = 6 dead_circumflex 6 dead_circumflex threequarters onesixth
@@ -10,7 +10,7 @@
 keycode  17 = 8 asterisk 8 asterisk bracketleft trademark
 keycode  18 = 9 parenleft 9 parenleft bracketright plusminus
 keycode  19 = 0 parenright 0 parenright braceright degree
-keycode  20 = minus underscore minus underscore backslash questiondown
+keycode  20 = minus underscore minus underscore backslash 
 keycode  21 = equal plus equal plus dead_cedilla dead_ogonek
 keycode  22 = BackSpace NoSymbol BackSpace
 keycode  23 = Tab ISO_Left_Tab Tab ISO_Left_Tab
@@ -51,7 +51,7 @@
 keycode  58 = m M m M mu masculine
 keycode  59 = comma less comma less horizconnector multiply
 keycode  60 = period greater period greater periodcentered division
-keycode  61 = slash question slash question dead_belowdot dead_abovedot
+keycode  61 = slash question slash question questiondown dead_abovedot
 keycode  62 = Shift_R NoSymbol Shift_R
 keycode  63 = KP_Multiply XF86ClearGrab KP_Multiply XF86ClearGrab
 keycode  64 = Alt_L Meta_L Alt_L Meta_L

Hibernate

To be able to easily suspend to disk, or suspend to ram you can use the hibernate package. Note: Tested on MBP 2006

apt-get install hibernate

To use it use the command

hibernate

For MacBookPro7,1 suspend to RAM works with s2ram from package uswsusp with the command

s2ram -f -p -m

For squeeze see the section 'Debian 6 (squeeze) on MacBookPro7,1' below.

In combination with the acpi script lid.sh (I simply hacked that line into the script as last statement within the closing condition) it does exactly what you would expect on MacOS - the MBP suspends when closing the lid and awakens when it is opened. While sleeping, the LED is blinking.

AppleIR

With MacBookPro5,5 (Debian Squeeze), this HowTo was successful.

Create config file /etc/lirc/lirc.conf with

irrecord -H macmini -d /dev/usb/hiddev0 lirc.conf

Set the driver in /etc/lirc/hardware.conf

DRIVER="macmini"

Associate buttons with software/functions in .lircrc (make sure to use the same button names as in lirc.conf). See examples here

Make sure that daemons are launched at session start-up (Gnome > System/Preferencies/Session):

irexec -d
irxevent

iPhone or iPod Touch

This Howto is reported to works. Under Squeeze, after iOS 4.3 update, you perhaps will need to update to following package from wheezy (testing) repositories :

apt-get install libimobiledevice1

In that case, you even need not to create SysInfoExtended yourself : simply install gvfs-fuse & ifuse; add yourself to the fuse group, reboot, plug your iPhone and launch Rhythmbox. That's it.

Debian 6 (squeeze) on MacBookPro7,1

Here is just the configuration for the hardware, that does not work out of the box. (sound and graphics work fine)

Installation

You can use the Kernel 2.6.32-5-amd64. Installation from CD works out of the box.

Wireless

Follow the procedure.

Bluetooth

Just modprobe btusb.

Graphics

The nvidia-glx package works perfectly.

Synaptics

The Touchpad can be configured by some settings in xorg.conf. But when I installed Debian with XFCE, the were no xorg.conf. I simply created a new xorg.conf with the following content. With this configuration, the touchpad has a similar behaviour of MacOS (multi finger scroll, tapping, right-click with two fingers, mouse middle click with three fingers).

Section "ServerLayout"
    Identifier     "Layout0"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "InputDevice"
    Identifier     "Mouse0"
    Driver         "synaptics"
    Option         "SendCoreEvents" "true"
    Option         "Device" "/dev/input/mice"
    Option         "Protocol" "auto-dev"
    Option         "SHMConfig" "true"
    Option         "New AccelFactor" "0.03"
    Option         "LeftEdge" "100"
    Option         "RightEdge" "1100"
    Option         "TopEdge" "50"
    Option         "BottomEdge" "700"
    Option         "MinSpeed" "0.94"
    Option         "MaxSpeed" "1"
    Option         "AccelFactor" "0.0015"
#tapping
    Option         "FingerHigh" "30"
    Option         "FingerLow" "25"
    Option         "MaxTapTime" "180"
    Option         "FastTaps" "0"
    Option         "TapButton1" "1"
    Option         "TapButton2" "3"
    Option         "TapButton3" "2"
#edge scroll
    Option         "VertEdgeScroll" "0"
    Option         "HorizEdgeScroll" "0"
    Option         "VertScrollDelta" "10"
    Option         "HorizScrollDelta" "10"
#two finger scroll
    Option         "VertTwoFingerScroll" "true"
    Option         "HorizTwoFingerScroll" "true"
EndSection

Hibernate

Hibernate has also suspend to ram with the command 'hibernate-ram'. So if you want to suspend to ram when the lid is closed, you can install hibernate and acpi-support (apt-get install hibernate acpi-support) and create an executable file named '/etc/acpi/local/lid.sh.pre':

mkdir -p /etc/acpi/local/
touch /etc/acpi/local/lid.sh.pre
chmod 755 /etc/acpi/local/lid.sh.pre

Put the following content into this file:

grep -q closed /proc/acpi/button/lid/*/state
if [ $? = 0 ]
then
  hibernate-ram -k -f
fi

Appendix: Santa Rosa/LED MBP

Mostly everything is the same with a few changes. The testing distro has enough working drivers to get you started. The stable distro, however does not have a new enough version of the ethernet drivers to work. The other caveat here is that 'apt-get install grub' seems to give you grub2 which didn't seem to work for me. If you're using rEFIt to boot to a boot loader then you should turn use Lilo or grub 1.

See also: https://cbg.dyndns.org/wiki/ReadingCorner/LinuxOnMacbookPro

Ethernet

Requires a new version of sky2 available on the testing CD, but I am unsure as to what the minimum kernel version is. However, it works out of the box with kernel 2.6.22.

Video

Since v100.14.19, the binary nvidia driver works nicely on x86 and x64, no patches needed. The OSS driver 'nv' works too, but has very limited HW support.

Touchpad

The touchpad works fine with the synaptics driver, though maybe not as smooth as with OSX. Use GrabEventDevice if you want misc usb mice and synaptics touchpad special functions to work simultaneously. Patches from http://www.mactel-linux.org are optional.

Suspend2RAM

For MBPv3: For some reason, suspend2ram does not work with the free nv driver from xorg (bug 453782).

Works with binary nvidia drivers. VT/X-switching is needed with old nvidia drivers. Note that usb is necessary for keyboard/mice to work. These drivers should not be reloaded, otherwise the synaptics driver will lose its grab(GrabEventDevice, synaptics(5)) on the device. I also unload v4l, sky2 and madwifi before s2ram.

I used acpid to disable networking and echo mem > /sys/power/state on PWBTN.

Tested in debian/unstable, with vanilla linux 2.6.22/23. Alsa, uvcvideo and madwifi drivers taken from their corresponding repositories, i.e. working with various revisions of recent development drivers.

With Debian unstable and kernel 4.14.x suspend works out of the box but resumes very often. The reason is the USB 3.x ACPI configuration. This can be fixed with:

# echo XHC1 > /proc/acpi/wakeup
# cat /proc/acpi/wakeup |grep enable
LID0      S4    *enabled   platform:PNP0C0D:00

AppleIR

Patch your kernel with https://cbg.dyndns.org/store/apple-remote-quirk-hiddev.patch. Enable CONFIG_USB_HID and CONFIG_USB_HIDDEV. When loading usbhid, a device /dev/usb/hiddev0 should be created. Use lirc to configure your remote. Reported to work with other remotes, too.

For a step by step guide, including elisa setup see http://www.e-hoffman.org/wiki/pmwiki.php?n=Main.AppleMacBookProV3

Plan

Here's what needs to be done: