Debian su MacBook Pro
Da LinuxVar, il LUG della provincia di Varese.
Con questo How-To intendo spiegare rapidamente i passi per montare un sistema Debian bootabile e che riconosca praticamente tutto l'hardware di un MacBook Pro da 15" 2,2 (comprato a settembre 2006) (occhio che le configurazioni sono in certe parti differenti dal 17" e dalle altre versioni). Per scoprire che versione si ha:
dmidecode -s system-product-name
da amministratore.
Per qualsiasi errore, mancanza, dubbio scrivetemi pure a rev at voo dot it.
Contenuti
|
Cosa serve
- un macbook pro :)
- un cd debian net install, consiglio l'ultima testing
- connessione ad internet
- pangocciole, 2 direi
Hardware
Funzionante
- X con accelerazione 3d (Driver proprietari o open)
- audio casse interne, esterne e mic (Alsa)
- ethernet
- modifica illuminazione schermo e tastiera
- sensori di luce, inclinazione e temperatura
- tastiera e telecomando incluso
- touchpad ottimizzato
- masterizzare cd
- bluetooth
- iSight, webcam integrata
- wifi
Non testato
- Fireware
NON FUnzionante
Per ora non ho nulla da segnalare
Partizionamento e installazione
Bootare il sistema da macosx.
Installare rEFIt [1] bootloader che ci consentira' di gestire il boot separato di macosx e linux fatto per architetture EFI. Dalla console di macosx copiamo la dir efi contenuta nel pacchetto di installazione nella root dir di macosx e lanciamo
cd /efi/refit ./enable-always.sh
Installiamo ora il pacchetto Bootcamp [2] per MacOsX e seguire le istruzioni per il partizionamento come se si volesse installare Win...Win....Windows (ok, scusate, ma l'idea di Windows sul Mac... brrr...). Quindi con bootcamp creiamo una partizione di dimensione adeguata per Linux, alla richiesta di inserire il cd di Windows inseriamo invece quello di Debian (carino no?), il ristema rebootera'.
A questo puto il cd di debian bootera' automaticamente. Seguire la normale procedura di installazione fino al momento di partizionare, qui io ho optato per un'unica partizione (la swap sara' un file) ma volendo potete farne anche due e usarne una come swap (il perche' farne una sola e' spiegato qui [3]).
Procediamo normalmente fino al momento di installare il bootloader, a questo punto con ctrl+f2 andiamo sulla console e apt-gettiamo rEFIt
chroot /target apt-get install refit /target/sbin/gptsync /dev/sda
che sincronizzera' la partition table sul gpt e sull'mbr.
Questo e' un esempio del mio partizionamento dopo aver eseguito gptsync
Current GPT partition table: # Start LBA End LBA Type 1 40 409639 EFI System (FAT) 2 409640 75907111 Mac OS X HFS+ 3 76169256 234441607 EFI System (FAT) Current MBR partition table: # A Start LBA End LBA Type 1 1 409639 ee EFI Protective 2 409640 75907111 af Mac OS X HFS+ 3 * 76169256 234441607 ef EFI System (FAT)
Torniamo alla console d'installazione con ctrl+F1 e installiamo LILO (non grub!) e installiamolo all'inizio della partizione (NON NELL'MBR!). Completiamo l'installazione e reboot, al boot dovrebbe esserci rEFIt che ci consente di accede a MacOsX o Debian :)
Nota sulla partizione di Swap
Ho fatto successivi test aggiungendo anche la partizione di swap e il sistema sembra funzionare correttamente. In caso voleste procedere in questo modo perche' avere il file di swap vi da' particolarmente fastidio (anche se parlandoci chiaramente nn credo che serva piu' di tanto avere la swap su una macchina come questa) bisogna creare un'altra partizione da macosx di 2 GB oltre quella per linux, per crearle tutte e due senza usare bootcamp si puo' dare il comando
sudo diskutil resizeVolume disk0s2 100G "Swap" <name of swap volume> 2G "Linux" <name of linux volume> 50G
Alternativamente ne create una con bootcamp e una con il comando senza la parte della seconda partizione. Ovviamente piu' avanti non servira' seguire i passaggi per creare il file di swap.
Configurazione Debian
Alcuni passaggi standard:
- montare la aprtizione di MacOsX aggiungendo all'fstab la linea
/dev/sda2 /mnt/macosx hfsplus defaults 0 0
e modificare la linea per il cdrom con
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
- creare la partizione di swap se si e' deciso di fare una sola partizione
dd if=/dev/zero of=/swap bs=1024 count=2097152 mkswap /swap swapon /swap
Kernel
Consiglio di installare l'ultimo kernel disponibile con la relativa patch mactel-linux reperibile su mactel-linux.org [4] o con
svn co https://svn.sourceforge.net/svnroot/mactel-linux mactel-linux
Ora rebootiamo con il nuovo kernel cosi' da non avere problemi quando usieremo module-assistant nel riconoscimento della versione del kernel attiva.
UPDATE: Installato il kernel 2.6.21.4 che dovrebbe essere piu' ottimizzato per il risparmio energetico e per altri aspetti, pero' se si una questa verisone e' necessario aggioranre alla unstable i seguenti pacchetti: fglrx-control_8.37.6-1_i386.deb fglrx-driver-dev_8.37.6-1_i386.deb libiw29_29~pre21-2_i386.deb fglrx-driver_8.37.6-1_i386.deb fglrx-kernel-src_8.37.6-1_i386.deb wireless-tools_29~pre21-2_i386.deb. Ovvero i pacchetti per i driver accelerati ATI e quelli del wireless-tool (ecco il .config per questa versione del kernel File:Config-2.6.21.4.gz che ho compilato per processori a 64 bit usando l'ARCH=x86_64 come parametro nel 'make menuconfig').
UPDATE: Installato il kernel 2.6.22-4 dai repository debian, patchato con mactel per far andare il touchpad e runnato con questo config File:Config-2.6.22.gz
CDROM
Con il kernel 2.6.25 disabilitiamo tutta la sezione relativa ai dispositivi IDE e il modulo ata_piix gestira' sia hd che cdrom. Da questa versione del kernel infatti per i controller che usano piix e sono sia ide (o pata) sia sata non si puo' piu' caricare 2 driver distinti ma ata_piix gestisce tutte e due le cose.
Suspend 2 RAM
Con il kernel 2.6.22 della debian e con il pacchetto uswsusp basta lanciare il comando
s2ram -f
e tutto si ferma fino a che non riapriamo il monitor del nostro mac book pro :)
Framebuffer
Una volta attivata nel kernel l'opzione per il vesafb aggiugnere al lilo.conf la riga: vga=0x317 per avere il boot con il pinguinozzo.
X e accelerazione 3D
Driver Open
Dalla configurazione che ho postato con il kernel 2.6.29 sono passato ai driver open. Bisogna fare delle modifiche a livello del file di configurazione di xorg (vedi relativa sezione) e apt-gettare qualche pacchetto tipo "firmware-linux".
Metodi per vedere se l'accelerazione e' abilitata: lanciare "driconf", lanciare "glxinfo | grep vendor" e dobbiamo avere SGI altrimenti potrebbero esserci dei residui di driver proprietari che rompono, lanciare "glxinfo | grep direct\ rendering". Controllare anche l'output di xvinfo.
Driver Closed
Serviranno dei driver proprietari ATI, editare quindi il source.conf dell'apt e inserire alla fine del proprio repository "contrib non-free".
Installiamo ora i pacchetti necessari:
apt-get install fglrx-driver fglrx-control fglrx-kernel-src
e quindi eseguiamo (apt-gettarlo se non fosse installato)
module-assistant
in module-assistant fare il prepare e l'updare, cercare quindi nel select il modulo fglrx e crearlo, la procedura e' intuitiva:). Dovremmo ora avere il nostro modulo fglrx pronto, carichiamolo ed eseguiamo
aticonfig --initial
per creare un file xorg.conf adatto. Rebootiamo X e controlliamo che sia tutto ok con
fglrxinfo
che dovrebbe restituire
Display: :0.0 screen: 0 OpenGL vendor string: ATI Technologies Inc. OpenGL renderer string: ATI Mobility Radeon X1600 Generic OpenGL version string: 2.0.5879 (8.26.18)
evviva X accelerato!
Ora dopo aver fatto un paio di partite al vostro gioco, avviamente 3d, preferito per gustare la potenza del nuovo mac passiamo al resto.
Per sicurezza allego il mio xorg.conf File:Xorg.conf.gz
Audio
Usare l'ultima versione dei driver alsa (io ho la 1.0.5) e kernel almeno alla versione 2.6.18.
Ecco come leggere i canali a disposizione:
- PCM channel changes overall volume
- Center and LFE channels change volume of headphones output left and right (which is at the jack labled as line in!)
- Front channels change volume for the external speaker
- Line in (only toggling mute possible) enables/disables built-in speakers
- IEC958 enables/disables optical IO on jack labled as headphones
UPDATE: il problema del fastidioso rumore che si sentiva dal canale sinistro di ogni output e' stata risolta passando al kernel 2.6.25.
UPDATE: Con il kernel 2.6.25 anche i canali sono stati messi a posto e ora si usa solo il "Principale" per le cuffie, "Front" per gli altoparlanti interni e "PCM" il generale.
UPDATE: il problema che inserendo le cuffie l'audio continua ad essere emesso dagli altoparlanti del pc (tranne che se si boota con le cuffie gia' inserite) e' risolto passando alla versione 2.4.21.4 del kernel
WiFi
ath9k
Con il kernel 2.6.29 il driver ath9k funziona perfettamente senza bisogno di ulteriori maneggiamenti.
Ndiswrapper
Questa e' un po' sporca ma alla fine funziona:
Prima di tutto scarichiamo il driver per windows per la Atheros AR5008
File:NET5416.INF.gz.
Quindi installiamo i pacchetti che ci servono:
apt-get install ndiswrapper-source ndiswrapper-utils-1.9 m-a
ora, come per i driver ati, creiamo il modulo del kernel mediante module-assistan slezionando ndiswrapper questa volta. Quindi
ndiswrapper -i Driver/NET5416.INF #dove questo file e' quello prima scaricato depmod -a modprobe ndiswrapper
la scheda dovrebbe essere up and running :) ... proviamola con iwconfig.
MadWiFi
Funzionante con l'ultima versione di madwifi ma solo il WPA non riesco ancora a far andare il WEP. Ecco come ho fatto:
cd /usr/src/ svn checkout http://svn.madwifi.org/trunk madwifi cd madwifi make make install
d'ora in poi per caricare wireless serve il modulo ath_pci e poi i comandi
ifconfig wlan0 up wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0 -Dmadwifi & dhclient wlan0
avendo avuto la premura di settare un degno wpa_supplicant.conf del tipo
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=1000
update_config=1
network={
ssid="NOME DELLA RETE"
psk="WPA PASS PHRASE"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
}
per disinstallare tutto c'e' un comodo make uninstall.
Webcam
Allora, non e' difficile:
apt-get install linux-uvc-source linux-uvc-tools
installare il modulo uvc con module-assistant lanciando
m-a prepare m-a a-i linux-uvc
poi prelevare il firmware dalla partizione di MacOsX e caricare il modulo
mkdir /mnt/macosx mount -t hfsplus /dev/sda2 /mnt/macosx/ macbook-isight-firmware-loader /mnt/mac/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport modprobe uvcvideo
provate se tutto funziona con ekiga. Date anche un occhio al README.Debian in /usr/src/modules/linux-uvc/debian/.
Se non comparisse al device /dev/vide0 si puo' risolvere con l'uvc patchato scaricabile da http://i-nz.net/projects/linux-kernel/. Se compilando restituisce un errore del tipo "1442: error: 'struct video_device' has no member named 'hardware'" basta depennare la riga 1442 dal codice. Funzionano sia ekiga e skype.
UPDATE: con gli ultimi kernel (sicuramente con dal 2.6.25) il driver uvc video e' incluso nel kernel, quindi non serve piu' fare i precedenti maneggiamenti.
Keyboard
Rimappiamo la tastiera in console e in X, compresi i tasti del telecomando. Per fare questo teniamo d'occhio qui [5] e usiamo il comando xev per sapere a quale tasto corrisponde quale keycode in X.
Questo e' il contenuto del mio file .Xmodmap che carico all'avvio di X:
!!testo centrale keycode 162 = Return !!tasto menu keycode 158 = space !! tasti su giu dx sx keycode 176 = Up keycode 174 = Down keycode 144 = Right keycode 153 = Left !! rimappo ~ keycode 49 = section plusminus keycode 94 = grave asciitilde !! euro e beta keysym e = e E EuroSign keysym b = b B ssharp !! mela keycode 133 = Super_L keycode 134 = Mode_switch clear mod1 add mod1 = Alt_L add mod1 = Super_L clear mod2 add mod2 = Num_Lock clear mod3 clear mod4 clear mod5
Mentre per settare quantomeno i tasti § e ` correttamente sulla console e attivare l'altgr con la mela destra modifichiamo /etc/console-tools/remap inserendovi
s/keycode 41 = grave asciitilde/keycode 41 = section plusminus/; s/keycode 86 = less greater bar/keycode 86 = grave asciitilde/; s/keycode 126 =/keycode 126 = AltGr/;
UPDATE: inserico un xmodmap.it completo datomi da Stefano D'Alessio File:Xmodmap.it.gz.
Touchpad
Servono i moduli (e devono essere moduli, non compialti monoliticamente nel kernel) chiamati: usbhid e appletouch. Il problema e' che il modulo appletouch deve essere caricato PRIMA dell'usbhid (stessa cosa per l'appleir), per far in modo che cio' avvenga sempre, aggiungiamo un file chiamato touchpad al /etc/modprobe.d e contenente
install usbhid /sbin/modprobe appletouch; /sbin/modprobe appleir; sleep 2; /sbin/modprobe --ignore-install usbhid
Nell'xorg.conf la sezione riguardante il mouse e':
Section "InputDevice"
Identifier "Touchpad"
Driver "synaptics"
Option "CorePointer"
Option "Device" "/dev/input/mouse1"
Option "Protocol" "auto-dev"
Option "LeftEdge" "100"
Option "RightEdge" "1120"
Option "TopEdge" "50"
Option "BottomEdge" "310"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "MaxDoubleTapTime" "180"
Option "VertScrollDelta" "20"
Option "HorizScrollDelta" "50"
Option "MinSpeed" "0.79"
Option "MaxSpeed" "0.88"
Option "AccelFactor" "0.0015"
Option "SHMConfig" "on"
EndSection
Illuminazione schermo, tastiera, sensori e tasti rapidi
Nicolas Boichat ha scritto dei driver per l'illuminazione di schermo e tastiera reperibili qui [6].
L'installazione e':
wget http://www.boichat.ch/nicolas/macbook-tools/macbook-tools-0.1.1.tar.bz2 tar xvfj macbook-tools-0.1.1.tar.bz2 cd macbook-tools-0.1.1 make
e proviamo i 2 eseguibili, sono di semplice utilizzo e la loro funzione e' intuitiva.
Per i sensori della temperatura sull'hd usare
apt-get install hddtemp hddtemp /dev/sda
mentre per quelli sulle cpu usare
svn co https://svn.sourceforge.net/svnroot/mactel-linux mactel-linux cd mactel-linux/trunk/tools/temperature/ make modprobe msr # controllate di averlo abilitato nel kernel ./coretemp
Per la gestione automatica dell'illuminazion e della tastiera, nonche' per i tasti che settano la luminosita' del monitor consiglio di installare 'pommed' con l'accorgimento pero' di disabilitare le funzioni che sono gia' ricoperte da gnome o da acpi (quindi l'eject, il controllo del volume -settando lo step a 0- e il cambio di luminosita' se siamo in modalita' batteria). Questi cambiamenti intuitivi si fanno nell'/etc/pommed.conf.
ACPI e Powersafe
Power settings
Ho reperito in rete e modificato ad hoc per debian un paio di script utili che migliorano la durata della batteria. Basta posizionarli nella giusta directory. Il comando che compare ad un certo punto 'mac_monitor' e' uno dei due prog che reperiamo installando i macbook-tools.
/etc/acpi/power.conf
# config for acpi-power # LIGHT: backlight brightness # P: CPU P state. see /proc/acpi/processor/CPU?/limit # T: CPU T state (throttling). see /proc/acpi/processor/CPU?/throttling # CPU: online state of second core (0=off, 1=on) # GOV: CPU freq scaling governor. see /sys/devices/system/cpu/cpu?/cpufreq/scaling_available_governors # GOV_MIN/MAX: CPU freq frequencies. see /sys/devices/system/cpu/cpu?/cpufreq/scaling_available_frequencies # LID_SUSPEND: 1=suspend when lid closed # when on batteries BAT_LIGHT=155 BAT_P=0 BAT_T=2 BAT_CPU=0 BAT_GOV=ondemand BAT_GOV_MIN=1000000 BAT_GOV_MAX=1500000 # when on AC AC_LIGHT=255 AC_P=0 AC_T=0 AC_CPU=1 AC_GOV=performance AC_GOV_MIN=1000000 AC_GOV_MAX=2167000 # when lid closed LID_SUSPEND=1 LID_LIGHT=0 LID_P=0 LID_T=7 LID_CPU=0 LID_GOV=powersave LID_GOV_MIN=1000000 LID_GOV_MAX=1000000
/etc/acpi/battery.d/macbookpro-bat.sh (renderlo eseguibile)
#!/bin/sh
source /etc/acpi/power.conf
# on batteries
LIGHT=${BAT_LIGHT}
P=${BAT_P}
T=${BAT_T}
C=${BAT_CPU}
GOV=${BAT_GOV}
GOV_MIN=${BAT_GOV_MIN}
GOV_MAX=${BAT_GOV_MAX}
# control backlight
/usr/bin/mac_monitor ${LIGHT}
# power up/down second CPU
STATE=$(cat /sys/devices/system/cpu/cpu1/online)
if [ "${STATE}" != "${C}" ]; then
echo ${C} > /sys/devices/system/cpu/cpu1/online # da quando ho il kernel 2.6.21.4 a volte provoca un crash di X
fi
# throttle CPUs and set governors
echo -n ${P}:${T} > /proc/acpi/processor/CPU0/limit
echo ${GOV} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# must first set max, then min!
echo ${GOV_MAX} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo ${GOV_MIN} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
if [ "${C}" = "1" ]; then
echo -n ${P}:${T} > /proc/acpi/processor/CPU1/limit
echo ${GOV} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
# must first set max, then min!
echo ${GOV_MAX} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
echo ${GOV_MIN} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
fi
/etc/acpi/ac.d/macbookpro-ac.sh (renderlo eseguibile)
#!/bin/sh
source /etc/acpi/power.conf
# on AC
LIGHT=${AC_LIGHT}
P=${AC_P}
T=${AC_T}
C=${AC_CPU}
GOV=${AC_GOV}
GOV_MIN=${AC_GOV_MIN}
GOV_MAX=${AC_GOV_MAX}
# control backlight
/usr/bin/mac_monitor ${LIGHT}
# power up/down second CPU
STATE=$(cat /sys/devices/system/cpu/cpu1/online)
if [ "${STATE}" != "${C}" ]; then
echo ${C} > /sys/devices/system/cpu/cpu1/online # da quando ho il kernel 2.6.21.4 a volte provoca un crash di X
fi
# throttle CPUs and set governors
echo -n ${P}:${T} > /proc/acpi/processor/CPU0/limit
echo ${GOV} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# must first set max, then min!
echo ${GOV_MAX} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo ${GOV_MIN} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
if [ "${C}" = "1" ]; then
echo -n ${P}:${T} > /proc/acpi/processor/CPU1/limit
echo ${GOV} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
# must first set max, then min!
echo ${GOV_MAX} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
echo ${GOV_MIN} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
fi
Mentre per aggiugnere un paio di funzioni quando viene chiuso lo schermo bisogna modificare il file /etc/acpi/lid.sh (aggiugnendo le righe)
############# parte aggiutna da revoltek grep -q closed /proc/acpi/button/lid/*/state if [ $? = 0 ] then . /etc/acpi/lid.d/macbookpro-lid-close.sh # aggiunto da revOltek else . /etc/acpi/lid.d/macbookpro-lid-open.sh # aggiunto da revOltek fi
e poi creare la dir lid.d contenente i due file /atc/acpi/lid.d/macbookpro-lid-open.sh (renderlo eseguibile)
#!/bin/sh
source /etc/acpi/power.conf
grep -q off-line /proc/acpi/ac_adapter/ADP1/state
if [ $? = 1 ]
then
# on AC
LIGHT=${AC_LIGHT}
P=${AC_P}
T=${AC_T}
C=${AC_CPU}
GOV=${AC_GOV}
GOV_MIN=${AC_GOV_MIN}
GOV_MAX=${AC_GOV_MAX}
else
# on batteries
LIGHT=${BAT_LIGHT}
P=${BAT_P}
T=${BAT_T}
C=${BAT_CPU}
GOV=${BAT_GOV}
GOV_MIN=${BAT_GOV_MIN}
GOV_MAX=${BAT_GOV_MAX}
fi
# control backlight
/usr/bin/mac_monitor ${LIGHT}
# power up/down second CPU
STATE=$(cat /sys/devices/system/cpu/cpu1/online)
if [ "${STATE}" != "${C}" ]; then
echo ${C} > /sys/devices/system/cpu/cpu1/online # da quando ho il kernel 2.6.21.4 a volte provoca un crash di X
fi
# throttle CPUs and set governors
echo -n ${P}:${T} > /proc/acpi/processor/CPU0/limit
echo ${GOV} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# must first set max, then min!
echo ${GOV_MAX} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo ${GOV_MIN} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
if [ "${C}" = "1" ]; then
echo -n ${P}:${T} > /proc/acpi/processor/CPU1/limit
echo ${GOV} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
# must first set max, then min!
echo ${GOV_MAX} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
echo ${GOV_MIN} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
fi
/atc/acpi/lid.d/macbookpro-lid-close.sh (renderlo eseguibile)
#!/bin/sh
source /etc/acpi/power.conf
# lid closed
LIGHT=${LID_LIGHT}
P=${LID_P}
T=${LID_T}
C=${LID_CPU}
GOV=${LID_GOV}
GOV_MIN=${LID_GOV_MIN}
GOV_MAX=${LID_GOV_MAX}
# control backlight
/usr/bin/mac_monitor ${LIGHT}
# power up/down second CPU
STATE=$(cat /sys/devices/system/cpu/cpu1/online)
if [ "${STATE}" != "${C}" ]; then
echo ${C} > /sys/devices/system/cpu/cpu1/online
fi
# throttle CPUs and set governors
echo -n ${P}:${T} > /proc/acpi/processor/CPU0/limit
echo ${GOV} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# must first set max, then min!
echo ${GOV_MAX} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo ${GOV_MIN} > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
if [ "${C}" = "1" ]; then
echo -n ${P}:${T} > /proc/acpi/processor/CPU1/limit
echo ${GOV} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
# must first set max, then min!
echo ${GOV_MAX} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
echo ${GOV_MIN} > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
fi
Ventole
Aggiungo in ultimo un codice che ho scritto io per controllare rapidamente le ventole del nostro MBP (necessita dell'applesmc nel kernel abilitato)
#!/bin/sh
DIR=/sys/devices/platform/applesmc
MANUAL1=$DIR/fan1_manual
MANUAL2=$DIR/fan2_manual
POS1=$DIR/fan1_position
POS2=$DIR/fan2_position
GET1=$DIR/fan1_input
GET2=$DIR/fan2_input
SET1=$DIR/fan1_output
SET2=$DIR/fan2_output
MAX1=$DIR/fan1_min
MAX2=$DIR/fan2_min
MIN1=$DIR/fan1_max
MIN2=$DIR/fan2_max
# Default output
if [ x$1 == 'x' ]; then
echo "Use mac_ventole fan_speed [or \"auto\" for the automatic mode]"
echo "Actual speed are:"
actual_speed1=`cat $GET1`
position1=`cat $POS1`
echo "Fan 1 ($position1): $actual_speed1"
actual_speed2=`cat $GET2`
position2=`cat $POS2`
echo "Fan 2 ($position2): $actual_speed2"
exit
fi
# Set to auto mode
if [ $1 == 'auto' ]; then
if [ `cat $MANUAL1` == '1' ]; then
echo "0" > $MANUAL1
fi
if [ `cat $MANUAL2` == '1' ]; then
echo "0" > $MANUAL2
fi
else
# Set to manual mode fan1
if [ x`echo $1 | egrep ^[0-9]+$` != 'x' ]; then
if [ $1 -le `cat $MIN1` -a $1 -ge `cat $MAX1` -a $1 -le `cat $MIN2` -a $1 -ge `cat $MAX2` ]; then
if [ `cat $MANUAL1` == '0' ]; then
echo "1" > $MANUAL1
fi
if [ `cat $MANUAL2` == '0' ]; then
echo "1" > $MANUAL2
fi
echo "$1" > $SET1
echo "$1" > $SET2
else
echo "Range for fan 1 is `cat $MIN1` t `cat $MAX1`."
echo "Range for fan 2 is `cat $MIN2` t `cat $MAX2`."
fi
else
echo "Must be a number!"
fi
fi
salviamolo in un file eseguibile e poi mettiamolo in /usr/bin/.
Qualcuno di voi si sara' accorto che il suo MBP ha sempre le ventole a palla se le lasciamo in modalita' "auto". Questo e' dovuto al fatto che la temperatura del pc e' mediamente molto alta, un buon modo per ridurre questo problema e' quello di mettere in modalita' "risparmio energetico" la scheda video (questo permette anche di allungare un po' la dirata da batteria). Per fare cio' di dovrebbe usare 'radeontool' ma e' buggato e per farlo necessitiamo un'apposito radeontool patchato reperibile qui http://www.g2inf.one.pl/~anszom/MBP-ATI/ mediante il quale si possono lanciare i comandi:
sudo ./radeontool power status sudo ./radeontool power low sudo ./radeontool power full
dal significato evidente. Consiglio di aggiungere il secondo di questi comandi ad uno script di boot.
Power button
Un ultimo aspetto, dato che e' una noia che quando premo il bottone di accensioni mi si spenga il pc senza chiedere nulla ho modificato lievemnte l'/etc/acpi/powerbtn.sh aggiungendo:
if ! ps -Af | grep gnome-power-manager
then
/sbin/shutdown -h now "Power button pressed"
fi
al posto della sola riga di shutdown, di modo che se gnome-power-manager e' attivo ci pensa lui a beccare la pressione del bottone.
AIGLX, Compiz, Kiba e altre zarrate
Compiz-fusion
Per avere il cubo sul nostro sistema innanzi tutto sono necessari i driver proprietari ATI (vedi sezione scheda video) dalla versione 8.42.3 in poi. Questa versione supporta l'estensione per aiglx presente da xorg 7.1 e permette di avere un desktop accelerato. Installata questa versione dei draiver occorre utilizzare un repository che contenga le ultime versioni di compiz e altro software utile ovvero: deb http://download.tuxfamily.org/osrdebian unstable compiz-fusion-git, notare che questo repository contiene pacchetti per la unstable con dipendense quindi che si ttrovano in debian sid. A questo punto apt-gettiamo compiz-core e gli altri pacchetti che ci piacciono e diciamo a gnome ad ogni avvio di far partire un "compiz --replace".
Ecco il mio file di configurazione per compiz File:Compiz-setting.profile.gz.
NOTA: se c'e' copiz attivo tutti i programmi 3d mi sbarluccicano, nel senso che noto il refresh dello schermo. Per evitare il problema se si vuole usare un programma accelerato basta sospendere momentanamente compiz con "metacity --replace" e poi in caso riavviarlo dopo il match a openarena :).
Emerald
Installate anche emerald che fa da decoratore di finestre ed e' decisamente carino.
Allego il mio file di configurazione per emerald File:Emerald-setting.gz.
Kiba Dock
Per isntallare kiba dock bisogna partire dai sorgenti in quanti i pacchetti non sono ancora disponibili.
sudo aptitude install fakeroot automake1.9 build-essential libpango1.0-dev libgtk2.0-dev libgconf2-dev libglitz-glx-dev librsvg2-dev libglade2-dev libxcomposite-dev subversion libtool libgtop2-dev python-gtk2-dev intltool pidgin-dev mkdir kiba-dock cd kiba-dock svn co https://kibadock.svn.sourceforge.net/svnroot/kibadock/trunk/akamaru/ akamaru svn co https://kibadock.svn.sourceforge.net/svnroot/kibadock/trunk/kiba-dock/ kiba-dock svn co https://kibadock.svn.sourceforge.net/svnroot/kibadock/trunk/kiba-plugins/ kiba-plugins svn co https://kibadock.svn.sourceforge.net/svnroot/kibadock/trunk/kiba-dbus-plugins/ kiba-dbus-plugins svn co https://kibadock.svn.sourceforge.net/svnroot/kibadock/trunk/kiba-gaim-plugin kiba-gaim-plugin
e quindi installiamo uno alla volta i sorgenti dopo averli compilati
cd akamaru/ ./autogen.sh --prefix=/usr --exec-prefix=/usr make; make install cd .. cd kiba-dock/ ./autogen.sh make; make install cd .. cd kiba-plugins/ ./autogen.sh make' make install cd .. cd kiba-dbus-plugins/ ./autogen.sh make; make install cd .. cd kiba-gaim-plugins/ ./autogen.sh make; make install cd ..
Consiglio infine di tenere sottomano questi sorgenti cosicche' da poter disinstallare il pacchetto con "make uninstall".
Allego anche il config di kiba da posizionare in ~/.kiba/config File:Kiba-setting.gz.
Config File
Allego di seguito alcuni dei file di configurazione del sistema.
/etc/fstab
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda4 / ext3 defaults,errors=remount-ro 0 1 /dev/sda3 none swap sw 0 0 /dev/scd0 /media/cdrom0 iso9660 user,noauto,ro 0 0 /dev/sda2 /mnt/macosx hfsplus ro,exec,auto,users 0 0
/etc/lilo.conf
large-memory
boot=/dev/sda4
root=/dev/sda4
compact
lba32
map=/boot/map
timeout=20
vga=extended
default=Linux
image=/vmlinuz
label=Linux
read-only
image=/vmlinuz.old
label=LinuxOLD
read-only
optional
/etc/X11/xorg.conf
Allego il file direttamente [7].
/usr/src/linux/.config
Controllare la sezione relativa al kernel, ne ho generati di diversi nel corso del tempo:).
Link utili
- http://www.mactel-linux.org/wiki/Main_Page
- http://modular.math.washington.edu/macbook/
- http://modular.math.washington.edu/macbook/triboot/
- http://bin-false.org/?p=17
- http://wiki.onmac.net/index.php/Triple_Boot_via_BootCamp
- http://www.jasonparekh.com/?page_id=9
- http://www.ethicalhack.org/howto/triple_boot_howto.html
- http://wiki.cchtml.com/index.php/Ubuntu_Dapper_Installation_Guide
- http://blogs.gnome.org/portal/rbultje
- http://www.boichat.ch/nicolas/macbook-tools/
- http://blogs.vislab.usyd.edu.au/index.php/JohnStavrakakis/2006/07/28/triple_boot_on_macbook_pro_15
- http://www.ubuntuforums.org/showthread.php?t=225621
- https://wiki.ubuntu.com/MacBook
- http://ubuntuforums.org/showthread.php?t=205449
Xgl e Compiz
- http://pollycoke.wordpress.com/2006/05/18/ubuntu-dapper-xgl-compiz/
- http://www.ptlug.org/wiki/Howto_Xgl_Debian/SID
- http://wiki.cchtml.com/index.php/Xgl-Compiz-Dapper
Rescue in caso di problemi
In caso qualcosa vada decisamente storto (se per esempio sbagliamo a ricompilare il kernel, ci panika al boot e furbescamente non abbimo una versione del kernel funzionante accessibile da lilo... ok, lo ammetto, l'ho fatto) si puo' sempre recuperare una precedente installazione bootando il pc con inserito il cd d'installazione di Debian e quindi bootare in modalita' rescue. A questo punto montare la partizione dove abbiamo piazzato il nostro sistema ed eseguire una shell cercando di riparare il riparabile :). Devo pero' sottolineare un fatto isolito, non mi e' chiaro come mai molto spesso al boot la tastiera del portatile non viene ricopnosciuta e quindi non si puo' far partire l'installazione, riavviando pero' dopo un po' di volte sembra funzionare... se qualcuno avesse una spiegazione mi farebbe molto piacere capire il perche' (in rete ho letto che e' possibile bypassare il problema con una tastiera esterna USB, pero' non ho porvato).
---
fine della rapida spiega, spero che sia stata utile, ciao:)
Francesco De Gasperin - revOltek
fdg at voo dot it

