在MacBook Pro上配置opensuse 11.3 (8月1日更新)
Posted by jiayi | Posted in Linux, MackBook Pro | Posted on 27-07-2010
13

前面介绍了如何在MacBook Pro上安装openSUSE 11.3,接下来说说如何对我们的suse进行配置调优。
手动安装显卡驱动
jiayi的显卡是GeForce GT 330M,openSUSE 11.3默认集成nvidia的开源驱动nouveau,工作还算正常,3D上来就能开。不过还是换了最新的官网驱动。
- 先将nouveau禁掉,在内核启动参数里加上 nomodeset。
- 再修改 /etc/sysconfig/kernel,将其中的 NO_KMS_IN_INITRD改成yes
- ctrl alt F1切到控制台,init 3, sh xxx.run -q
- 安装成功后执行 nvidia-xconfig
- reboot
配置声卡
开始外放、耳机都是没声的,需要我们做一些设置。。
- 先修改 /etc/modprobe.d/50-sound.conf ,在其中添加 options snd-hda-intel model=mbp55
- zypper in alsamixergui
- 开启alsamixergui,将里面所有选项都打开。
这时外放、耳机都正常工作了~
无线网卡
如果升级了最新kernel,请自己编译安装 http://www.broadcom.com/support/802.11/linux_sta.php
如果没有更新kernel
- 添加packman源
- zypper in broadcom-wl
- zypper in broadcom-wl-kmp-desktop,如果加载的default内核,将desktop换成default
接下来的驱动,引用角哥的话:天下大事,为我所用。。。因为suse实在没有提供这些东东
applesmc
这是苹果的system management controller。在网上找到了补丁版 http://bitmath.org/code/applesmc-dkms
- 下载源码:git clone http://bitmath.org/git/applesmc-dkms.git
- 解压后进入 applesmc-dkms/usr/src/dkms_source_tree
- 编译驱动:make -C /lib/modules/$(uname -r)/build M=$(pwd) modules。这时目录里有了新的applesmc.ko
- 找到旧的applesmc模块,cd /lib/modules/$(uname -r) && find -name "applesmc.ko"
- 备份旧模块,如果有被加载,卸载之:rmmod applesmc
- 将新模块拷贝到旧模块的目录,加载之:depmod -a && modprobe applesmc
装好applesmc后,键盘背光可以调节了。不过要通过修改 /sys/class/leds/smc::kbd_backlight/brightness 手动调。。
不急,后面总会好的
LCD背光亮度调节驱动mbp_nvidia_bl
负责调节屏幕背光亮度的是 mbp_nvidia_bl 模块,此模块没有加载,原因是加不上。。
秉着“天下大事,为我所用”的原则,jiayi找到了ubuntu
- 去 https://launchpad.net/~mactel-support/+archive/ppa 下载 mbp-nvidia-bl-dkms_0.24.3~lucid.tar.gz
- 之后的步骤同上面的applesmc
当你加载上mbp_nvidia_bl.ko时,会明显感觉到屏幕亮度的变化,说明亮度已经可以控制。不过也要通过 /sys/class/backlight/mbp_backlight/brightness 手动调
pommed
键盘、屏幕亮度的调节都要修改文件,总感觉有点不和谐。。pommed可以将键盘功能纠回Macintosh状态~
之前从suse源里装的1.30版本,运行起来总找不到进程。pommed -f 调一下,出现:E: Unknown Apple machine。估计软件版本太低,识别不了我的mbp。
- 去 https://alioth.debian.org/projects/pommed/ 下载最新的
1.33版本1.34版本,按照里面的 INSTALL 编译安装 - 其中 INSTALL 要求放到 /etc/init.d/ 目录中的 pommed脚本在opensuse上运行不起来,将其换成如下脚本
#! /bin/sh
#
# /etc/init.d/pommed
#
### BEGIN INIT INFO
# Provides: pommed
# Required-Start: $syslog $local_fs
# Required-Stop: $syslog $local_fs
# Should-Start: dbus
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Apple laptops hotkeys event handler
# Description: pommed handles the hotkeys found on the Apple MacBook Pro,
# MacBook Air and MacBook laptops and adjusts the LCD
# backlight, sound volume, keyboard backlight or ejects the
# CD-ROM drive accordingly.
### END INIT INFO
POMMED_BIN=/usr/local/bin/pommed
test -x $POMMED_BIN || exit 5
. /etc/rc.status
# First reset status of this service
rc_reset
case "$1" in
start)
echo -n "Starting MacBook Pro hotkeys daemon (Pommed)"
## Start daemon with startproc(8). If this fails
## the echo return value is set appropriate.
# NOTE: startproc return 0, even if service is
# already running to match LSB spec.
startproc $POMMED_BIN
# Remember status and be verbose
rc_status -v
;;
stop)
echo -n "Shutting down MacBook Pro hotkeys daemon (Pommed)"
## Stop daemon with killproc(8) and if this fails
## set echo the echo return value.
killproc -TERM $POMMED_BIN
# Remember status and be verbose
rc_status -v
;;
try-restart)
$0 status >/dev/null && $0 restart
# Remember status and be quiet
rc_status
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
# Remember status and be quiet
rc_status
;;
force-reload)
## Signal the daemon to reload its config. Most daemons
## do this on signal 1 (SIGHUP).
## If it does not support it, restart.
echo -n "Reload MackBook Pro hotkeys daemon (Pommed)"
$0 stop && $0 start
rc_status
;;
reload)
## Like force-reload, but if daemon does not support
## signalling, do nothing (!)
rc_failed 3
rc_status -v
;;
status)
echo -n "Checking for MacBook Pro daemon (Pommed): "
## Check status with checkproc(8), if process is running
## checkproc will return with exit status 0.
# NOTE: checkproc returns LSB compliant status values.
checkproc $ZEBRA_BIN
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
exit 1
;;
esac
rc_exit
- chkconfig -a pommed
Touchpad & Multitouch
系统默认已经加载了 bcm5974 驱动,基本的双指滑动,双指右击,触碰单击都能通过mouse设置正常工作。

要加入multitouch功能,去 http://bitmath.org/code/bcm5974-dkms 下载修改过的bcm5974驱动。安装方法同上面的applsmc
装上打开图片,能放大缩小,不过缩放效果有时与手势相反,看来此驱动还需要继续改进。。
刷刷的风扇
macbook看不到风扇出风口,但不代表木有风扇=。=
suse跑起来烫烫的的有木有。。安装这个东东macfanctld,一个温度传感器的守护程序,温度高的时候启动风扇,废话。。
ctrl-alt-F7 switch back to X
刚装好就郁闷的发现,从X桌面可以切到任何控制台,但从任何控制台,都不能做切换!
试过各种组合,最后发现居然要用 command 键。。 fn-command-F7
从休眠中唤醒
默认情况,如果开启3D特效,从休眠中唤醒X桌面会假死。
jiayi用的gnome-power-manager,而gpm调用s2ram来使系统休眠。通过尝试,命令行直接 s2ram -f -p -m 后可以正常唤醒。所以
- cd /etc/pm/config.d
- echo ‘S2RAM_OPTS="-f -p -m"’ >> config
合上机盖再打开,一切OK~
中文字体
- 安装文泉驿点阵宋体


- 编辑/etc/fonts/conf.d/58-suse-post-user.conf,将所有<family>WenQuanYi WenQuanYi Bitmap Song</family>移到的对应的DejaVu字体后面
待解决问题
经过如上配置,jiayi的openSUSE终于能在mbp上较为舒服的运行了。
美中不足的还有两个问题,一个是系统休眠唤醒后,X桌面假死;另一个是关机时,音响会有一声爆音 --#




