From ArchWiki
(Redirected from MacBookPro Retina)

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Mac)
Warning: ARM architectures are supported by Arch Linux ARM. However, it does not support M1 or future generation chip yet. For Linux support information for Macs with M1 chip, see Asahi Linux project. Both Arch Linux ARM and Asahi Linux are downstream projects that not officially endorsed by Arch Linux, you may go to Arch Linux ARM Forum and Asahi Linux Community for help.

Installing Arch Linux on an Apple computer is quite similar to installing it on one from any other manufacturer. However, due to specific hardware configurations, there are a few deviations and special considerations which warrant a dedicated guide. For more background information, please see the Installation guide and UEFI. This guide contains instructions that can be used on any Apple computer whose hardware is supported by the Linux kernel. Please see the "related" pages for model-specific tips and troubleshooting.


Summed up, the procedure for installing Arch Linux on a Mac is:

  1. Firmware updates: It always helps to start from a clean, backed up, and up-to-date install of macOS.
  2. Partition: Resizing or deleting the macOS partition to create partitions for Arch Linux.
  3. Setup boot loader: Making sure that the new partition is bootable.
  4. Install Arch Linux: Actual installation.
  5. Post-installation: Device-specific configuration.

Firmware updates

Before proceeding with the installation of Arch Linux, it is important to ensure that the latest firmware updates for your Mac are installed. This procedure requires macOS. In macOS, open the App Store and check for updates. If your Mac finds and installs any updates, make sure to reboot your computer, and then check again for updates to make sure that you installed everything.

Note: If you uninstalled macOS or want to reinstall it, Apple has great instructions.

It is advisable to keep macOS installed, because Mac firmware updates can only be installed using macOS. However, if you plan to remove macOS completely, make backups of the files in /Library/ColorSync/Profiles/Displays/, which you will need in Linux for adjusting the color profile.


Partitioning of the storage drive is no different from any other PC or laptop. However, if you plan on keeping macOS for dual booting, you should consider that, by default, a Mac drive is formatted using GPT and contains at least 3 partitions:

  • EFI: the ~200 MB EFI system partition.
  • macOS: the main partition containing your macOS installation. It is formatted using HFS+.
  • Recovery: A recovery partition present in almost all Macs running OS X 10.7 or newer. It is usually hidden from macOS but can be viewed with partitioning tools.
Note: In Macs that use the Apple Fusion Drive, the partition scheme could be different.

How to partition depends on how many operating systems you want install. The following options will be explained:

Arch Linux only

This situation is the easiest to deal with. Partitioning is the same as any other hardware that Arch Linux can be installed on. Please refer to the standard Installation guide for details.

Note: It is advisable to disable the Mac startup sound before proceeding with partitioning. Just boot in macOS, mute your system sound and reboot again to the Arch Linux Installation media. Please keep in mind that the volume of the startup sound can only be modified reliably in macOS.

If you want to configure your system in order to have full-disk encryption, please look at the Dm-crypt/Encrypting an entire system page for details.

An example for a very basic partitioning, that does not consider a separate /home partition nor encryption or LVM, is the following:

partition  mountpoint  size    type  label
/dev/sda1  /boot       200MiB  vfat  EFI
/dev/sda2  /swap       adjust  swap  swap
/dev/sda3  /           remain  ext4  root

Once done, you can continue to #Installation.

Arch Linux with macOS or other operating systems

You need to partition your hard drive while keeping the partitions used for macOS/Windows. If you wish to keep macOS, the easiest way is to use partitioning tools in macOS and then finish with Arch Linux tools.

Warning: If your macOS partition is encrypted with FileVault 2, you must disable the disk encryption before proceeding. After the macOS partition has been resized, FileVault 2 can be re-enabled.


  • In macOS, run Disk (located in /Applications/Utilities)
  • Select the drive to be partitioned in the left-hand column (not the partitions!). Click on the Partition button.
  • Add a new partition by pressing the + button and choose how much space you want to leave for macOS, and how much for the new partition. Keep in mind the new partition will be formatted in Arch Linux, so you can choose any partition type you want.
  • If the above completed successfully, then you can continue. If not, then you may need to fix your partitions from within macOS first.
  • Boot the Arch installation media or LiveUSB by holding down the Alt during boot. Proceed with #Installation.

It is possible to resize the newly created partition from within the Arch installation media, or delete it in order to proceed with the creation of other partitions (eg. swap).

Tip: Instead of cluttering your drive with different partition, it is possible to use a swapfile instead of a dedicated partition. Another solution can be setting up LVM in order to use the newly-created partition as a container. Please refer to the linked articles.


  • Run cgdisk

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: This should explain why Mac OS "likes" gaps between partitions. (Discuss in Talk:Mac)
  • Delete the partition you made in Disk and create the necessary partitions for Arch Linux. macOS likes to see a 128 MiB gap after partitions, so when you create the first partition after the last macOS-partition, type in +128M when cgdisk asks for the first sector for the partition. More information about Apple's partitioning policy can be read here. A simple example (no LVM, crypto):
  • The swap partition is optional on machines with 4GB of RAM or more. A swap file can be created later.
  • The easiest dual-boot option is to install rEFInd from inside macOS, to its root directory (default for Following that, copy the driver folder from the installation tarball into the new rEFInd location, and uncomment the lines "scan_all_linux_kernels" and "also_scan_dirs" options in refind.conf. Configuration of boot options can then be done from a refind_linux.conf in Arch's /boot directory.
  • If you want to be able to boot GRUB from the Apple boot loader, you can create a small hfs+ partition (for convenience, use macOS to format it in Disk afterwards). Follow the GRUB EFI install procedure, and mount your /efi directory to the hfs+ partition you created. Finally, finish up again in macOS by blessing the partition. This will set GRUB as the default boot option (holding alt at startup goes to the boot options screen still. See,
  • An existing EFI system partition can be used by Arch Linux without needing to create an additional one.
  • For more information on partitioning, see Partitioning
partition  mountpoint  size          type  label
/dev/sda1  /efi        200MiB        vfat  EFI
/dev/sda2  -           ?             hfs+  macOS
/dev/sda3  -           ?             hfs+  Recovery
/dev/sda4  -           100MiB        hfs+  Boot Arch Linux from the Apple boot loader (optional)
/dev/sda5  /boot       100MiB        boot  boot
/dev/sda6  -           ?             swap  swap (optional)
/dev/sda7  /           15-20GiB      ext4  root
/dev/sda8  /home       remaining     ext4  home

Once done, you can continue to #Installation.


Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: Mentions AIF (/arch/setup). (Discuss in Talk:Mac)
  • Run parted as root.
  • Delete the empty space partition and partition the space as you would for any other installation. Note that MBR is limited to 4 primary partitions (including the EFI system partition). That leaves 2 primary partitions for Arch. One strategy is to have a system and home partition, and use a swap file (I have not tried to use logical partitions). Another is to dedicate one partition to a shared partition (see below).
  • Next, create new filesystems on those partitions which need them, especially the partition which will contain /boot. If you are not sure how to do this using mkfs.ext2 (or whatever), run /arch/setup and work through until you get to Prepare Hard Drive and use the "Manually configure block devices..." option, then exit the installer. This is necessary so that rEFIt will set the right partition type in the MBR in the next step (without an existing filesystem, it seems to ignore the partition type set by parted), without which GRUB will refuse to install to the right partition.
  • At this point you should reboot your computer and have rEFIt fix the partition tables on your hard drive. (If you do not do this, you may have to reinstall GRUB later on in order to have your Mac recognize the Linux partition.) When you are into the rEFIt menu, select update partition table, then press y. Reboot.
  • Done, you can continue with #Installation.

Setup boot loader

Using the native Apple boot loader with systemd-boot (Recommended)

Apple's native EFI boot loader reads .efi files located inside the EFI system partition at /EFI/BOOT/BOOTX64.EFI. Luckily, this is also the default install location for the systemd-boot binary. This means that booting linux using systemd-boot is very simple.

  • First, make sure you mounted the EFI System Partition at /boot
  • Proceed with #Installation normally
  • Once inside the chrooted environment, type the following command to install systemd-boot:
    # bootctl --path=/boot install
    The above command will copy the systemd-boot binary to /boot/EFI/BOOT/BOOTX64.EFI and add systemd-boot itself as the default EFI application (default boot entry) loaded by the EFI Boot Manager.
  • Proceed to systemd-boot#Configuration in order to correctly set up the boot loader

At the next reboot, the Apple Boot Manager, shown when holding down the option key when booting the Mac, should display Arch Linux (it will be displayed as EFI Boot as a possible boot option.

Tip: If you installed Arch Linux alongside macOS, you will be able to change the default boot location from system Settings inside macOS. If Arch Linux does not show up as a possible boot option, you will have to mount the EFI System Partition inside macOS before selecting your boot option:
$ diskutil mount disk0s1

Using the native Apple boot loader with GRUB

Installing GRUB to existing EFI system partition

If you would like to use GRUB as your main boot loader and use the "boot while holding the Alt/Option key" method to go back to macOS rather than using alternatives such as rEFIt (, mentioned previously in #Option 2: BIOS-compatibility) then you must install GRUB to your Mac's already-existing EFI system partition.

The process is similar to #Using the native Apple boot loader with systemd-boot (Recommended). Just follow GRUB#Installation and add --removable when running grub-install.

Installing GRUB to a separate HFS+ partiton

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: Uses partial upgrade procedure and explicitly lists many basic commands. (Discuss in Talk:Mac)

Despite using UEFI, the Mac native EFI boot loader does not use the EFI system partition for booting. Instead, it looks for .efi files inside all the partitions in internal and external drives and shows them as possible boot options if certain conditions are satisfied. For example, it can detect an existing macOS installation after checking that:

  • there is a partition formatted as HFS+
  • the partition contains the partition id af00
  • in the root of that partition, there is a file called mach_kernel
  • inside that partition, there a boot.efi file inside /System/Library/CoreServices

This means that configuring an Arch installation to be automatically recognized by the Mac boot loader is possible. Moreover, it simply requires a properly-formatted HFS+ /boot partition and does not require meddling with the EFI system partition. The advantage of this method is that it can coexist with macOS nicely and allows to avoid other boot loaders such as rEFInd. However, this requires manual configuration. The following steps will illustrate how to perform this configuration using GRUB.

  • First, while configuring a new Arch installation, create a separate /boot partition. Many tools are available in the Arch ISO, for example cgdisk.
  • Make sure the partition is at least ~250 MB in size, since it will be used to store the kernel as well as any custom kernel you will install in the future. Moreover, make sure the partition type is set as Apple HFS/HFS+ (it will appear as Apple HFS/HFS+ in fdisk/cgdisk or af00 in gdisk)
  • Since the Arch installation ISO does not include the hfsprogsAUR package, we need to install it in the installation environment before proceeding with formatting the new partition as HFS+, install hfsprogsAUR, then:
# modprobe hfsplus
# mkfs.hfsplus /dev/sdXY -v "Arch Linux"
Warning: Once inside the chrooted environment, do not forget to install the hfsprogsAUR package on the newly installed system as well. After the installation of the package, regenerate the initramfs while chrooted.
  • Once inside the chrooted environment, install the grub and efibootmgr packages.
  • Also, create a dummy mach_kernel file
# touch /boot/mach_kernel
# mkdir -p /boot/EFI/arch && touch /boot/EFI/arch/mach_kernel
  • The following steps install the GRUB UEFI application to /boot/EFI/arch/System/Library/CoreServices/boot.efi and install its modules to /boot/grub/x86_64-efi.
# grub-install --target=x86_64-efi --efi-directory=/boot

After that, remember to create a standard configuration file:

# grub-mkconfig -o /boot/grub/grub.cfg

As you can see, the directory structure of the boot.efi is not correct, as the /System/Library/CoreServices directory is not supposed to be a subdirectory of the /boot/EFI/ folder. For this reason, we need to relocate the boot.efi stub in a location the Mac boot loader is able to recognize:

# mv /boot/EFI/arch/System/ /boot/
# rm -r /boot/EFI/

After that, you need to create the following file

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
       <string>Arch Linux</string>

At the next reboot, the Apple Boot Manager, shown when holding down the option key when booting the Mac, should display Arch Linux as a possible boot option. Selecting that option will boot GRUB.

Done! GRUB can now be selected on the standard Mac boot loader and you can boot into your newly installed Arch Linux.

Tip: After the installation, it is optionally possible to set a custom icon that will be displayed in the Mac boot loader. In order to do that, you need to install the wget, librsvg and libicns packages. After that, just follow the following commands:
$ wget -O /tmp/archlinux.svg
$ rsvg-convert -w 128 -h 128 -o /tmp/archlogo.png /tmp/archlinux.svg
# png2icns /boot/.VolumeIcon.icns /tmp/archlogo.png
$ rm /tmp/archlogo.png
$ rm /tmp/archlinux.svg

Obviously, you can replace the Arch logo with any other icon you like.

Other methods

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: Section that describes boot loader setup for other setups should be revised and re-structured into more readable way (Discuss in Talk:Mac)

If you are going for an Arch Linux-only setup, installing the boot loader is no different than on any other machine: Install systemd-boot, rEFInd or other boot loader of your choice.

If, on the other hand, you are dual/triple booting, then read on.

Using blessing

It is possible to boot directly from GRUB in EFI mode without using rEFIt through what is known as "blessing" after placing GRUB on a separate partition. These instructions are known to work on a MacBook7,1. It is advisable to host GRUB on either a FAT32 or HFS+ partition, but ext2 or ext3 may also work.

After the GRUB install is in the desired location, the firmware needs to be instructed to boot from that location. This can be done from either an existing macOS install or an macOS install disk. The following command assumes that the GRUB install is in /efi/grub/ on an existing macOS partition:

# bless --folder /efi/grub --file /efi/grub/grub.efi


Note: This section is only required if you want to have macOS installed along with Arch Linux. If not, follow the steps in the official install guide, then skip to /Troubleshooting.
  • Boot from the Arch Linux install CD, or from a manually created bootable USB drive.
Note: Some Mac users report strange keyboard output such as long delays and character doubling. To fix this problem, boot with the following kernel parameters: arch noapic irqpoll acpi=force.
  • Proceed through the installation as described in the Installation guide except in the following areas:
  • When the install process is complete, reboot your computer.
  • If using optical media, hold down the eject key as your Mac starts, this should eject the Arch Linux install disk.
  • If dual-booting macOS and Arch Linux, hold down the Alt (option) key while the system boots to use the Mac boot loader and select which OS to boot.

Tips and tricks

Color Profile

We can use color profiles from macOS.

First, install the xcalib package.

Second copy pre-saved color profiles placed in /Library/ColorSync/Profiles/Displays/ on macOS partition to ~/colorprofiles/ for example.

There are color profile files agree with in MacBook models; select the right one:

  • Color LCD-4271800.icc for MacBook Pro with CoreDuo CPU
  • Color LCD-4271880.icc for MacBook with Core2Duo
  • Color LCD-4271780.icc for MacBook (non-Pro) based on CoreDuo or Core2Duo.
Tip: Also macOS allows to save current color profile from Displays > Color section of the Mac OS System Preferences, in this case file is saved to /Users/<username>/Library/ColorSync/Profiles.

Finally you can activate it by running

# xcalib ~/colorprofile.icc
  • The previous command sets the color profile only for the current session: autostart it.
  • GNOME will revert the profile set by xcalib. It is preferable to set the profile using Color in settings.

Apple Remote

Install and configure lirc. See LIRC.

Make LIRC use /dev/usb/hiddev0 or /dev/hiddev0:

# Parameters for lirc daemon

Use irrecord to create a configuration file matching your remote control signals:

# irrecord -d /dev/usb/hiddev0 -H macmini output_conf_file

Start lircd.service and use irw to check if it works.

Alternatively, use the following:

begin remote

  name  lircd.conf.macbook
  bits            8
  eps            30
  aeps          100

  one             0     0
  zero            0     0
  pre_data_bits   24
  pre_data       0x87EEFD
  gap          211994
  toggle_bit_mask 0x87EEFD01

      begin codes
          Repeat                   0x01
          Menu                     0x03
          Play                     0x05
          Prev                     0x09
          Next                     0x06
          Up                       0x0A
          Down                     0x0C
      end codes

end remote

HFS partition sharing

Install hfsprogsAUR and use fdisk to list the partitions:

# fdisk -l /dev/sda
   Device  Boot     Start         End      Blocks   Id  Type
/dev/sda1               1          26      204819   ee  GPT
/dev/sda2              26       13602   109051903+  af  Unknown
/dev/sda3   *       13602       14478     7031250   83  Linux
/dev/sda4           14478       14594      932832+  82  Linux swap / Solaris

The "Unknown" partition is our macOS partition, which is located in /dev/sda2. We can use this in our fstab:

/dev/sda2    /path/to/shared/hfs_partition     hfsplus auto,user,rw,exec   0 0

It can then be mounted, and the content accessed.

HFS+ Partitions


HFS+ partitions, now the default in macOS, are not fully supported by Linux and are mounted as read-only by default. In order to write to an HFS+ partition, the safe way is to disable journaling. This can be accomplished using the macOS Disk Utility. Refer to this Apple support page for more information or try to do it from the command line:

Find your partition:

# diskutil list
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *750.2 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS macOS                   149.5 GB   disk0s2
   3:                  Apple_HFS Macintosh HD            599.2 GB   disk0s3
   4:                 Apple_Boot Recovery HD             650.0 MB   disk0s4

In this example we will use disk0s3 partition named as Macintosh HD. To know if journaling is activate or not you could execute:

# diskutil info /dev/disk0s3 | grep -i journal
    File System Personality:  Journaled HFS+
    Name (User Visible):      Mac OS Extended (Journaled)
    Journal:                  Journal size 49152 KB at offset 0x1176000

As you can read the journaling is active. To turn off the journaling you could execute:

# diskutil disableJournal disk0s3

To verify it is done execute the info command again.

If you get noting as output, then journaling is disabled.

However, if you fail to disable journaling. You can change "auto,user,rw,exec" in /etc/fstab to "auto,user,force,rw,exec" and mount it.

Yosemite and later

This section addresses error message when mounting hfsplus partition:

# mount -t hfsplus dev/sdX force,ro
wrong fs type, bad option, bad superblock on /dev/sdX, missing codepage or helper program, or other error.

Since Yosemite, HFS+ partitions are now wrapped a CoreStorage volume. Verify that you have an CoreStorage volume.

# fdisk -l /dev/sdX
Disk /dev/sdX: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1* 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Device      Start      End         Sectors    Size     Type
/dev/sdX1   40         409639      409600     200M     EFI System
/dev/sdX2   409640     623872871   623463232  297.3G   Apple Core storage
/dev/sdX3   623872872  625142407   1269536    916.0M   Apple boot

HFS+ uses two volume headers, one 1024 bytes into the device and one 1024 from the end of the device. With the HFS+ partition wrapped in the CoreStorage volume the end of the partition is not actually 1024 bytes from the end of the /dev/sdX2 partition. To fix this you need to specify sizelimit=X when mounting.

To determine sizelimit do the following:

  1. Run testdisk /dev/sdX and select your drive
  2. Select EFI GPT
  3. Select Analyse and then Quick Search

Sample output:

TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <>

Disk /dev/sdX  - 320 GB / 298 GiB - CHS 38913 255 63
    Partition     Start      End        Size in sectors
P  EFI System     40         409639     409600  [EFI]
P  Mac HFS        409640     623147815  622738176
P  Mac HFS        623872872  625142407  1269536

What you see now is the output of the HFS partition itself without the CoreStorage volume. Take the size in sectors (622738176 in this example) and multiply by the number of bytes in your logical sector size (512 in this example).

622738176 * 512 = 318841946112

Finally, mount your disk with the sizelimit=X option.

 mount /dev/sdX -t hfsplus -o ro,sizelimit=318841946112

UID synchronization for home sharing

In macOS

Note: It is strongly recommended that UID/GID manipulation be done immediately after a new user account is created, in macOS as well as in Arch Linux. If you installed macOS from scratch, then this operation is guaranteed to work after logging into your account for the first time.
Change UID and GID(s)

The default UID and GID on Arch Linux for a user is 1000, adjust the following steps according to your setup.

  1. Open NetInfo Manager located in the /Applications/Utilities folder.
  2. If not done for you already, enable access to user account transactions by clicking on the closed lock at the bottom of the window, and entering your account password, or root password if you have created a root account.
  3. Navigate to /users/new_user_name
  4. Change the UID value to 1000
  5. Change the GID value to 1000
  6. Navigate to /groups/new_user_name, automatically saving the changes you have made so far.
Note: If you get an error message that the transaction is not allowed, log out and log back in.

In Leopard, the NetInfo Manager application is not present. A different set of steps is required for UID synchronization:

  1. Open System Preferences.
  2. Click on Users & Groups.
  3. Unlock the pane if not already done so.
  4. Right-click on the desired user and select Advanced Options.
  5. Write down the value of the User ID field, you will need it later on. Change both the UID and GID to match the UID and GID of the account to be shared with in Arch.
Change "Home" permissions
  1. Open up Terminal in the /Applications/Utilities folder.
  1. Enter the following command to reclaim the permission settings of your home folder:
# find /User/your_user_name -user your_old_UID -exec chown your_user_name:your_user_group {} \;

In Arch

To synchronize your UID in Arch Linux, you are advised to perform this operation while creating a new user account. It is therefore recommended that you do this as soon as you install Arch Linux.

Now you must substitute Arch's home with macOS's home, by modify entries of /etc/fstab.

Mute startup chime

The startup chime volume is controlled by the EFI variable SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82. So it can be muted with

# printf "\x07\x00\x00\x00\x00" > /sys/firmware/efi/efivars/SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82

Bear in mind that the file may have the immutable bit set by default, which will prevent even root from overwriting the file. See File permissions and attributes#File attributes. To remove it, issue the following:

# chattr -i /sys/firmware/efi/efivars/SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82

After that, run the printf command and it should overwrite the file properly. Verify the file's contents and then set the immutable bit again with chattr +i once satisfied.

Alternatively, you can use a macOS install disk to mute the chime. Boot from it, select language, then click Utilities > Terminal, and enter

# /usr/sbin/nvram SystemAudioVolume=%percentage
Note: Required formatting of the value provided for key SystemAudioVolume may differ depending on models and perhaps the version of macOS install media. If the above command fails to work, try enclosing the value in double quotes.

See also