Difference between revisions of "MacBookPro8,1/8,2/8,3 (2011)"

From ArchWiki
Jump to: navigation, search
(Add my steps for getting Xorg to run on a MBP 8,2 with Grub2 EFI boot)
(flagged broken section links (interactive))
(Tag: wiki-scripts)
 
(37 intermediate revisions by 12 users not shown)
Line 1: Line 1:
 
[[Category:Apple]]
 
[[Category:Apple]]
{{Article summary start}}
+
{{Related articles start}}
{{Article summary text|Details the installation and configuration of Arch Linux on Apple's MacBook Pro 8,1/8,2/8,3}}
+
{{Related|MacBook}}
{{Article summary heading|Related}}
+
{{Related|MacBookPro7,1}}
{{Article summary wiki|MacBook}}
+
{{Related|MacBookPro8,1/8,2/8,3 (2011)}}
{{Article summary end}}
+
{{Related|MacBookPro9,2 (Mid-2012)}}
 +
{{Related articles end}}
 +
 
 +
This page contains tips on installing Arch Linux on an Early 2011 MacBook Pro.
  
 
discuss at https://bbs.archlinux.org/viewtopic.php?pid=1021706
 
discuss at https://bbs.archlinux.org/viewtopic.php?pid=1021706
Line 43: Line 46:
 
   radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2
 
   radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2
  
This should give you Intel graphics output. Note that this requires kernel 3.5rc1 or higher; use linux-mainline from Aur if necessary. See [https://bugzilla.kernel.org/show_bug.cgi?id=42842 this bug] for more details.
+
This should give you Intel graphics output. Note that this requires kernel 3.5rc1 or higher; use linux-mainline from AUR if necessary. See [https://bugzilla.kernel.org/show_bug.cgi?id=42842 this bug] for more details.
 
+
If you don't have KMS for intel driver, you need install 'xf86-video-fbdev'
+
  
  # pacman -S  xf86-video-intel and xf86-video-fbdev
+
If you don't have KMS for intel driver, you need install {{Pkg|xf86-video-fbdev}} and, of course {{Pkg|xf86-video-intel}}.
  
 
If Xorg refuses to start with a "no screens found" message you may have to tell Grub2 to turn off the Radeon card and turn on the Intel card during boot.  Edit /etc/grub.d/00_header and add the "outb" lines immediately after "set gfxmode=" (Tested on an 8,2 MBP):
 
If Xorg refuses to start with a "no screens found" message you may have to tell Grub2 to turn off the Radeon card and turn on the Intel card during boot.  Edit /etc/grub.d/00_header and add the "outb" lines immediately after "set gfxmode=" (Tested on an 8,2 MBP):
Line 60: Line 61:
 
   ...
 
   ...
  
Then regenerate your grub.cfg:
+
Then regenerate your {{ic|grub.cfg}}:
  
 
   # grub-mkconfig -o /boot/grub/grub.cfg
 
   # grub-mkconfig -o /boot/grub/grub.cfg
Line 80: Line 81:
 
'''Setting up EFISTUB'''
 
'''Setting up EFISTUB'''
  
Follow [[UEFI Bootloaders#Linux Kernel EFISTUB]]
+
Follow [[UEFI Bootloaders#Linux Kernel EFISTUB]]{{Broken section link}}
  
 
'''Add Kernel MODULES'''
 
'''Add Kernel MODULES'''
Line 86: Line 87:
 
Without this, you will get 'root fs not found' error.
 
Without this, you will get 'root fs not found' error.
  
Edit /etc/mkinitcpio.conf
+
Edit {{ic|/etc/mkinitcpio.conf}}:
  
 
   MODULES="..ahci libahci.."
 
   MODULES="..ahci libahci.."
Line 94: Line 95:
 
   # mkinitcpio -p linux
 
   # mkinitcpio -p linux
  
=== BIOS Boot ===
+
=== BIOS boot ===
  
 
Boot into BIOS emulation mode. AMD card works, but intel card doesn't.
 
Boot into BIOS emulation mode. AMD card works, but intel card doesn't.
  
Use refind to load grub-legacy.
+
Use refind to load GRUB legacy.
  
== Network ==  
+
== Wireless network ==  
  
===Wireless:===
+
See [[Broadcom wireless]] for b43 installation and usage.
{{Note|need Kernel 3.3 or later}}
+
  
Install {{aur|b43-firmware}} package from the [[AUR]].
+
== Keyboard and touchPad ==
  
Unload b43 and bcma modules and load b43 module
+
=== Keyboard === 
  
{{bc|
+
Default F1 key represents XF86MonBrightnessDown, if you want it represents to F1. Set {{ic|1=fnmode=2}} parameters to hid_apple module.
# rmmod b43 bcma
+
See [[Kernel modules#Configuration]]{{Broken section link}} for instruction.  
# modprobe b43}}
+
That's it. The wireless should work now.
+
  
'''Ethernet''': works out-of-the-box
+
=== Touchpad ===
 
+
'''Bluetooth''': Unkown
+
 
+
== Keyboard & TouchPad ==
+
 
+
'''Keyboard''': 
+
 
+
default F1 key represents XF86MonBrightnessDown, if you want it represents to F1.
+
 
+
  echo 2 > /sys/module/hid_apple/parameters/fnmode
+
  # value 1: F1 is XF86MonBrightnessDown
+
  # value 2: F1 is F1, Fn + F1 is XF86MonBrightnessDown.
+
 
+
and put that into /etc/rc.local
+
 
+
'''Touchpad''':
+
  
 
Two finger scrolling and left-click works out of the box. Unfortunately the right-click is not functional.
 
Two finger scrolling and left-click works out of the box. Unfortunately the right-click is not functional.
Line 136: Line 118:
 
'''14/09/2012 : right click (2 fingers) and middle click (3 fingers) works out of the box with KDE.'''
 
'''14/09/2012 : right click (2 fingers) and middle click (3 fingers) works out of the box with KDE.'''
  
To enable most of the multitouch touchpad features (even right and middle clik) use [https://github.com/BlueDragonX/xf86-input-mtrack mtrack], which is avaible in [https://aur.archlinux.org/packages.php?ID=48505 AUR]. The configuration is done via the /etc/X11/xorg.conf.d/10-mtrack.conf file. Check if the mtrack module is properly loaded in the /var/log/Xorg.0.log file. Sometimes xorg loads other drivers before, like eg. synpatics, and the mtrack driver is not used at all.
+
There are two drivers to provide features to the touchpad (including right and middle click): [https://github.com/BlueDragonX/xf86-input-mtrack mtrack] which is reported to work well and [[Synaptics]] which provides more features but might require some tuning.
 +
 
 +
'''mtrack:'''
 +
 
 +
Mtrack is available in [https://aur.archlinux.org/packages.php?ID=48505 AUR]. The configuration is done via the /etc/X11/xorg.conf.d/10-mtrack.conf file. Check if the mtrack module is properly loaded in the /var/log/Xorg.0.log file. Sometimes xorg loads other drivers before, like eg. synpatics, and the mtrack driver is not used at all.
  
 
For an MBP 8,3 I needed to use the following config (in /etc/X11/xorg.conf.d/10-mtrack.conf) to stop it picking up other input devices by mistake:
 
For an MBP 8,3 I needed to use the following config (in /etc/X11/xorg.conf.d/10-mtrack.conf) to stop it picking up other input devices by mistake:
Line 148: Line 134:
 
  EndSection
 
  EndSection
  
== Video & Screen ==
+
'''synaptics:'''
 +
 
 +
See [[Touchpad Synaptics#Installation]] for synaptics installation and configuration instructions.
 +
 
 +
{{Tip|[[Touchpad_Synaptics#Synclient|Synclient]] provides some additional configuration for the touchpad.}}
 +
  #list all possible configurable parameters.
 +
  synclient
 +
 
 +
  #To change a value for a command use `synclient command=X`
 +
  #Example:
 +
  synclient HorizTwoFingerScroll=1
 +
 
 +
After you have successfully tried and tested your options through synclient, you can make these changes permanent by adding them to /etc/X11/xorg.conf.d/50-synaptics.conf
 +
 
 +
== Video and screen ==
 +
 
 
'''13-inch'''
 
'''13-inch'''
  
Intel HD Graphics 3000: works with xf86-video-intel
+
Intel HD Graphics 3000: works with {{Pkg|xf86-video-intel}}.
  
Adjust Brightness: works with {{pkg|xorg-xbacklight}}
+
Adjust Brightness: works with {{Pkg|xorg-xbacklight}}
 
For example:
 
For example:
  
  xbacklight -inc 7 # increase brightness
+
  $ xbacklight -inc 7 # increase brightness
  xbacklight -dec 7 # decrease brightness
+
  $ xbacklight -dec 7 # decrease brightness
 +
 
 +
or you can use a simple bash script that provides screen and keyboard backlight management by simple cli (-d for display / -k for keyboard)
 +
 +
#!/bin/bash
 +
case $1 in
 +
        -d|--display)
 +
            if [ "$2" != "0" ]
 +
                then
 +
                    echo "$[(($2 * 4882) / 100) % 4883]" > /sys/class/backlight/intel_backlight/brightness
 +
            fi;;
 +
        -k|--keyboard)
 +
            echo "$[(($2 * 255) / 100) % 256]" > /sys/class/leds/smc\:\:kbd_backlight/brightness;;
 +
        -h|--help)
 +
            echo -e "MacBook 8.1 brightness helper\n\t-d\tset display brightness (0-100%)\n\t-k\tset keyboard brightness (0-100%)\n";;
 +
        *)
 +
            echo -e "Unknown option try -h or --help";;
 +
esac
 +
 
 +
Save it in {{ic|/usr/local/bin/macbackl}} and mark it as executable:
 +
 
 +
# chown +x /usr/bin/macbackl
 +
 
 +
For usage, run:
 +
 
 +
$ macbackl --help
 +
 
 +
{{Note|You must be root to edit the files in {{ic|/sys/class/*}} but if you want you can chown {{ic|/sys/class/leds/smc\:\:kbd_backlight/brightness}} and {{ic|/sys/class/backlight/intel_backlight/brightness}}}}
  
 
'''15-inch and 17-inch'''
 
'''15-inch and 17-inch'''
  
AMD Radeon HD 6490M: Unknown
+
AMD Radeon HD 6490M: Unknown.
  
AMD Radeon HD 6750M: works with xf86-video-ati
+
AMD Radeon HD 6750M and 6770M: works with {{Pkg|xf86-video-ati}}.
  
Adjust Brightness: install AUR package {{aur|apple-bl-gmux}} and reboot system.
+
Adjust Brightness: install AUR package {{AUR|apple-bl-gmux}}{{Broken package link|{{aur-mirror|apple-bl-gmux}}}} and reboot system.
  
  $ echo 34839 | sudo tee /sys/class/backlight/gmux_backlight/brightness
+
# echo 34839 > /sys/class/backlight/gmux_backlight/brightness
  
 
== Sound ==
 
== Sound ==
Line 173: Line 201:
 
'''8,1 and 8,2'''
 
'''8,1 and 8,2'''
  
  $ alsamixer # unmute 'Front Speaker' and 'Surround Speaker'
+
$ alsamixer # unmute 'Front Speaker' and 'Surround Speaker'
  
 
'''8,3'''
 
'''8,3'''
Line 179: Line 207:
 
Using [[PulseAudio]] sound works out of the box. However some applications (e.g. [[Vlc]]) have intermittent crackling; appending 'tsched=0' to 'module-udev-detect' in /etc/pulse/default.pa fixes this.
 
Using [[PulseAudio]] sound works out of the box. However some applications (e.g. [[Vlc]]) have intermittent crackling; appending 'tsched=0' to 'module-udev-detect' in /etc/pulse/default.pa fixes this.
  
== Suspend & Hibernate ==  
+
== Suspend and hibernate ==  
  
Consulte [[Suspend and Hibernate]].
+
Consulte [[Suspend and hibernate]].
  
 
'''8,1'''
 
'''8,1'''
  
For s2ram install [https://aur.archlinux.org/packages.php?ID=44473 uswsusp-git] and add to file /etc/pm/config.d/module following content:
+
For s2ram install {{AUR|uswsusp-git}} and add to file {{ic|/etc/pm/config.d/module}} following content:
  
 
   SUSPEND_MODULES="bcma b43"  
 
   SUSPEND_MODULES="bcma b43"  
Line 200: Line 228:
 
'''8,3'''
 
'''8,3'''
  
Using linux-mainline 3.6r2 from [[AUR]], supend and resume work out of the box, including wireless reconnection.
+
Supend and resume work out of the box, including wireless reconnection.
  
 
== HFS+ ==
 
== HFS+ ==
Line 212: Line 240:
 
  hcitool scan
 
  hcitool scan
  
There seems to be a conflict between the bluetooth module and the b43 one (wifi), as written in [http://blog.tkassembled.com/188/macbook-pro-83-bluetooth-issues-on-linux/ this blog post]. The solution is to do the following:
+
There seems to be a conflict between the bluetooth module and the b43 one (wifi), as written in [http://blog.tkassembled.com/188/macbook-pro-83-bluetooth-issues-on-linux/ this blog post]. The solution is creating {{ic|/etc/modprobe.d/b43.conf}} with the following content:
 
+
options b43 btcoex=0
# rmmod b43
+
pair your  bluetooth device
+
# modprobe b43
+
 
+
=== Alternative solution ===
+
 
+
Create {{ic|/etc/modprobe.d/b43.conf}} with the following content:
+
{{bc|1=options b43 btcoex=0}}
+
  
 
== Webcam ==
 
== Webcam ==
  
 
In order to use your webcam you need to have permission to use /dev/video0.  
 
In order to use your webcam you need to have permission to use /dev/video0.  
  # gpasswd -a <username> video
+
  # gpasswd -a ''username'' video
  
 
Test to see if it works
 
Test to see if it works
Line 233: Line 253:
 
=== With linux-mainline ===
 
=== With linux-mainline ===
  
As noted elsewhere in this document, some MBP features work best (or only) with the latest kernel; the usual way to install this is using the [https://aur.archlinux.org/packages.php?ID=50893 linux-mainline] AUR package. However, as of 3.6.rc3 the config for linux-mainline disables webcam support (due to changed defaults in kernel). [http://pastebin.com/WbYpPrg1 This patch] to the x86_64 config fixes this issue.
+
As noted elsewhere in this document, some MBP features work best (or only) with the latest kernel; the usual way to install this is using the {{AUR|linux-mainline}} package. However, as of 3.6.rc3 the config for linux-mainline disables webcam support (due to changed defaults in kernel). [http://pastebin.com/WbYpPrg1 This patch] to the x86_64 config fixes this issue.
  
 
== Others that works-out-of-the-box ==
 
== Others that works-out-of-the-box ==
Line 269: Line 289:
 
On boot, grub2-efi may complain that no root fs is found. This is due to the ahci modules being improperly loaded.  
 
On boot, grub2-efi may complain that no root fs is found. This is due to the ahci modules being improperly loaded.  
  
chroot into the installed Arch system. Then edit the /etc/mkinitcpio.conf MODULES array:
+
chroot into the installed Arch system. Then edit the {{ic|/etc/mkinitcpio.conf}} MODULES array:
  
 
  MODULES="..ahci libahci.."
 
  MODULES="..ahci libahci.."
Line 275: Line 295:
 
Then re-generate the boot img:
 
Then re-generate the boot img:
  
  mkinitcpio -p linux
+
  # mkinitcpio -p linux

Latest revision as of 10:44, 7 August 2016

Related articles

This page contains tips on installing Arch Linux on an Early 2011 MacBook Pro.

discuss at https://bbs.archlinux.org/viewtopic.php?pid=1021706

Installation

Use the latest Arch Installation Image from here: https://www.archlinux.org/download/

EFI Boot

Consult UEFI

Warning: efibootmgr may brick your Mac firmware.

radeon driver which only loads properly on Macs in BIOS emulation mode, problem description and possible solution here.

8,1

Tested on macbook pro 8.1 . Forum thread: [1]

Add following to Kernel Parameters.

 i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 usbcore.autosuspend=1 h

8,2 and 8,3

While using EFI Boot, you will find

 radeon 0000:01:00.0: >Invalid ROM contents
 i915 0000:00:02.0: Invalid ROM contents

Which means you need disable KMS for amd and intel card. Add following to Kernel Parameters.

 i915.modeset=0 radeon.modeset=0

newer versions of the Xorg Intel/i915 driver require KMS to work; without it the X server will fallback to framebuffer mode, with poor performance. The underlying issue is that the Intel KMS driver selects the wrong video output; to fix this try the following settings (tested on an 8,3/17" MBP):

 radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2

This should give you Intel graphics output. Note that this requires kernel 3.5rc1 or higher; use linux-mainline from AUR if necessary. See this bug for more details.

If you don't have KMS for intel driver, you need install xf86-video-fbdev and, of course xf86-video-intel.

If Xorg refuses to start with a "no screens found" message you may have to tell Grub2 to turn off the Radeon card and turn on the Intel card during boot. Edit /etc/grub.d/00_header and add the "outb" lines immediately after "set gfxmode=" (Tested on an 8,2 MBP):

 ...
 set gfxmode=${GRUB_GFXMODE}
 outb 0x728 1
 outb 0x710 2
 outb 0x740 2
 outb 0x750 0
 load video
 ...

Then regenerate your grub.cfg:

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

Using rEFInd and Kernel EFISTUB

Install rEFInd

Consult Installing rEFInd

Boot into Mac OS X

 # mkdir -p /efi/refind
 # cp -r refind/* /efi/refind/
 # rm /efi/refind/refind_ia32.efi
 # mv /efi/refind/refind.conf-sample /efi/refind/refind.conf and adjust it
 # bless --setBoot --folder /efi/refind --file /efi/refind/refind_x64.efi

Setting up EFISTUB

Follow UEFI Bootloaders#Linux Kernel EFISTUB[broken link: invalid section]

Add Kernel MODULES

Without this, you will get 'root fs not found' error.

Edit /etc/mkinitcpio.conf:

 MODULES="..ahci libahci.."

Then re-generate the boot img:

 # mkinitcpio -p linux

BIOS boot

Boot into BIOS emulation mode. AMD card works, but intel card doesn't.

Use refind to load GRUB legacy.

Wireless network

See Broadcom wireless for b43 installation and usage.

Keyboard and touchPad

Keyboard

Default F1 key represents XF86MonBrightnessDown, if you want it represents to F1. Set fnmode=2 parameters to hid_apple module. See Kernel modules#Configuration[broken link: invalid section] for instruction.

Touchpad

Two finger scrolling and left-click works out of the box. Unfortunately the right-click is not functional.

14/09/2012 : right click (2 fingers) and middle click (3 fingers) works out of the box with KDE.

There are two drivers to provide features to the touchpad (including right and middle click): mtrack which is reported to work well and Synaptics which provides more features but might require some tuning.

mtrack:

Mtrack is available in AUR. The configuration is done via the /etc/X11/xorg.conf.d/10-mtrack.conf file. Check if the mtrack module is properly loaded in the /var/log/Xorg.0.log file. Sometimes xorg loads other drivers before, like eg. synpatics, and the mtrack driver is not used at all.

For an MBP 8,3 I needed to use the following config (in /etc/X11/xorg.conf.d/10-mtrack.conf) to stop it picking up other input devices by mistake:

Section "InputClass"
  Identifier "Multitouch Touchpad"
  Driver "mtrack"
  MatchDevicePath "/dev/input/event*"
  MatchProduct "bcm5974"
  MatchIsTouchpad "true"
EndSection

synaptics:

See Touchpad Synaptics#Installation for synaptics installation and configuration instructions.

Tip: Synclient provides some additional configuration for the touchpad.
 #list all possible configurable parameters.
 synclient
 
 #To change a value for a command use `synclient command=X`
 #Example:
 synclient HorizTwoFingerScroll=1

After you have successfully tried and tested your options through synclient, you can make these changes permanent by adding them to /etc/X11/xorg.conf.d/50-synaptics.conf

Video and screen

13-inch

Intel HD Graphics 3000: works with xf86-video-intel.

Adjust Brightness: works with xorg-xbacklight For example:

$ xbacklight -inc 7 # increase brightness
$ xbacklight -dec 7 # decrease brightness

or you can use a simple bash script that provides screen and keyboard backlight management by simple cli (-d for display / -k for keyboard)

#!/bin/bash
case $1 in
       -d|--display)
           if [ "$2" != "0" ]
               then
                   echo "$[(($2 * 4882) / 100) % 4883]" > /sys/class/backlight/intel_backlight/brightness
           fi;;
       -k|--keyboard)
           echo "$[(($2 * 255) / 100) % 256]" > /sys/class/leds/smc\:\:kbd_backlight/brightness;;
       -h|--help)
           echo -e "MacBook 8.1 brightness helper\n\t-d\tset display brightness (0-100%)\n\t-k\tset keyboard brightness (0-100%)\n";;
       *)
           echo -e "Unknown option try -h or --help";;
esac

Save it in /usr/local/bin/macbackl and mark it as executable:

# chown +x /usr/bin/macbackl

For usage, run:

$ macbackl --help
Note: You must be root to edit the files in /sys/class/* but if you want you can chown /sys/class/leds/smc\:\:kbd_backlight/brightness and /sys/class/backlight/intel_backlight/brightness

15-inch and 17-inch

AMD Radeon HD 6490M: Unknown.

AMD Radeon HD 6750M and 6770M: works with xf86-video-ati.

Adjust Brightness: install AUR package apple-bl-gmuxAUR[broken link: archived in aur-mirror] and reboot system.

# echo 34839 > /sys/class/backlight/gmux_backlight/brightness

Sound

8,1 and 8,2

$ alsamixer # unmute 'Front Speaker' and 'Surround Speaker'

8,3

Using PulseAudio sound works out of the box. However some applications (e.g. Vlc) have intermittent crackling; appending 'tsched=0' to 'module-udev-detect' in /etc/pulse/default.pa fixes this.

Suspend and hibernate

Consulte Suspend and hibernate.

8,1

For s2ram install uswsusp-gitAUR and add to file /etc/pm/config.d/module following content:

 SUSPEND_MODULES="bcma b43" 
 SLEEP_MODULE=uswsusp

Without this, system hangs after the machine wakes up and tries to reconnect to the wireless network.

8,2

BIOS Boot: using linux >= 3.6.2, supend and resume works out-of-the-box.

EFI Boot: resume may not work.

8,3

Supend and resume work out of the box, including wireless reconnection.

HFS+

HFS is mounted as Read-Only. By turning journaling off in OS X, the HFS+ file system will be read/write under Linux.

Bluetooth

I had problems pairing devices, nothing was detected with

hcitool scan

There seems to be a conflict between the bluetooth module and the b43 one (wifi), as written in this blog post. The solution is creating /etc/modprobe.d/b43.conf with the following content:

options b43 btcoex=0

Webcam

In order to use your webcam you need to have permission to use /dev/video0.

# gpasswd -a username video

Test to see if it works

$ mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -fps 15 -vf screenshot

With linux-mainline

As noted elsewhere in this document, some MBP features work best (or only) with the latest kernel; the usual way to install this is using the linux-mainlineAUR package. However, as of 3.6.rc3 the config for linux-mainline disables webcam support (due to changed defaults in kernel). This patch to the x86_64 config fixes this issue.

Others that works-out-of-the-box

  • Sensors

Troubleshooting

Grub2-EFI boot: Intel invalid ROM contents

If you see this error on boot and notice the screen output seemingly frozen, you need to disable KMS.

Append the following to your /etc/grub/defaults LINUX line:

i915.modeset=0 radeon.modeset=0

However, newer versions of the Xorg Intel/i915 driver require KMS to work; without it the X server will fallback to framebuffer mode, with poor performance. The underlying issue is that the Intel KMS driver selects the wrong video output; to fix this try the following settings (tested on an 8,3/17" MBP):

radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2

This should give you Intel graphics output. Note that this requires kernel 3.5rc1 or higher; use linux-mainline from Aur if necessary. See this bug for more details.

You may find you need to enable the Intel device; if using Grub, the following should enable it at boot time:

set gfxpayload=keep
# Switch gmux to IGD
outb 0x728 1
outb 0x710 2
outb 0x740 2

Alternatively, if you have OS X available you can use gfxCardStatus to switch to the Intel device before booting into Linux.

Grub2-EFI boot: root fs not found

On boot, grub2-efi may complain that no root fs is found. This is due to the ahci modules being improperly loaded.

chroot into the installed Arch system. Then edit the /etc/mkinitcpio.conf MODULES array:

MODULES="..ahci libahci.."

Then re-generate the boot img:

# mkinitcpio -p linux