/* Site under maintenance */

MacBook & Gentoo Linux

Ecco i dettagli per installare Gentoo su un MacBook Unibody (la prima serie), ossia:gentoo ercoppa # dmidecode -s system-product-name MacBook5,100:00.0 Host bridge: nVidia Corporation Device 0a82 (rev b1) 00:00.1 RAM memory: nVidia Corporation Device 0a88 (rev b1) 00:03.0 ISA bridge: nVidia Corporation Device 0aae (rev b2) 00:03.1 RAM memory: nVidia Corporation Device 0aa4 (rev b1) 00:03.2 SMBus: nVidia Corporation Device 0aa2 (rev b1) 00:03.3 RAM memory: nVidia Corporation Device 0a89 (rev b1) 00:03.4 RAM memory: nVidia Corporation Device 0a98 (rev b1) 00:03.5 Co-processor: nVidia Corporation Device 0aa3 (rev b1) 00:04.0 USB Controller: nVidia Corporation Device 0aa5 (rev b1) 00:04.1 USB Controller: nVidia Corporation Device 0aa6 (rev b1) 00:06.0 USB Controller: nVidia Corporation Device 0aa7 (rev b1) 00:06.1 USB Controller: nVidia Corporation Device 0aa9 (rev b1) 00:08.0 Audio device: nVidia Corporation Device 0ac0 (rev b1) 00:09.0 PCI bridge: nVidia Corporation Device 0aab (rev b1) 00:0a.0 Ethernet controller: nVidia Corporation MCP79 Ethernet (rev b1) 00:0b.0 IDE interface: nVidia Corporation Device 0ab5 (rev b1) 00:10.0 PCI bridge: nVidia Corporation Device 0aa0 (rev b1) 00:15.0 PCI bridge: nVidia Corporation Device 0ac6 (rev b1) 02:00.0 VGA compatible controller: nVidia Corporation Device 0863 (rev b1) 03:00.0 Network controller: Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller (rev 01)Bus 003 Device 002: ID 05ac:8242 Apple, Inc. Bus 003 Device 003: ID 05ac:0237 Apple, Inc. Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 05ac:8507 Apple, Inc. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 003: ID 05ac:8213 Apple, Inc. Bus 004 Device 002: ID 0a5c:4500 Broadcom Corp. Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
/etc/make.conf

Ho optato per un sistema x86 (anche se nell'arch amd64 stanno arrivando interessanti novità, vedi nuova multilib ABI):# These settings were set by the catalyst build script that automatically # built this stage. # Please consult /usr/share/portage/config/make.conf.example for a more # detailed example. CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer" CXXFLAGS="${CFLAGS}" # WARNING: Changing your CHOST is not something that should be done lightly. # Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing. CHOST="i686-pc-linux-gnu" MAKEOPTS="-j3" LDFLAGS="-Wl,-O1 -Wl,--as-needed" # GNOME, codec audio/video, USE="nvidia lm_sensors truetype policykit networkmanager acpi -ldap \ xulrunner bluetooth mmx sse sse2 svg png wmp wma xvid aac -ipv6 \ -samba glitz -kerberos tracker divx X unicode dri 3dnow \ nsplugin win32codecs mp3 threads nls hal alsa gtk gnome wxwindows \ opengl usb cairo java6 lirc -gpm -qt -qt3 -qt4 v4l2 nautilus \ -kde java xinerama cleartype" INPUT_DEVICES="keyboard mouse evdev synaptics" VIDEO_CARDS="nv nvidia" ALSA_CARDS="hda-intel" LIRC_DEVICES="macmini" PORTDIR_OVERLAY="/usr/local/portage" source /usr/local/portage/layman/make.confDove -march=native (supportato da gcc-4.2) si rivela (al momento) in:-march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 -mtune=core2
Kernel

Per non aver noie con il reboot, è necessario installare un kernel della serie >=2.6.31, nel mio caso ho optato per (ancora in ~x86):sys-kernel/gentoo-sources-2.6.31-r5Ecco il relativo config da me usato: Che, a parte qualche opzione non indispensabile (nelle prossime settimane con più calma farò un po' di pulizia) riesce a supportare le seguenti caratteristiche:
  • framebuffer (UVESA)
  • sensori ventole e temperature (applesmc, coretemp, i2c-nforce2)
  • suspend on ram (hibernate non mi interessa)
  • FS ext3, ext4, NTFS, FAT
  • bluetooth (btusb, rfkill, bluetooth, rfcomm, bnep, l2cap)
  • * regolazione luminosità (backlight)
  • accelerometro (applesmc, joydev)
  • ethernet (EISA, VLB, PCI and on board controllers forcedeth)
  • * wireless (lib80211, lib80211_crypt_* [N.B. occorre abilitare driver come HOSTAP per abilitarli implicitamente])
  • IR (uinput)
  • webcam (v4l1_compat, uvcvideo, videodev)
  • * scheda grafica Nvidia (agpgart)
  • trackpad (Apple USB BCM5974 Multitouch trackpad support)
  • scheda audio (snd_hda_intel, snd_hda_codec, snd_hda_codec_realtek, snd_pcm_oss, snd_pcm, snd_seq, snd_timer, snd_hwdep, snd_mixer_oss,snd_seq_oss, seq_device, soundcore, snd)
Fra le parentesi ho indicato il componente (spesso ho indicato il nome del modulo) fondamentale da abilitare per ottenere un corretto rilevamento e funzionamento della specifica caratteristica. Le voci che sono precedute da un * richiedono dei moduli esterni al kernel (in seguito trattati).

Parametri kernel

Per far caricare il mio sistema correttamente ho adottato i seguenti parametri:ro quiet rootfstype=ext4 video=uvesafb:1280x800-32,mtrr:3,ywrapIn particolare:
  • rootfstype=ext4 per eliminare un warning durante il boot (erroneamente il kernel tenta di accedere ala partizione root ext4 come ext3)
  • video=uvesafb:1280x800-32,mtrr:3,ywrap parametri per configurare UVESA
Driver Nvidia

Per ottenere il 3D è necessario installare i driver binari Nvidia (x11-drivers/nvidia-drivers). Consiglio versione >=190.42-r3 (attualmente in ~x86).

Regolazione luminosità

I driver binari Nvidia non forniscono la dovuta infrastruttura per poter regolare la luminosità, pertanto è necessario installare un modulo ad-hoc. Il modulo mbp_nvidia_bl (incluso nel kernel vanilla), per motivi a me non chiari, non permette di regolare la luminosità sotto X (ma ad esempio con un MacBook Pro non si riscontra lo stesso problema) e quindi è necessario appoggiorsi al modulo esterno nvidia_bl (realizzato dal MacTel Team ed in particolare da Mario Schwalbe).

Essendo quest'ultimo non incluso in portage, ho dovuto creare un ebuild amatoriale (in realtà ho praticamente copiato da altri ebuild) e reimpacchettare il sorgente (modificando il Makefile) del modulo per agevolarne l'installazione. L'ebuild non è assolutamente testato e ne sconsiglio l'adozione ma, se stato con l'acqua alla gola e non sapete fare meglio di me, potete scaricarlo da: Nelle prossime settimane cercherò di migliorare l'ebuild. Eventuali nuovi rilasci del modulo da parte del MacTel Team verranno sincronizzati con esso.

Personalmente inserisco in /etc/conf.d/local.start:echo 30 > /sys/class/backlight/nvidia_backlight/brightnessPer abbassare all'avvio la luminosità. Inoltre se vi interessa regolare la luminosità attraverso i classici tasti anche sotto VT/tty (intendo non sotto X) è opportuno installare app-laptop/pommed (aggiungerlo al runlevel).

Wireless

E' necessario installare i driver proprietari net-wireless/broadcom-sta (attualmente in ~x86). Per connettermi alla mia rete domestica mi sto appoggiando a wpa_supplicant con la seguente configurazione:gentoo linux # cat /etc/conf.d/net # This blank configuration will automatically use DHCP for any net.* # scripts in /etc/init.d. To create a more complete configuration, # please review /etc/conf.d/net.example and save your configuration # in /etc/conf.d/net (this file :]!). # dns_domain_lo="gentoo" config_eth0=( "null" ) # WPA eth1 modules=( "wpa_supplicant" ) wpa_supplicant_eth1="-Dwext" config_eth1=( "dhcp" )gentoo linux # cat /etc/wpa_supplicant/wpa_supplicant.conf # La riga sottostante non deve essere cambiata altrimenti non funziona ctrl_interface=/var/run/wpa_supplicant # Assicurarsi che solo root possa leggere la configurazione WPA ctrl_interface_group=0 # Lasciare che wpa_supplicant si occupi della scansione e della selezione AP ap_scan=1 network={ ssid="mia_rete" key_mgmt=WPA-PSK proto=WPA pairwise=TKIP group=TKIP psk="mia_password" }
Non volendo però rinunciare a NetworkManager o Wicd, mi è sufficiente eseguire i seguenti passi per poterli usare:
  • eliminare eventuali link net.eth*
  • rimuovere dai runlevel net.eth*
  • in /etc/conf.d/rc inserire RC_PLUG_SERVICES="!net.eth0 !net.eth1"
  • inserire nel runlevel NetworkManager o wicd
  • avviare in GNOME nm-applet o wicd-client
In particolare per NetworkManager ho modificato /etc/NetworkManager/nm-system-settings.conf con:[main] plugins=ifupdown,keyfile [ifupdown] managed=false
N.B. come fa correttamente notare emerge per eseguire correttamente NetworkManager è necessario dare:polkit-auth --grant org.freedesktop.network-manager-settings.system.modify --user "USERNAME"
Bluetooth

Sono riuscito ad inviare e ricevere files via bluetooth sfruttando net-wireless/bluez-gnome (per eseguire correttamente il pairing con il dispositivo) e net-wireless/blueman (scambio file).

Apple IR

Dal kernel ">=2.6.30" è stato rimosso il driver appleir ed è necessario sfruttare uinput che però presenta alcuni svantaggi (no auto-repeat, need to wait a couple of seconds between key presses to register two key presses).

Installiamo Lirc (aggiungendolo al runlevel) e editare /etc/conf.d/lircd con:# Options to pass to the lircd process # for devices with lirc-kernel-module #LIRCD_OPTS="-d /dev/lirc0" #LIRCD_OPTS="-d /dev/lirc" LIRCD_OPTS="--driver=macmini --output=/var/run/lirc/lircd --uinput" # for devices using the input-layer #LIRCD_OPTS="-H devinput -d /dev/input/by-path/pci-0000:00:0a.0--event-ir" # This should work, Bug #235107 #LIRCD_OPTS="-H devinput name=*DVB*"Per il /etc/lirc/lircd.conf potete usare quello standard (/usr/share/lirc/remotes/apple/lircd.conf.macmini) o questo (adattato alle mie necessità):begin remote name AppleRemote bits 8 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 24 pre_data 0x87EE81 gap 211982 toggle_bit_mask 0x0 ignore_mask 0x0000ff01 begin codes KEY_VOLUMEUP 0x0B KEY_VOLUMEDOWN 0x0D KEY_LEFT 0x08 KEY_RIGHT 0x07 KEY_SPACE 0x04 KEY_F5 0x02 end codes end remote
Audio

Editare /etc/asound.conf con:pcm.out { type route slave.pcm "hw:0,0" slave.channels 6 ttable { 0.0 1 1.1 1 2.2 1 3.3 1 4.4 1 0.5 0.5 1.5 0.5 } }
Suspend to Ram

Installare sys-power/pm-utils.

Risparmio energetico

Installare ed aggiungere al runlevel: sys-power/acpid, sys-power/acpi, sys-power/acpitool, app-laptop/laptop-mode-tools, sys-power/cpufrequtils, sys-apps/lm_sensors.

Inoltre in /etc/pm/sleep.d/ e /etc/pm/power.d/ ho inserito il seguente script:#!/usr/bin/env bash # Go fast on AC power. Similar to default Ubuntu settings if on_ac_power; then # Set the drive to mostly stay awake. Some may want to change -B 254 # to -B 255 to avoid accumulating Load_Cycle_Counts hdparm -B 254 -S 240 -M 254 /dev/sda # Remount ext3 filesystems so the journal commit only happens every 60 # seconds. By default this is 5 but, I prefer to reduce the disk # activity a bit. mount -o remount,commit=60 / mount -o remount,commit=60 /home # Turn off the laptop mode disk optimization echo 0 > /proc/sys/vm/laptop_mode # Set kernel dirty page value back to default echo 10 > /proc/sys/vm/dirty_ratio echo 5 > /proc/sys/vm/dirty_background_ratio # Only wakeup every 60 seconds to see if we need to write dirty pages # By default this is every 5 seconds but, I prefer 60 to reduce disk # activity. echo 6000 > /proc/sys/vm/dirty_writeback_centisecs # Turn off sound card power savings echo 0 > /sys/module/snd_hda_intel/parameters/power_save # Set the SATA to max performance echo max_performance > /sys/class/scsi_host/host0/link_power_management_policy echo max_performance > /sys/class/scsi_host/host1/link_power_management_policy #restart bluetooth #you can also decide to use RFKILL here. hciconfig hci0 up /etc/init.d/bluetooth start #Enable eth0 ifconfig eth0 up else # Save power # Set the disks to aggressively save power and use the lowest acoustic # level. Some might find these settings too aggressive. If so, change hdparm -B 128 -S 4 -M 128 /dev/sda # Change the ext3 commit times to 10 minutes. This reduces diskhcd # activity mount -o remount,commit=600 / # Set laptop disk write mode echo 5 > /proc/sys/vm/laptop_mode # Reduce disk activity by waiting up to 10 minutes before doing writes echo 90 > /proc/sys/vm/dirty_ratio echo 1 > /proc/sys/vm/dirty_background_ratio echo 60000 > /proc/sys/vm/dirty_writeback_centisecs # Set sound card power savings echo 10 > /sys/module/snd_hda_intel/parameters/power_save # Set SATA to minimum power echo min_power > /sys/class/scsi_host/host0/link_power_management_policy echo min_power > /sys/class/scsi_host/host1/link_power_management_policy ifconfig eth0 down /etc/init.d/bluetooth stop hciconfig hci0 down fiCon questi accorgimento la batteria ha una durata di ~3 ore (contro le 4-5 ottenibili con Mac OS X).

Saluti.


1 commentoInserisci un commento • Pubblicato il 11 novembre 2009 • Ultima modifica 20 aprile 2011 • Feed commenti
1. nwccMNMmDrt - 1 febbraio 2012 @ 10:21
6KMr9A <a href="http://owmtbgvawzsm.com/">owmtbgvawzsm</a>

Inserisci un commento Info sui commenti

Nome:      Email:

Sito web / Pagina personale / Blog: