THE IBOOK G3

In 2002 I bought an Apple iBook G3 with a 12-inch display. I still like it even though I had to replace the internal hard drive, the power supply, the display and the keyboard till this date. :-)

From Wikipedia, the free encyclopedia:

Apple debuted the next-generation iBook G3 at a press conference in Cupertino, California on May 1, 2001. The previous bold colors and bulky form-factor were abandoned, as was the handle, the latchless design and the additional power connectors on the bottom surface.

The resulting iBook was available in white only, and incorporated transparent polycarbonate in its casing. It was 30% lighter, and occupied less than 50% of the volume of the model it replaced, being smaller in all 3 dimensions. Despite that, it added an extra USB port and a higher resolution screen. Apple claimed the compact design did not sacrifice durability, saying it was 'twice as durable' as the previous model.

With this revision, Apple began transitioning to translucent and white polycarbonate casings in most of its consumer line, such as the iMac and the eMac. In contrast, most of its professional products used an anodized aluminum finish.

GENTOO LINUX

iBook G3 running Gentoo Linux

iBook G3 12" running Gentoo Linux.
Please click to enlarge.

When MacOS X 10.2 became obsolete I decided to install Gentoo Linux on the iBook.

A good point to start from is the Gentoo Linux PPC Handbook which describes the installation process and gives an introduction to Gentoo Linux itself. In the following sections I'll provide additional information about iBook specific topics that are not covered in the handbook.

Current versions of essential core packages

  • Linux kernel v2.6.29-gentoo-r5
  • gcc 4.3.2-r3
  • glibc 2.9_p20081201-r2
  • xorg-server 1.5.3-r6

TECHNICAL DATA

Hardware information provided by lshw:

H/W path         Device             Class      Description
=============================================================================
                                    system     iBook 2 rev. 2 (Nov 2002)
/0                                  bus        Motherboard
/0/0             /proc/device-tree  memory     
/0/1                                memory     384MiB System memory
/0/1/0                              memory     128MiB SDRAM
/0/1/1                              memory     256MiB SDRAM
/0/2                                processor  750FX (700 MHz)
/0/2/0                              memory     32KiB L1 Cache
/0/2/1                              memory     512KiB L2 Cache (unified)
/0/100                              bridge     UniNorth/Pangea AGP
/0/100/10                           display    Radeon Mobility M6 LY
/0/101                              bridge     UniNorth/Pangea PCI
/0/101/17                           generic    KeyLargo/Pangea Mac I/O
/0/101/17/0      ide0               bus        IDE Channel 0
/0/101/17/0/0    /dev/hda           disk       80GB TOSHIBA MK8025GAS
/0/101/17/0/0/1  /dev/hda1          volume     31KiB Apple partition map
/0/101/17/0/0/2  /dev/hda2          volume     800KiB Apple Bootstrap
/0/101/17/0/0/3  /dev/hda3          volume     74GiB EXT3 volume
/0/101/17/0/0/4  /dev/hda4          volume     500MiB Linux swap volume
/0/101/17/0/0/5  /dev/hda5          volume     512iB Apple Free
/0/101/17/0/1    /dev/hdb           disk       TOSHIBA DVD-ROM SD-R2102
/0/101/18                           bus        KeyLargo/Pangea USB
/0/101/19                           bus        KeyLargo/Pangea USB
/0/102                              bridge     UniNorth/Pangea Internal PCI
/0/102/e                            bus        UniNorth/Pangea FireWire
/0/102/f         eth0               network    UniNorth/Pangea GMAC (Sun GEM)
/1               eth2               network    Wireless interface

GRAPHICS

Kernel settings:

Device Drivers  --->
   Graphics support  --->
      <*> /dev/agpgart (AGP Support)  --->
         <*> Apple UniNorth & U3 AGP support
      <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->
         <*> ATI Radeon
      <*> Support for frame buffer devices  --->
         <*> ATI Radeon display support
      Console display driver support  --->
         <*> Framebuffer Console support

If you'd like to control the backlight of your display:

Device Drivers  --->
   Graphics support  --->
      <*> Support for frame buffer devices  --->
         <*> ATI Radeon display support
         [*]   Support for backlight control
      -*- Backlight & LCD device support  --->
         -*- Lowlevel Backlight controls
   -*- I2C support  --->
      <*> I2C device interface
         I2C Algorithms  --->
            -*- I2C bit-banging interfaces

In order to use the brightness keys on your keyboard you need a userspace daemon like pbbuttonsd:

emerge pbbuttonsd
rc-update add pbbuttonsd default

KEYBOARD & TRACKPAD

Kernel settings:

Device Drivers  --->
   [*] Macintosh device drivers  --->
     [*] Apple Desktop Bus (ADB) support
     [*] Support for PMU based PowerMacs
     [*] Support for ADB input devices (keyboard, mice, ...)
   Input device support  --->
     <*> Event interface

USB DEVICES

General kernel settings:

Device Drivers  --->
   [*] USB support -->
      <*> Support for Host-side USB
         <*> OHCI HCD support
         [*]   OHCI support for PPC USB controller on OF platform bus
         [*]     Support big endian HC

USB mice and keyboards:

Device Drivers  --->
   [*] HID Devices  --->
      -*- Generic HID support
      <*> USB Human Interface Device (full HID) support

USB mass storage devices:

Device Drivers  --->
   SCSI device support  --->
      <*> SCSI device support
      <*> SCSI disk support
      <*> SCSI CDROM support
      <*> SCSI generic support
   [*] USB support -->
      <*> USB Mass Storage support

FIREWIRE

Kernel settings:

Device Drivers  --->
   SCSI device support  --->
      <*> SCSI device support
      <*> SCSI disk support
      <*> SCSI CDROM support
      <*> SCSI generic support
   IEEE 1394 (FireWire) support  --->
      <*> Stable FireWire stack
      <*>   OHCI-1394 controllers
      <*>   Storage devices (SBP-2 protocol)
      <*>   raw1394 userspace interface

IDE/ATAPI

Kernel settings:

Device Drivers  --->
   <*> ATA/ATAPI/MFM/RLL support  --->
      <*> generic ATA/ATAPI disk support
      [*]   ATA disk support
      <*> Include IDE/ATAPI CDROM support
      [*] legacy /proc/ide/ support
      [*] Probe IDE PCI devices in the PCI bus order (DEPRECATED)
      <*> PowerMac on-board IDE support

If you'd like to use the front LED as IDE LED:

Device Drivers  --->
   [*] Macintosh device drivers  --->
      [*] Apple Desktop Bus (ADB) support
      [*] Support for PMU based PowerMacs
      [*]   Support for the Power/iBook front LED
      [*]     Use front LED as IDE LED by default

ETHERNET (100Mbit)

Kernel settings:

Device Drivers  --->
   [*] Network device support  --->
      [*] Ethernet (10 or 100Mbit)  --->
         <*> Sun GEM support

AIRPORT (802.11b)

In order to use WPA-PSK with the Airport card you need an up-to-date firmware. Download it here, name it agere_sta_fw.bin and put it in the firmware folder of your kernel sources.

Kernel settings:

[*] Networking support  --->
   [*] Wireless  --->
      -*- Wireless extensions
Device Drivers  --->
   Generic Driver Options  --->
      [*]    Include in-kernel firmware blobs in kernel binary
      (agere_sta_fw.bin) External firmware blobs to build into the kernel binary
      (firmware) Firmware blobs root directory
   [*] Network device support  --->
      Wireless LAN  --->
         [*] Wireless LAN (IEEE 802.11)
         <*>   Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)
         [*]     Cache Hermes firmware on driver initialisation
         <*>     Apple Airport support (built-in)

WPA-PSK requires wpa_supplicant to be installed:

emerge wpa_supplicant

SOUND (ALSA)

Kernel settings:

Device Drivers  --->
   <*> Sound card support  --->
      <*> Advanced Linux Sound Architecture  --->
         <*> Sequencer support
         <*>   Sequencer dummy client
         <*> OSS Mixer API
         <*> OSS PCM (digital audio) API
         [*]   OSS PCM (digital audio) API - Include plugin system (NEW)
         [*] OSS Sequencer API
         [*] Support old ALSA API
         [*] PowerPC sound devices  --->
            <*> PowerMac (AWACS, DACA, Burgundy, Tumbler, Keywest)
            [*]   Toggle DRC automatically at headphone/line plug-in

Also, you need to configure your sound card. The package alsa-utils provides the necessary tools and an init script:

emerge alsa-utils
rc-update add alsasound default

In order to use the loudness keys on your keyboard you need a userspace daemon like pbbuttonsd:

emerge pbbuttonsd
rc-update add pbbuttonsd default

UDEV

The correct kernel settings for the udev device manager (introduced with Linux kernel 2.6) are a bit tricky, so I mention them here:

File systems  --->
   [*] Inotify file change notification support
   [*]   Inotify support for userspace
   Pseudo filesystems  --->
      [*] Virtual memory file system support (former shm fs)

MISCELLANEOUS FILES