Translation(s): none
Contents
DebianOn is an effort to document how to install, configure and use Debian on some specific hardware. Therefore potential buyers would know if that hardware is supported and owners would know how get the best out of that hardware. The purpose is not to duplicate the Debian Official Documentation, but to document how to install Debian on some specific hardware. If you need help to get Debian running on your hardware, please have a look at our user support channels where you may find specific channels (mailing list, IRC channel) dedicated to certain types of hardware. |
Models covered
MacBook Air
MacBook Air MC234*/A, 13.3", 2.13 GHz Intel Core 2 Duo, 2GB DDR3 SDRAM, 128 GB SDD, NVIDIA GeForce 9400M
Overall Status
Core Components |
||
Boot Standard Kernel: |
|
|
LAN network card (ASIX AX88772 USB 2.0 Ethernet): |
|
|
Detect CD/DVD (Samsung SE-S084, external DVD+RW) : |
|
|
Detect hard drives: |
|
|
Extra Features |
||
CPU Frequency Scaling |
|
|
Hibernation |
[?] |
|
Sleep / Suspend |
[?] |
|
Xorg |
|
|
- OpenGL |
|
|
- Resize-and-Rotate(randr) |
[?] |
|
Switch to External Screen |
[?] |
|
Mouse |
|
|
- Built-in (Trackpoint) |
[-] |
|
- Built-in (Touchpad) |
|
|
Modem |
[-] |
|
Wireless/Wifi |
|
|
Keyboard's Hotkeys |
[?] |
Legend :
= OK ; Unsupported(No Driver) ; = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
= Configuration Required; = Only works with a non-free driver and or firmware
Important Note
This guide describes installing Debian in single-boot mode, i.e. the existing Mac OS installation will not be preserved. The following describes which special settings and procedures were required to install Debian (and probably most other Linuxes) on the MacBook Air.
EFI and Partitioning
The MacBook Air boots using EFI 1, the first partition on the built-in HDD is reserved for EFI. Without the EFI partition (i.e. after deleting the EFI partition during installation of Debian), booting the MacBook Air was not possible. Further, it was found that the rEFIt Boot Menu and Toolkit 2 must be installed on the system before Linux could be installed (although there are probably ways around having to install rEFIt). Finally, it was required that the system use encrypted partitions, resulting in the following partition scheme:
+-----------+-----------+------------+ | /dev/sda1 | /dev/sda2 | /dev/sda3 | | EFI | boot | sda3_crypt | +-----------+-----------+------------+
EFI partition (/dev/sda1)
The EFI partition (/dev/sda1) is required for the MacBook Air to boot. The rEFIt bootloader must be installed into this partition. By default, rEFIt will install into the partition where Mac OS X is installed. However, since that partition will not be preserved, boot into Mac OS and install rEFIt manually into /dev/sda1, the EFI partition, like so (from 3):
# Download and mount the rEFIt dmg package. # Following, it is assumed that the package has been mounted in /Volumes/rEFIt. # Copy rEFIt to the EFI partition: $ sudo mkdir /efi $ sudo mount -t msdos /dev/disk0s1 /efi $ cp -r /Volumes/rEFIt/efi /efi # You should now have # /efi/efi/refit and # /efi/efi/tools # Bless rEFIt (make it bootable): $ sudo bless --mount /efi --setBoot --file /efi/efi/refit/refit.efi --labelfile /efi/efi/refit/refit.vollabel
Linux boot partition (/dev/sda2)
The GRUB bootloader and the Linux kernel will be installed into this partition (100M in size). During boot, the rEFIt bootloader will simply call GRUB, this partition is not encrypted.
Root partition (/dev/sda3)
During installation, this whole partition will be encrypted using dm-crypt. Then, LVM (Logical Volume Manager) will be used to manually create / (root, 15G in size) and /home (home, remaining space) partitions.
Initrd/keyboard: Squeeze has been installed instead of lenny because the initrd (initial RAM disk) in lenny did not detect the keyboard in the MacBook Air correctly, making it impossible to unlock the encrypted partition during boot. However, it should not be a big deal to rebuild the initrd in lenny with all required modules (hid-apple, ...) to support the MacBook Air keyboard. Besides the initrd issue, no problems were found installing lenny.
Installation medium
An external CD-ROM drive has been used to boot and install Debian, e.g. http://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/. Only the first CD/DVD is required for installing a minimal system, all other packages can be installed later on using an Internet connection.
The MacBook Air comes with a single USB connector only and does not have a built-in CD-ROM drive. Installing Linux from a bootable USB stick is not possible on the MacBook Air. Although with rEFIt Boot Menu and Toolkit 2 installed a bootable USB stick would show up in the rEFIt boot menu, the Apple firmware prevented booting from the USB stick. Other options considered were network boot and SYSLINUX -- without success. Finally, an external CD-ROM drive has been used.
During installation, apply the partition scheme described above. Besides that, installation proceeds as usual until the part where the GRUB bootloader gets installed (below).
GRUB Installation
DO NOT INSTALL GRUB IN /dev/sda!
The Debian installer (correctly) detects that Debian is the only operating system installed and suggests installing GRUB in /dev/sda. Do not install GRUB in /dev/sda, the MacBook Air need to boot from the EFI partition /dev/sda1. Rather, install Grub in /dev/sda2, the boot partition (see above).
After installing GRUB, finish the installation and reboot. rEFIt (installed in /dev/sda1) should detect the Linux boot partition (/dev/sda2) and boot from that partition.
Troubleshooting
If you end up with a computer not booting any more, reinstall Mac OS X from CD and start over. Insert the Mac OS X CD that came with your MacBook Air into the external CD-ROM drive. Press and hold the 'c' key and turn on the computer. The Mac OS installer should appear.
Configuration
Display
Xorg version: 1.7.7
Installation instructions for installing the proprietary driver from NVIDIA for the GeForce 9400M can be found here.
The Xorg configuration file /usr/share/X11/xorg.conf.d/10-nvidia.conf has been added to have Xorg use the nvidia driver (file attached at the bottom of the page).
Audio
Sound worked out-of-the-box after installing alsa-base and alsa-utils.
Mouse
- (not covered yet)
Power Management
Installed laptop-mode, works out of the box. You might want to set ENABLE_AUTO_MODULES=1 in /etc/laptop-mode/laptop-mode.conf. For CPU frequency scaling, make sure that the acpi_cpufreq module gets loaded correctly.
WiFi
Follow the instructions in the Debian Wiki.
System Summary
lspci
00:00.0 Host bridge [0600]: nVidia Corporation MCP79 Host Bridge [10de:0a82] (rev b1)
Flags: bus master, 66MHz, fast devsel, latency 0
00:00.1 RAM memory [0500]: nVidia Corporation MCP79 Memory Controller [10de:0a88] (rev b1)
Flags: bus master, 66MHz, fast devsel, latency 0
00:03.0 ISA bridge [0601]: nVidia Corporation MCP79 LPC Bridge [10de:0aaf] (rev b2)
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: bus master, 66MHz, fast devsel, latency 0
I/O ports at 2000 [size=256]
00:03.1 RAM memory [0500]: nVidia Corporation MCP79 Memory Controller [10de:0aa4] (rev b1)
Flags: 66MHz, fast devsel
00:03.2 SMBus [0c05]: nVidia Corporation MCP79 SMBus [10de:0aa2] (rev b1)
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: 66MHz, fast devsel, IRQ 15
I/O ports at 2180 [size=64]
I/O ports at 2140 [size=64]
I/O ports at 2100 [size=64]
Capabilities: [44] Power Management version 2
Kernel driver in use: nForce2_smbus
00:03.3 RAM memory [0500]: nVidia Corporation MCP79 Memory Controller [10de:0a89] (rev b1)
Flags: 66MHz, fast devsel
00:03.4 RAM memory [0500]: nVidia Corporation Device [10de:0a98] (rev b1)
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: 66MHz, fast devsel
00:03.5 Co-processor [0b40]: nVidia Corporation MCP79 Co-processor [10de:0aa3] (rev b1)
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 17
Memory at 93300000 (32-bit, non-prefetchable) [size=512K]
00:04.0 USB Controller [0c03]: nVidia Corporation MCP79 OHCI USB 1.1 Controller [10de:0aa5] (rev b1) (prog-if 10 [OHCI])
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 21
Memory at 93387000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [44] Power Management version 2
Kernel driver in use: ohci_hcd
00:04.1 USB Controller [0c03]: nVidia Corporation MCP79 EHCI USB 2.0 Controller [10de:0aa6] (rev b1) (prog-if 20 [EHCI])
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 22
Memory at 93388100 (32-bit, non-prefetchable) [size=256]
Capabilities: [44] Debug port: BAR=1 offset=00a0
Capabilities: [80] Power Management version 2
Kernel driver in use: ehci_hcd
00:06.0 USB Controller [0c03]: nVidia Corporation MCP79 OHCI USB 1.1 Controller [10de:0aa7] (rev b1) (prog-if 10 [OHCI])
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 18
Memory at 93386000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [44] Power Management version 2
Kernel driver in use: ohci_hcd
00:06.1 USB Controller [0c03]: nVidia Corporation MCP79 EHCI USB 2.0 Controller [10de:0aa9] (rev b1) (prog-if 20 [EHCI])
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 20
Memory at 93388000 (32-bit, non-prefetchable) [size=256]
Capabilities: [44] Debug port: BAR=1 offset=00a0
Capabilities: [80] Power Management version 2
Kernel driver in use: ehci_hcd
00:08.0 Audio device [0403]: nVidia Corporation MCP79 High Definition Audio [10de:0ac0] (rev b1)
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 23
Memory at 93380000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [44] Power Management version 2
Kernel driver in use: HDA Intel
00:09.0 PCI bridge [0604]: nVidia Corporation MCP79 PCI Bridge [10de:0aab] (rev b1) (prog-if 01 [Subtractive decode])
Flags: bus master, 66MHz, fast devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
Memory behind bridge: 93200000-932fffff
Capabilities: [b8] Subsystem: nVidia Corporation Device [10de:cb79]
00:0b.0 IDE interface [0101]: nVidia Corporation MCP79 SATA Controller [10de:0ab5] (rev b1) (prog-if 85 [Master SecO PriO])
Subsystem: nVidia Corporation Device [10de:cb79]
Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 25
I/O ports at 21d8 [size=8]
I/O ports at 21e4 [size=4]
I/O ports at 21d0 [size=8]
I/O ports at 21e0 [size=4]
I/O ports at 21c0 [size=16]
Memory at 93384000 (32-bit, non-prefetchable) [size=8K]
Capabilities: [44] Power Management version 2
Capabilities: [8c] SATA HBA v1.0
Capabilities: [b0] MSI: Enable+ Count=1/8 Maskable- 64bit+
Kernel driver in use: ahci
00:10.0 PCI bridge [0604]: nVidia Corporation MCP79 PCI Express Bridge [10de:0aa0] (rev b1) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
I/O behind bridge: 00001000-00001fff
Memory behind bridge: 92000000-930fffff
Prefetchable memory behind bridge: 0000000080000000-0000000091ffffff
Capabilities: [40] Subsystem: nVidia Corporation Device [10de:0000]
Capabilities: [48] Power Management version 2
Capabilities: [50] MSI: Enable- Count=1/2 Maskable- 64bit+
00:15.0 PCI bridge [0604]: nVidia Corporation MCP79 PCI Express Bridge [10de:0ac6] (rev b1) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
Memory behind bridge: 93100000-931fffff
Capabilities: [40] Subsystem: nVidia Corporation Device [10de:0000]
Capabilities: [48] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/2 Maskable- 64bit+
Capabilities: [80] Express Root Port (Slot+), MSI 00
Kernel driver in use: pcieport
02:00.0 VGA compatible controller [0300]: nVidia Corporation C79 [GeForce 9400M] [10de:0870] (rev b1) (prog-if 00 [VGA controller])
Subsystem: Apple Computer Inc. Device [106b:00ab]
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at 92000000 (32-bit, non-prefetchable) [size=16M]
Memory at 80000000 (64-bit, prefetchable) [size=256M]
Memory at 90000000 (64-bit, prefetchable) [size=32M]
I/O ports at 1000 [size=128]
[virtual] Expansion ROM at 93000000 [disabled] [size=128K]
Capabilities: [60] Power Management version 2
Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
Kernel driver in use: nvidia
03:00.0 Network controller [0280]: Broadcom Corporation BCM4321 802.11a/b/g/n [14e4:4328] (rev 05)
Subsystem: Apple Computer Inc. Device [106b:0090]
Flags: bus master, fast devsel, latency 0, IRQ 23
Memory at 93100000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [58] Vendor Specific Information: Len=78 <?>
Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [d0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Virtual Channel
Capabilities: [160] Device Serial Number 28-36-0d-ff-ff-f4-90-84
Capabilities: [16c] Power Budgeting <?>
Kernel driver in use: wl
lsusb
lsusb -v | grep -E '\<(Bus|iProduct|bDeviceClass|bDeviceProtocol)' 2>/dev/null
Bus 004 Device 005: ID 05ac:820b Apple, Inc. bDeviceClass 0 (Defined at Interface level) bDeviceProtocol 0 iProduct 0 Bus 004 Device 004: ID 05ac:820a Apple, Inc. bDeviceClass 0 (Defined at Interface level) bDeviceProtocol 0 iProduct 0 Bus 004 Device 003: ID 05ac:8216 Apple, Inc. Bluetooth USB Host Controller bDeviceClass 224 Wireless bDeviceProtocol 1 Bluetooth iProduct 2 Bluetooth USB Host Controller Bus 004 Device 002: ID 0a5c:4500 Broadcom Corp. BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth) bDeviceClass 9 Hub bDeviceProtocol 0 Full speed (or root) hub iProduct 2 BRCM2046 Hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub bDeviceClass 9 Hub bDeviceProtocol 0 Full speed (or root) hub iProduct 2 OHCI Host Controller Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub bDeviceClass 9 Hub bDeviceProtocol 0 Full speed (or root) hub iProduct 2 EHCI Host Controller Bus 002 Device 003: ID 05ac:0224 Apple, Inc. Internal Keyboard/Trackpad (ISO) bDeviceClass 0 (Defined at Interface level) bDeviceProtocol 0 iProduct 2 Apple Internal Keyboard / Trackpad (Bus Powered) (Bus Powered) Bus 002 Device 002: ID 05ac:8242 Apple, Inc. IR Receiver [built-in] bDeviceClass 0 (Defined at Interface level) bDeviceProtocol 0 iProduct 2 IR Receiver (Bus Powered) (Bus Powered) Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub bDeviceClass 9 Hub bDeviceProtocol 0 Full speed (or root) hub iProduct 2 OHCI Host Controller Bus 001 Device 003: ID 05ac:8505 Apple, Inc. Built-in iSight bDeviceClass 239 Miscellaneous Device bDeviceProtocol 1 Interface Association iProduct 2 Built-in iSight (Bus Powered) bDeviceClass 239 Miscellaneous Device bDeviceProtocol 1 Interface Association (Bus Powered) Bus 001 Device 002: ID 05ac:1402 Apple, Inc. bDeviceClass 255 Vendor Specific Class bDeviceProtocol 0 iProduct 2 Apple USB Ethernet Adapter (Bus Powered) bDeviceClass 255 Vendor Specific Class bDeviceProtocol 0 (Bus Powered) Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub bDeviceClass 9 Hub bDeviceProtocol 0 Full speed (or root) hub iProduct 2 EHCI Host Controller
USB Host controllers entries (without OHCI, UHCI, EHCI) are removed too.
Resources
Attachments
Some configuration files and sample outputs.
Useful Links
Credits