Difference between revisions of "MacBookPro11,x"

From ArchWiki
Jump to: navigation, search
(Bootloader: Do not use data=writeback on btrfs)
(Using the Macbook's native EFI bootloader: fix caps of "MacBook", including in section heading; add a note box for the rootflags option on Btrfs; update installation of GRUB per style guide; remove "vim" command and improve that section)
Line 41: Line 41:
  
 
=== Bootloader ===
 
=== Bootloader ===
==== Using the Macbook's native EFI bootloader ====
+
==== Using the MacBook's native EFI bootloader ====
This method uses the Macbook's native EFI bootloader, i.e. the one the can be reached when holding the alt-key during boot.  
+
This method uses the MacBook's native EFI bootloader, i.e. the one the can be reached when holding the alt-key during boot.  
 
   
 
   
{{Note| For this method you need an extra partition >128MB. This partition will be used by the Macbook's native bootloader to launch Arch. It also assumes that you are dual-booting OS X and Arch.}}
+
{{Note|For this method you need an extra partition >128MB. This partition will be used by the MacBook's native bootloader to launch Arch. It also assumes that you are dual-booting OS X and Arch.}}
  
At the end of the install process we would normally install GRUB or a variation the the drive. For this method we will place a {{ic|boot.efi}} file on an extra partition used by the Mac's native bootloader.
+
At the end of the install process we would normally install GRUB or a variation the the drive. For this method we will place a {{ic|boot.efi}} file on an extra partition used by the MacBook's native bootloader.
  
First of install GRUB:
+
First, [[pacman|install]] the {{Pkg|grub}} package from the [[Official Repositories|official repositories]].
# pacman -S grub
+
  
When generating a {{ic|boot.efi}} grub looks to {{ic|/etc/default/grub}} for its configuration. Edit the parameter {{ic|GRUB_CMDLINE_LINUX_DEFAULT}} to look something like this:
+
When generating a {{ic|boot.efi}} file, GRUB looks to {{ic|/etc/default/grub}} for its configuration. Edit the parameter {{ic|GRUB_CMDLINE_LINUX_DEFAULT}} to look something like this:
 
{{bc|
 
{{bc|
 
<nowiki>
 
<nowiki>
Line 58: Line 57:
 
}}
 
}}
  
The {{ic|<nowiki>libata.force=noncq</nowiki>}} parameter will prevent SSD lockups and the {{ic|rootflags}} option is used for SSD-performance. Do not user the {{ic|rootflags}} on btrsfs. It is not supported.
+
The {{ic|1=libata.force=noncq}} parameter will prevent SSD lockups and the {{ic|rootflags}} option is used for SSD-performance.
 +
 
 +
{{Note|Do not use the {{ic|rootflags}} option on Btrfs. It is not supported.}}
  
 
Now we generate the {{ic|boot.efi}} file:
 
Now we generate the {{ic|boot.efi}} file:
Line 70: Line 71:
 
  $ mkdir <Parth to root of extra partition>/mach_kernel
 
  $ mkdir <Parth to root of extra partition>/mach_kernel
  
Copy the {{ic|boot.efi}} file to the {{ic|<Path to extra partition>/System/Library/CoreServices/}} directory. Using your editor of choice create a {{ic|SystemVersion.plist}} in the CoreServices dir:
+
Copy the {{ic|boot.efi}} file to the {{ic|<Path to extra partition>/System/Library/CoreServices/}} directory. Using your editor of choice, create a {{ic|SystemVersion.plist}} file in the CoreServices directory, which is located here:
 +
''<path to extra partition>''/System/Library/CoreServices/SystemVersion.plist
  
$ vim <Path to extra partition>/System/Library/CoreServices/SystemVersion.plist
+
Edit that file to look like this:
Edit it to look like this:
+
 
{{bc|
 
{{bc|
 
<nowiki>
 
<nowiki>

Revision as of 19:46, 16 January 2014

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

Preparing for the Installation

Preparing the Hard drive

Assuming you want to dual boot with OSX (so you can firmware update), you have to shrink it's partition with Disk Utility. You can either create a HFS+ partition now to override later, or leave it empty.

Installation

Booting the live image

Now, download the latest Archboot iso, write it to USB and boot from it by selecting it in the Apple boot loader using hold alt on boot (use refit if you can't get manage to pick it). When it comes to the syslinux boot loader, press Tab to edit the entry and append nomodeset to fix screen corruption.

Internet

Note: You can skip this if you use the Thunderbolt or USB to ethernet adapter for the installation.


Wireless

As mentioned below broadcom-wl is sufficient if you are using the linux mainline. For custom kernels, you need to use broadcom-wl-dkms. Both are available from the aur. The easiest way to get wifi connectivity during install is to build the package driver on a separate system using:

$ curl -O https://aur.archlinux.org/packages/br/broadcom-wl-dkms/broadcom-wl-dkms.tar.gz
$ tar -zxvf broadcom-wl-dkms.tar.gz
$ cd broadcom-wl-dkms
$ makepkg -s

This will give you a package (broadcom-wl-*.pkg.tar.xz) which can be installed using pacman. Put this package on a USB, mount it and install the package using

# pacman -U broadcom-wl-*.pkg.tar.xz
# modprobe wl

during install. You may now use wifi-menu to connect to your network of choice.

Note: You need to repeat this process when you have finished your installation, for instance when booting into the system for the first time or when you have chrooted your install.

The installation

Note: Refer to the MacBook page if you don't want to have a separate partition for GRUB but rather prefer to use rEFInd (or rEFIt).

Run the installation wizard.

Tip: If you want to use the native Macbook bootloader you need an extra partition of atleast 128MB.

Bootloader

Using the MacBook's native EFI bootloader

This method uses the MacBook's native EFI bootloader, i.e. the one the can be reached when holding the alt-key during boot.

Note: For this method you need an extra partition >128MB. This partition will be used by the MacBook's native bootloader to launch Arch. It also assumes that you are dual-booting OS X and Arch.

At the end of the install process we would normally install GRUB or a variation the the drive. For this method we will place a boot.efi file on an extra partition used by the MacBook's native bootloader.

First, install the grub package from the official repositories.

When generating a boot.efi file, GRUB looks to /etc/default/grub for its configuration. Edit the parameter GRUB_CMDLINE_LINUX_DEFAULT to look something like this:


GRUB_CMDLINE_LINUX_DEFAULT="quiet rootflags=data=writeback libata.force=noncq"

The libata.force=noncq parameter will prevent SSD lockups and the rootflags option is used for SSD-performance.

Note: Do not use the rootflags option on Btrfs. It is not supported.

Now we generate the boot.efi file:

# grub-mkconfig -o /boot/grub/grub.cfg
# grub-mkstandalone -o boot.efi -d /usr/lib/grub/x86_64-efi -O x86_64-efi /boot/grub/grub.cfg

Put this file on a USB (or other OS X accessible media) and reboot into OS X.

Launch DiskUtility.app and erase the extra partition, mentioned above, to HFS+ and mount it.

$ mkdir -p <Path to root of extra partition>/System/Library/CoreServices
$ mkdir <Parth to root of extra partition>/mach_kernel

Copy the boot.efi file to the <Path to extra partition>/System/Library/CoreServices/ directory. Using your editor of choice, create a SystemVersion.plist file in the CoreServices directory, which is located here:

<path to extra partition>/System/Library/CoreServices/SystemVersion.plist

Edit that file to look like this:


<xml version="1.0" encoding="utf-8"?>
<plist version="1.0">
<dict>
    <key>ProductBuildVersion</key>
    <string></string>
    <key>ProductName</key>
    <string>Linux</string>
    <key>ProductVersion</key>
    <string>Arch Linux</string>
</dict>
</plist>

The last step is then to bless the extra partition using:

# bless --device disk0sX --setBoot

Where disk0sX is the extra partitions id. The id can be found using either DiskUtility.app or by issuing:

# diskutil list
Note: If you change kernel or need to modify the boot process, you will most likely need to re generate the boot.efi file. Simply replace the old boot.efi on the extra partition with the new one.

Direct EFI booting (rEFInd)

See: UEFI_Bootloaders

As of August 2013, refind can autodetect the Arch kernel, removing the need for copying the kernel into the EFI partition. Simply install refind without the EFI filesystem drivers [1] using the --nodrivers option [2], and enable the "scan_all_linux_kernels" and "also_scan_dirs" options in refind.conf (see link above for instructions.)

GRUB (with osx)

Another solution is to install GRUB. Edit /tmp/install/boot/grub/grub.cfg and edit the boot entry to load linux-mainline instead of the normal one. You might want to append nomodeset to the kernel line again, at least for now. libata.force=noncq helps with hangs due to ssd speed.

Now cd into /tmp/install/ and create the GRUB image by calling:

grub-mkstandalone -o bootx64.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi -C xz boot/grub/grub.cfg

This will create file called boot64.efi which contains GRUB and the config file incorporated inside. It is important to cd into the right directory to make it pick up the config file and put it into the right place within the image.

Copy this file to the mac EFI partition. Downside of this method is that you need to repeat this step whenever you want to change the GRUB config. Reboot the machine and you should be able to select your installed Arch Linux by keeping the alt button pressed, it should appear as EFI boot.

To generate a nicer config use: grub-mkconfig, (add in nomodeset if you are using framebuffer), remove quiet if you like the text, then to update your grub post installation do this to make the grub efi and put it in the EFI partition:

cd /
grub-mkstandalone -o bootx64.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi -C xz boot/grub/grub.cfg
sudo mount /dev/sda1 /mnt
sudo cp bootx64.efi /mnt/EFI/boot/bootx64.efi

Post installation

Console

Largest console font (although ugly) achieved by adding FONT=sun12x22 to /etc/vconsole.conf

It's still tiny but at least readable.

Graphics

MacbookPro 11,1

  • Intel works fine

MacbookPro 11,2

MacbookPro 11,3

See HiDPI for information on how to tweak the system for a Retina screen.

If you’re using XCFE, you will probably experience tearing in Firefox, VLC and the like. Until newer version of xfwm supports OpenGL rendering, use another compositing window manager like compton with backend = "glx".

Sound

If you don't want to hear the annoying sound at system startup, one way to get rid of it is to turn sound off while under Mac OS.

Volume keys can be made to work with xfce4-volumed (if you're using XFCE).

Also, if you're using Pulse, sometimes it thinks HDMI is the default sound card; to solve this problem, install pavucontrol and set Analog Stereo as the fallback device.

Touchpad

One method is to install xf86-input-synaptics and configure to your liking in /etc/X11/xorg.conf.d/50-synaptics.conf:

Section "InputClass"
    MatchIsTouchpad "on"
    Identifier      "touchpad catchall"
    Driver          "synaptics"
    # 1 = left, 2 = right, 3 = middle
    Option          "TapButton1" "1"  
    Option          "TapButton2" "3"
    Option          "TapButton3" "2"
    # Palm detection
    Option          "PalmDetect" "1"
    # Horizontal scrolling
    Option "HorizTwoFingerScroll" "1"
    # Natural Scrolling (and speed)
    Option "VertScrollDelta" "-100"
    Option "HorizScrollDelta" "-100"
EndSection

Keyboard Backlight

Screen Backlight

  • Intel, works on linux 3.13
  • Framebuffer, works for MacbookPro11,1 and 11,3 via /sys/class/backlight/gmux_backlight/brightness.
  • Nvidia, does not work

Suspend

  • Works on MacbookPro11,2 with linux 3.13
  • No backlight after suspend with linux 3.12
    • Use hibernate instead

What doesn't work (updated 7th December 2013)

General

WiFi

  • broadcom-wl from aur works
    • Stability is an issue for some

Webcam

  • Listed on PCI bus as: Multimedia controller: Broadcom Corporation Device 1570.
  • In OSX the camera is listed as FaceTime HD camera 1570.
  • No know Linux driver.

Discussions

See Also