When I first installed Linux and began to compile a new kernel, I was surprised to see that the laptop remained very silent. I did not know about the therm_adt7467 module, later when I tried, I heard the fan whenever I would compile a kernel, so it is highly advised to compile it.
(See Thread therm_adt746x on debianppc Mailing List)
In order to avoid errors like this with your future kernel, when using lsmod:
pomme:~# lsmod Module Size Used by Not tainted lsmod: QM_MODULES: Function not implemented
install the package module-init-tools
(apt-get install module-init-tools)
The process from this point forward should be much simpler now, since the latest Mac port is in the mainstream kernel.
Many people I have spoken to suggested that we should not build the kernel in /usr/src, for security issues, so I will teach you 'the right way' directly, as shown below:
Create an unprivilieged user account (using adduser)
I called it 'seb'.
rsync is no longer recommended, you should use the kernel from kernel.org
Download a kernel from kernel.org, currently the most up to date is:
tar xjvf linux-2.6.3.tar.bz2 && cd linux-2.6.3
Install libncurses5-dev in order to be able to use menuconfig and kernel-package in order to build it and put it into a debian package:
apt-get install libncurses5-dev kernel-package fakeroot
(Otherwise you may get lots of 'IN from bad port 64 at c013ccac' at top of your dmesg, detailed explanation follows)
If you get lots of "IN from bad port 64 at ...", here is the reason : The dmesg buffer overflows with an error. This error is caused by your .config having a bogus ISA driver. Remove the legacy PC/AT keyboard controller driver from your .config. Benjamin Herrenschmidt
In this section, I will only expand on iBook items, you should be able to find the rest of the material shown below wrapped up in the formal .config.
Select Processor Type (6xx/7xx/74xx/8260)
Altivec Support (more info)
Thermal Management Support and Average high and low temp will not work, disable them.
CPU Frequency scaling works, enable if you want to be able to control your CPU frequency.
CPU Frequency scaling
Set Default CPUFreq governor to userspace
(otherwise the frequency scaling will be set statically to the highest possible)
You should enable 'performance' governor and 'powersave' governor along with /proc/sys/cpu/ interface (2.4 / OLD) and Support for Apple PowerBooks.
Workarounds for PPC601 bugs should not be needed (Carlos)
Machine Type (CHRP/PowerMac/PReP)
Enable Support for Open Firmware device tree in /proc (It will give an image of the device tree reported by Open Firmware)
You should probably Include IDE/ATAPI CDROM Support as a module otherwise it will check if a cd is inserted and accelerate the drive every-time you boot.
Enable Built-in PowerMac IDE support
Probe internal ATA/100 (Kauai) first
PowerMac IDE DMA support
Use DMA by defaultfrom geekounet.org : therm_adt7467 #fan control (I use fan_speed=128 )
Enable Ethernet (10 or 100Mbit)
Sun GEM support
Now, enable these as Modules (we need to load them in a precise order)
/dev/agpgart (AGP Support)
Apple UniNorth AGP Support
Enable Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) and select ATI Radeon as a module
Powermac Keywest I2C interface
Support for frame buffer devices
ATI Radeon display support
Enable Sound card support
PowerMac DMA sound support
Enable Advanced Linux Sound Architecture
OSS API emulation
OSS Mixer API (/dev/mixer*)
OSS PCM (digital audio) API (/dev/dsp*)
ALSA PowerMac devices
Enable PowerMac (AWACS, DACA, Burgundi, Tumbler, Keywest)
Use EHCI HCD support (USB 2.0) and OHCI HCD support (USB 1.1).
You may want to enable the EXPERIMENTAL Apple Macintosh file system support (HFS and HFS+ aka extended).
Enable Support for early boot text console (BootX or Open Firmware only)
fakeroot make-kpkg binary-arch
(It is a Debian command, do not be surprised, it will build your kernel into a .deb file)
I do not know why but initrd do not seem to be as widely used as on PC (no need for --initrd). (see the initrd section)
dpkg -i ../kernel-image*
(Make sure there is only one kernel package, when updating)
Enabling the ATA100 option (CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST), will switch hda and hdc :
With the kernel of the installation:
And after reboot:
So you should run into a problem when you will reboot, such as the following message:
You can reboot immediatly using ctrl+apple+power, then when you get to the second stage yaboot prompt type this:
VFS: Cannot open root device "hdc5" or unknown-block(0,0) Please append a correct "root=" boot option Kernel panic: VFS: Unable to mount root fs on unknown-block(0,0) <0>Rebooting in 180 seconds...
Linux root=/dev/hda5 (it is an American keyboard layout, the = is on the left from backspace, / is on the left from the right Shift)
Welcome to yaboot version 1.3.11 Enter "help" to get some basic usage information boot:
You should now see the following message like this:
Type in your root password
Checking root file system... fsck 1.35-WIP (31-Jan-2004) fsck.ext3: Read-only file system while trying to open /dev/hdc5 Disk write-protected; use the -n option to do a read-only check of the device. fsck failed. Please repair manually and reboot. Please note that the root file system is currently mounter read-only. To remount it read-write: # mount -n -o remount,rw / CONTROL-D will exit from this shell and REBOOT the system. Give root password for maintenance (or type Control-D for normal startup):
mount -n -o remount,rw /
Now, edit /etc/fstab and /etc/yaboot.conf, replace any instance of /dev/hdc* by /dev/hda*, except the line starting by "boot=/dev".
Do not forget to run ybin -v.
Cross fingers and reboot :]
If you have had a successful install, you should hear a beep noise when keeping down backspace.
(the following is an irc chat transcript from #debian-powerpc)
<sebfrance> demon: why initrd are not used on mac ? <demon> sebfrance: because kernel size limitations aren't present, because no one gives a rat's ass about floppy boot, except on oldworld/old chrp systems <demon> er, chrp/prep systems <demon> you can do an initrd <demon> in fact, for booting off usb or firewire, it's a must <demon> but for booting off a hard drive, it's not much of an issue <demon> plus, the number of IDE and SCSI controllers you run into on PPC is less variant than what you run across on x86 <demon> it's usually a pretty short list <sebfrance> so you can directly build them in the kernel ? <demon> yep
<xsnapcasex> why in x86 the location is arch/i386/boot/bzImage <xsnapcasex> and in ppc is in the same path where kernel is compiled <demon> because x86 can't load a raw kernel directly, because the system boots in real mode <xsnapcasex> my english level is low, sorry <demon> but powerpc can <xsnapcasex> ok <demon> on x86, you have to either (a) load the kernel into low memory, then jump to the setup routine that uses the a20 gate to push uncompressed pages into extended memory, jump to protected mode, and jump to the kernel entry point, or (b) have your loader switch into protected mode, decompress the kernel, and jump into it <demon> where on ppc, you load the kernel, and jump to its entry point, because it's always in protected mode