Inert Detritus The Internet's dust bunnies

30 September 2007 @ 11am

Hacking the OS: Kernel Extensions and Software Updates

Hacking the OS: Kernel Extensions and Software Updates

My iBook G4 can’t be considered a computing beast by any stretch of the imagination. The internal drive was a measly 30 GB when I received it from Apple in the spring of 2005. As a workaround, I quickly migrated to external drives for storing data: starting with a 40 GB FireWire external drive in 2004 (back when I had my iBook G3), to a combined total of 1.05 TB across six drives, all attached over a FireWire hub.

Life was grand: I had three 3.5″ drives, with 200, 300, and 320 GB of space. I had my iTunes library on the 200 GB, movies and TV shows on the 300 GB, and the 320 GB was spare space, used for intermittent backups and temporary storage. All three drives were in 3.5″ MacAlly FireWire/USB 2.0 drive enclosures.

10.4.9 introduced a nasty bug: drives contained in any 3.5″ MacAlly enclosures no longer spun down when not being used, nor did they spin down when unmounting and ejecting the drives. Suddenly, I had three external hard drives which were constantly spinning.

After rolling back my system to 10.4.8, I began to brainstorm solutions. I had tested the drives with other point releases, and knew that something in 10.4.9 was getting in the way. I downloaded the 10.4.8 Combo update, and the 10.4.9 Delta, and opened up both in Pacifist, looking at the kernel extensions to see what kexts were updated in 10.4.9.

Some Googling and digging around inside the kext package contents led me to settle upon AppleStorageDrivers.kext as the likely offender. I ran a special backup to a spare hard drive to test my theory, and installed the 10.4.8 version of the kext over a system updated to 10.4.9. Lo and behold, the drives spun down properly once more.

I was much more careful with the 10.4.10 update, and for good reason: AppleStorageDrivers were even worse. The drives would now intermittently spin down, with no rhyme or reason as far as I can tell. After another kext replacement and testing, I’m now running 10.4.10 with my alternative kext.

I submitted a bug report to Apple and am in the process of updating them with the kernel extension findings. I should find a developer with Leopard to make sure that the bug didn’t sneak into 10.5 via kext changes. It’s Bug Radar 5084136.