jiayi Rss

在MacBook Pro上配置opensuse 11.3 (8月1日更新)

Posted by jiayi | Posted in Linux, MackBook Pro | Posted on 27-07-2010

13

mac&openSUSE
前面介绍了如何在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

当你加载上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上运行不起来,将其换成如下脚本
Bash code


#! /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设置正常工作。
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桌面假死;另一个是关机时,音响会有一声爆音 --#

    

MacBook Pro 6.2 安装 opensuse 11.3

Posted by jiayi | Posted in Linux, MackBook Pro | Posted on 26-07-2010

0


对比ubuntu在mbp上安装步骤的简洁、精确,openSUSE让我觉得鸭梨很大,装了不下5次才有今天的模样。。这两天光驱嗷嗷转,小心肝那个疼啊 --。。

硬件概况:

下图是jiayi苹果小本的基本硬件信息
 
 
mbp_hardware_info

分区

友情提示:分区前务必做好备份。MacOS用time machine,Win7用自带的备份工具。

jiayi mbp的硬盘320G,最后共存4个系统:MacOS,Win7,Ubuntu 10.4,openSUSE 11.3 。

mbp采用的GPT分区表,理论上任何分区都是主分区,都能引导。但因为要装Win7,要装BootCamp,所以最后成了GPT MBR混合的分区管理。其中Win7只能看到前4个分区。

经历数次尝试,得出以下结论:虽有有rEFIt管理分区表,但linux引导分区只能放在前4个分区中。否则就算rEFIt眼里的分区表没错,选择引导Linux最后会进入Win7。。

下面是jiayi的分区:

  • 第#1个分区保险起见不动。
  • 第#2个分区分给Win7,ntfs格式
  • 第#3个分区分给所谓的D盘,由各个系统共用,ntfs格式
  • 第#4个分区是ubuntu的boot分区,同时安装了ubuntu的grub2,用于引导后面的ubuntu和openSUSE。EXT3格式
  • 第#5个分去留给MacOS,它放在哪都OK。。
  • 第#6个分区给ubuntu,ubuntu对mbp的支持,只能说太好了,实在没有不装的理由。。EXT4
  • 第#7个分区给我们的主角openSUSE,EXT4
  • 第#8个分区象征性的给swap分区

分区框架用Mac安装盘的磁盘工具做,Linux分区先格成FAT。

安装

先在MacOS中安装rEFIt工具,然后就开始吃苹果啦。。不过别急,如果你迫不及待的插入openSUSE光盘,分区,安装,恭喜你,可以卸掉重装了。。

  • 安装openSUSE前,先用ubuntu的LiveCD将前面分好的区进行大小调整、格式化。反正ubuntu也不大,LiveCD都插入了,干脆装了。。。
  • 待ubuntu将openSUSE的#7分区格掉后,这才轮到openSUSE的大DVD插入。
  • 选择语言、时区、键盘布局,走到分区这步,你要做的只是将#7,也就是现在的/dev/sda7挂在/点,不要格式化,不要调整大小,不要作任何调整,手抖害死人。。
  • 后面是填写用户信息和密码,之后是对系统的调整,这里在Boot栏选择不安装任何引导程序
  • 之后就可以刷刷的install了。

总结下,安装openSUSE要用ubuntu来分区、格式化,要用ubuntu的引导程序,自己的不靠谱挖。。

引导

因为没有给openSUSE安装引导程序,所以借助ubuntu的grub2来直接引导。

  • 进入ubuntu,终端执行: sudo update-grub。这个脚本会自动将openSUSE添加到grub2的引导项菜单中。
  • 这里添加的openSUSE只是最简单的引导,没有任何内核参数。要添加引导参数,打开ubuntu的/etc/grub.d/30_os-prober,将参数添加到 linux ${LKERNEL} ${LPARAMS} 后面,比如splash,vga啥的
  • 重启,rEFIt选择#4分区的Linux

grub2引导菜单赫然出现了openSUSE~果断回车,成功引导~

后续工作

好了,现在suse这只小蜥蜴总算趴在小苹果上了,但因为好多驱动、配置还有问题,所以小蜥蜴并不爽。
如何让小蜥蜴和小苹果merge的更好,请看后面的 在MacBook Pro上配置opensuse 11.3