UPDATE!
macfanctld has been published on mactel ubuntu PPA, it works great!

An exceptional pain when using native GNU/Linux distros on Macbooks, it’s the totally awesomeness management of the fans: you could get very hot temperatures because fans will start only when thermonuclear temperatures are reached inside your machine.

Fortunately, it’s possible to manage fan speeds in userspace using the kernel module applesmc (modprobe applesmc or add it to /etc/modules), so I write a tiny bash script for doing the dirty work.

This script has been published to GitHub: http://github.com/gionn/macbook-fans

#!/bin/bash
# Settings
SMC=/sys/devices/platform/applesmc.768
TEMPMAX=90
TEMPMIN=45
FANMAX=6200
FANMIN=2000

# Thanks to god my cousin knows Math.
C1=$(( $FANMAX - $FANMIN ))
C2=$(( $TEMPMAX - $TEMPMIN ))
CF=$(( $C1 / $C2 ))
TM=$(( $CF * $TEMPMAX - $FANMAX  ))

# Be sure that manual mode is disabled:
# we don't want to burn everything is case of a bug
echo 0 > $SMC/fan1_manual
echo 0 > $SMC/fan2_manual

while :
do
CORETEMP1=$(( `cat /sys/devices/platform/coretemp.0/temp1_input` / 1000 ))
CORETEMP2=$(( `cat /sys/devices/platform/coretemp.1/temp1_input` / 1000 ))
TEMP=$(( ($CORETEMP1 + $CORETEMP2) / 2 ))
SET=$(( $CF * $TEMP - $TM ))
echo $SET > $SMC/fan1_min
echo $SET > $SMC/fan2_min
sleep 2
done

You can put this script in /usr/local/bin/fans, chmod +x /usr/local/bin/fans and add it in /etc/rc.local for automatic startup on system boot.