This howto describes the linux installation on an Ibook G4 12″ 1,2 Ghz ( LinuxOnIbookG4 )
Here you can find the files related to this document:
This is my iBook G4 Version:
root@abook aronchi # cat /proc/cpuinfo
processor : 0
cpu : 7447A, altivec supported
clock : 1200MHz
revision : 1.1 (pvr 8003 0101)
bogomips : 598.01
machine : PowerBook6,5
motherboard : PowerBook6,5 MacRISC3 Power Macintosh
detected as : 287 (iBook G4)
pmac flags : 0000001b
L2 cache : 512K unified
memory : 512MB
pmac-generation : NewWorld
The clock speed could be different because of speedfreq use, see below for more informations.
root@abook aronchi # lspci
0000:00:0b.0 Host bridge: Apple Computer Inc. UniNorth 2 AGP
0000:00:10.0 VGA compatible controller: ATI Technologies Inc M9+ 5C63 [Radeon Mobility 9200 (AGP)] (rev 01)
0001:10:0b.0 Host bridge: Apple Computer Inc. UniNorth 2 PCI
0001:10:12.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)
0001:10:17.0 Class ff00: Apple Computer Inc. KeyLargo/Intrepid Mac I/O
0001:10:18.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB
0001:10:19.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB
0001:10:1a.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB
0001:10:1b.0 USB Controller: NEC Corporation USB (rev 43)
0001:10:1b.1 USB Controller: NEC Corporation USB (rev 43)
0001:10:1b.2 USB Controller: NEC Corporation USB 2.0 (rev 04)
0002:20:0b.0 Host bridge: Apple Computer Inc. UniNorth 2 Internal PCI
0002:20:0d.0 Class ff00: Apple Computer Inc. UniNorth/Intrepid ATA/100
0002:20:0e.0 FireWire (IEEE 1394): Apple Computer Inc. UniNorth 2 FireWire (rev 81)
0002:20:0f.0 Ethernet controller: Apple Computer Inc. UniNorth 2 GMAC (Sun GEM) (rev 80)
I’ve installed a Gentoo, following the http://www.gentoo.org/doc/en/handbook/handbook-ppc.xml ppc handbook. After a base installation, you can use my conf files to make your iBook G4 a real lovely GNU/Linux (Gentoo) home.
Copy my .config file into /usr/src/linux (or wherever you did copy the kernel source files) and do a
[sourcecode language=”java”]make oldconfig[/sourcecode]
This is my make.conf file:
I’ve managed to make 3D acceleration with DRI work and VGA out, also together.
So, If you want to use 3D acceleration without MergedFB or Xinerama, take my xorg.conf
This option make a faster 3D acceleration, but video output will not work.
But if you want to use Xinerama with dual head configuration, without 3D acceleration (both clone mode and one screen left of the other), you want to use that:
Xorg.conf.dual with a cvs or => 6.8.2 Xorg version (because you need these xorg radeon patches https://bugs.freedesktop.org/show_bug.cgi?id=2064, merged only in newer xorg versions. If you don’t want to overwrite your existing xorg version, you can build xorg from cvs as in this xorg-cvs-howto.txt , with my host.def.
NB: if you want to have the two screens spanning on OSX you must patch your iBook with that http://www.rutemoeller.com/mp/ibook/ibook_e.html Spanning Patch Ibook: I suggest you to do that if you know what you’re doing. It’s not necessary if you use only Linux.
I made MergedFB working, so now I have a clone mode (VGA out is the same of the TFT) with 3D DRI acceleration.
You must use this simple configuration:
NB: These 3 configurations are alternative, you can use one.
Make the Apple key works as Altgr and the keyboard more linux confortable
My Apple G4 12″ doesn’t have any Altgr Key, so it’s impossibile to write composed symbols as @ or #. To correct this problem, you can do this procedure on Gnome:
1. Computer -> Desktop Preferences -> Keyboard
2. “Layout Options” tab
3. In the right-hand list open the “Third level choosers” group
4. Highlight “Press Left Win-key to choose 3rd level”
5. Click “Add”
Or add this to keyboard section on /etc/X11/xorg.conf file:
[sourcecode language=”java”]”XkbOptions” “lv3:lwin_switch”[/sourcecode]
My xorg.conf file keyboard section is:
Option “XkbKeycodes” “macintosh”
Option “XkbSymbols” “macintosh/us”
Option “XkbGeometry” “macintosh”
Option “XkbOptions” “ctrl:nocaps, lv3:lwin_switch”
Option “XkbRules” “xfree86”
Option “XkbModel” “pc105”
Option “LeftAlt” “Meta”
Option “RightAlt” “LWin”
Option “XkbLayout” “it”
On the US keyboard, the ~ and +/- keys aren’t mapped correctly.
add these lines to a startup script:
xmodmap -e “keycode 49 = section plusminus”
xmodmap -e “keycode 94 = quoteleft asciitilde”
Three Button Mouse Emulation
I usually use an external USB three button mouse, but I want to have an alternative access to the middle and right button without the external mouse.
To use an alternative key to emulate the mouse buttons, you must do:
echo “1” > /proc/sys/dev/mac_hid/mouse_button_emulation
The standard keys now are on Fn+CTRL for middle button and Fn+alt for right button.
If you want to change the keys, you must do:
echo “68” > /proc/sys/dev/mac_hid/mouse_button2_keycode
echo “87” > /proc/sys/dev/mac_hid/mouse_button3_keycode
Remember, you must do these commands every boot, so you can add to an init script.
You can change the keycodes 68 and 87 writing your own. To view what keycode is a button press you can use:
If your distro supports /etc/sysctl.conf, you can add these lines to this file:
# Mouse button emulation:
dev/mac_hid/mouse_button_emulation = 1
#dev/mac_hid/mouse_button2_keycode = 68
#dev/mac_hid/mouse_button3_keycode = 87
Uncomment the last lines if you want to edit the keycodes.
In order to make the keyword and the power management more usable, i use pbbuttons:
rc-update add pbbuttonsd default
Now you must configure the /etc/pbbuttons.conf file. Here is mine:
Kernel 2.6.11 comes with support for putting the iBook G4 to sleep. However you still have to enable it when configuring the kernel.
Benh has released a patch that supports Apple iBook g4 sleep: you need it if you have a kernel version < 2.6.11.
You can find the 2.6.9 patch version also here:
Just apply it to kernel source with
cp ./albook-ibookg4-sleep-4.diff.gz /usr/src/linux
patch -p1 < albook-ibookg4-sleep-4.diff make menuconfig [/sourcecode] And add the Powerbook Power Management in the Drivers -> Macintosh kernel configuration section
After that, you can use pbbuttons to make the iBook sleep when the LCD is closed.
Some problems with sleep function comes from modules loaded (usb, thermal, etc). You can solve them if you use powerprefs. Before going to sleep, your iBook must do:
lsmod | cut -f 1 -d ” ” | grep -v Module | xargs > /tmp/modules.loaded
rmmod `cat /tmp/modules.loaded`
and after resume it must do:
for module in `cat /tmp/modules.loaded`
In gentoo you must install app-laptop/powerprefs and use my /etc/power/event.d/modules file.
CPU Variable Speed
To make you iBook a less battery user, you can alter automagically the cpu freq in order to use only the calculation power you need. So, when you use all the cpu, it works at the 100% of his speed, but when you don’t use it the cpu runs slower to get colder.
I’ve used speedfreq:
rc-update add speedfreqd default
To get a better control of your iBook G4 temperature and fan speed, you can use the module therm_adt746x.
or put the module into your /etc/modules.autoload file
The module I use and I load at startup are written into a file called /etc/modules.autoload.d/kernel-2.6:
modules.autoload ( My /etc/modules.autoload.d/kernel-2.6 )
[sourcecode language=”java”] sungem
ohci_hcd #usb 1
ehci_hcd #usb 2
usb_storage #mp3 mplayer and Sony digital camera
snd-powermac #for sound
snd-pcm-oss #for sound
usb-serial #for GPRS using my sony ericsson phone
visor # for palm m125
#apm_emu #emulate APM (power management)
therm_adt746 #fan control (I use fan_speed=128)
uinput #for mouseemu
uninorth-agp #for DRI (agpgart will come with it)
radeon #for DRI 3D video acceleration
therm_adt746x # to control fan speed and temp
You can configure the sound card with alsa modules and either using a sound daemon (i.e. arts), or by using oss emulation output. You can insert arts in USE flags, as I do.
Mac On Linux
Mol runs correctly on my iBook, with networking enabled.
It’s necessary to add this use flag:
before emerging //MOL//.
and now edit
to get fullscreen with MOL. Now you have linux on CTRL+ALT+F7 an MacOSX on CTRL+ALT+F8
I use an external ADSL eth0 router with dhcp, so I’ve used tun.ko kernel module and this configuration for mol:
I use the internal dhcp so in MOL I don’t have to specify an address.
I use this settings for hdparm, to increase hard disk performances and decrease the hdd temperature:
hdparm -S 1 -d1 -m16 -c1 -X udma5 /dev/hda
Make sure to load this settings on every boot.
Since I have also MacOSX, I had a problem with my clock settings. The hardware clock is set to UTC time by MacOSX, and my Linux system on everyboot read the time from the hardware clock, thinking this is set against my local time (Europe/Rome, CEST).
To solve this problem, you must tell hwclock to use –utc when used to update your system time.
In a RedHat/Fedora system is really simple, once known the origin of the problem:
Simply write this few lines into /etc/sysconfig/clock
Airport Extreme Wireless Driver
It seems (http://bcm43xx.berlios.de) someone has written a driver for the Broadcom 43xx wireless chip, the one inside AirPort Extreme included into our iBook G4. It needs 2.6.14 kernel, and I’ve uploaded my config file for the 2.6.14-rc4 (the latest 2.6.14 branch I’ve found at this time).
Now you must get the firmware of your driver. Let /media/macosx be the MacOSX partition mount point. then you must use the fwcutter utility in the package:
and then copy the *.fw files on
cp *.fw /lib/firmware/
If you want, I’ve made a copy of the driver you can download:
I loaded the bcm430x driver correctly, but I don’t have a wireless access point here, so I cannot try if it works.