Translation(s): none

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 owner 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.

Models covered
MacBook Air

Overall Status

Core Components

[ATTACH]

Boot Standard Kernel:

{OK}

LAN network card (ASIX AX88772 USB 2.0 Ethernet):

{OK}

Detect CD/DVD (Samsung SE-S084, external DVD+RW) :

{OK}

Detect hard drives:

{OK}

Extra Features

CPU Frequency Scaling

{OK}

Hibernation

[?]

Sleep / Suspend

[?]

Xorg

{i}

- OpenGL

X-(

- Resize-and-Rotate(randr)

[?]

Switch to External Screen

[?]

Mouse

- Built-in (Trackpoint)

[-]

- Built-in (Touchpad)

{OK}

Modem

[-]

Wireless/Wifi

X-(

Keyboard's Hotkeys

[?]

Legend :
{OK} = OK ; {X} Unsupported(No Driver) ; /!\ = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
{i} = Configuration Required; X-( = Only works with a non-free driver and or firmware

Important Note

{i} 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

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.

Credits



CategoryDebianOn CategoryDebianOn