写在最前面
这篇在7月份的时候已经有发过,不过因为不清楚的原因导致 github 上文章丢失;在没有备份的情况下,网上发现有人居然把某这篇爬了下来,所以避免了从头写过的悲剧;重新发布,并做了一些更新和修正。
为什么又是Gentoo!?
故事的开端和 Gentoo 一点关系都没有啦XD
其实在 Mac 用上 SSD 后唯一不满意的就是容量偏小了一点,256GB 哪里够用啊,放放文档、图书、源代码、音乐和虚拟机还有里番什么的XDDD
不一会就见底了;于是这次没憋住,在淘宝上入了一块光驱架,把原装的toshiba硬盘给塞回去了XDDD
脑一抽,当初买Mac回来第一件折腾的就是想安个Linux上去,所以趁这次机会有块硬盘就折腾一下啦…结果没想到整整两天啊XDDD
装系统什么的最喜欢了XDDDD
背景信息
『装Linux吗,有那么麻烦吗?』,回答是肯定的,至少在 macintosh 的硬件上是如此,这篇折腾的记录并不一定能适用于所有人,甚至不一定适用于同样型号的你,不过能在 EFI 的设备上安装 Linux,也会对以后类似硬件有一定帮助的认识。
所以想按照这篇记录来折腾的,至少先把情况了解一下。某的 macbookpro 型号是 2011 early 的 15 寸低配,在lspci
里显示为macboopro8,2
。
lspci -k
的结果
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
Subsystem: Apple Inc. MacBookPro8,2 [Core i7, 15", 2011]
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
Kernel driver in use: pcieport
00:01.1 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
Kernel driver in use: pcieport
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
Subsystem: Apple Inc. Device 00dc
Kernel driver in use: i915
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
Subsystem: Intel Corporation Apple MacBookPro8,2 [Core i7, 15", 2011]
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Universal Host Controller #5 (rev 05)
Subsystem: Intel Corporation Apple MacBookPro8,2 [Core i7, 15", 2011]
Kernel driver in use: uhci_hcd
00:1a.7 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
Subsystem: Intel Corporation Apple MacBookPro8,2 [Core i7, 15", 2011]
Kernel driver in use: ehci-pci
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)
Subsystem: Intel Corporation Apple MacBookPro8,2 [Core i7, 15", 2011]
Kernel driver in use: snd_hda_intel
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
Kernel driver in use: pcieport
00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2 (rev b5)
Kernel driver in use: pcieport
00:1c.2 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 3 (rev b5)
Kernel driver in use: pcieport
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Universal Host Controller #1 (rev 05)
Subsystem: Intel Corporation Apple MacBookPro8,2 [Core i7, 15", 2011]
Kernel driver in use: uhci_hcd
00:1d.7 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
Subsystem: Intel Corporation Apple MacBookPro8,2 [Core i7, 15", 2011]
Kernel driver in use: ehci-pci
00:1f.0 ISA bridge: Intel Corporation HM65 Express Chipset Family LPC Controller (rev 05)
Subsystem: Intel Corporation Apple MacBookPro8,2 [Core i7, 15", 2011]
Kernel driver in use: lpc_ich
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 05)
Subsystem: Intel Corporation Apple MacBookPro8,2 [Core i7, 15", 2011]
Kernel driver in use: ahci
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 05)
Subsystem: Intel Corporation Apple MacBookPro8,2 [Core i7, 15", 2011]
01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Seymour [Radeon HD 6400M/7400M Series]
Subsystem: Apple Inc. Device 00e1
Kernel driver in use: radeon
Kernel modules: radeon
01:00.1 Audio device: Advanced Micro Devices [AMD] nee ATI Caicos HDMI Audio [Radeon HD 6400 Series]
Kernel driver in use: snd_hda_intel
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM57765 Gigabit Ethernet PCIe (rev 10)
Subsystem: Broadcom Corporation NetXtreme BCM57765 Gigabit Ethernet PCIe
Kernel driver in use: tg3
02:00.1 SD Host controller: Broadcom Corporation NetXtreme BCM57765 Memory Card Reader (rev 10)
Subsystem: Broadcom Corporation Device 0000
03:00.0 Network controller: Broadcom Corporation BCM4331 802.11a/b/g/n (rev 02)
Subsystem: Apple Inc. AirPort Extreme
Kernel driver in use: bcma-pci-bridge
04:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 08)
Subsystem: LSI Corporation FW643 [TrueFire] PCIe 1394b Controller
Kernel driver in use: firewire_ohci
某想用到需要的大多数功能,比如 WiFi 、蓝牙、多点触控、外部显示输出、读卡器。所以驱动可能是一个大问题。好在基于 Intel 的 Mac 和 PC 来说差别已经不是很大了。
不过有一点还是有些难度,双显卡切换,这款笔电带两个显卡,一个是 CPU 内置的 Intel HD 3000,另外一个是 Radeon HD6490M ,默认的 Intel 显卡显示起来基本没有问题,跑起 KDE 的特效速度也能接受,而想要外接显示器就必须用 AMD 显卡(原因似乎是外接显示口只连接着独立显卡)。
将会遇到的主要困难
- 启动,EFI 的启动和 BIOS 差别很大,尤其又牵涉到独立显卡的切换
- Radeon 显卡的驱动以及动态在 Intel 互相间切换
- 设备驱动,touchpad 和无线网卡等设备都是需要处理配置一下的
- 其他,比如温度控制等,虽然不是非常严重,不过想用的舒坦最好也搞定
参考资料
其他
主要参考(硬件驱动、kernel patch等思路都是来自这篇)
有关rEFInd
- rEFInd
- boot mode
- How to install System Rescue CD + rEFInd in an USB Stick for EFI systems (Macboot, UEFI PC/Laptops)
有关uEFI的GRUB2启动
- GRUB2 on gentoo wiki
- How to reinstall GRUB2 EFI?
- EFI stub kernel (这个可以做到不用bootloader,直接EFI启动)
- Support for UEFI booting (x86_64 Intel Mac and alike)
其他发行版上有关MBP的信息
- [SOLVED] Macbook Pro Install AMD64
- Apple Macbook Pro Retina
- Debian on the MacBookPro8,2 (late 2011)
- Debian on MacBookPro
- [Archlinux on MacBook Pro 8,1 / 8,2 / 8,3 (2011)](https://wiki.archlinux.org/index.php/MacBook_Pro_8,1_/_8,2_/_8,3_(2011_Macbook_Pro)
- Archlinux Forum - MacBook Pro 8,1 / 8,2 / 8,3 (2011 Macbook Pro)
有关Radeon显卡驱动(包括UVD)
- Radeon on gentoo wiki (Radeon驱动、固件信息参考)
- EFI boot failure to properly initialize graphics on Macs with Intel and AMD graphics (MacBookPro 8,2 and 8,3
- Macbook Pro 8,2 (2011) - Unable to locate a BIOS ROM
- Radeon KMS fails with inaccessible AtomBIOS on systems with (U)EFI boot
有关显卡切换
有关其他硬件驱动
- Macbook pro 8,2, trackpad doesn’t do multitouch
- Gentoo Macbook pro 8.2 WiFi
- Broadcom wireless
- How to get wireless (BCM4331) working on Macbook Pro 8,2⁄8,1⁄8,3 + Natty
- b43 and b43legacy (kernel的驱动已经够好,这个仅用作备用参考)
准备工作
启动我们将会使用SystemRescueCD
,这里由于某这台MBP的型号是有光驱的,可以利用光驱启动来进入 BIOS 模式(具体用户在后面显卡的地方会介绍)。把SystemRescueCD的镜像dd到闪盘上去,修改一下 grub 的配置文件,将isolinux
都替换成syslinux
即可。
OSX 下还需要参考资料里第一条那样,将 iso 先转换成 dmg 使用。Linux 下还可以把SystemRescueCD 的 iso 挂载后使用里面的自动安装脚本,选择闪盘设备即可。
Windows 下则可以使用Linux LiveUSB Creator。
注意MBP使用USB光驱是无法启动的(除了自家的?),至少某没测试成功。所以进入 BIOS 的手段需要二选一,某选择使用 SystemRescueCD 做的 USB 启动介质,可以进入 EFI 启动模式。如果没有光驱,那就只能使用rEFInd来修改启动类型,具体的某没操作过,不过按照官方文档来应该不是一件困难的事情。
如果要获取 BIOS 内容,则必须有兼容 BIOS 启动的设备,比如光驱启动。
可能的话,最好还是有一个有线网络环境。
安装工作
启动黑屏
首先一个最大的问题,如果使用 SystemRescueCD 的闪盘启动,会使用EFI原生的GRUB2进入,这时由于Intel 显卡的配置不正确,有可能黑屏,所以要在 GRUB2 的配置里稍作修改。(为了让闪盘启动更方便,可以直接修改闪盘里GRUB的配置文件)。
# load_video # 将原有的load_video注释掉
# 新增以下内容
set gfxmode=keep
outb 0x728 1
outb 0x710 2
outb 0x740 2
# kernel 那行后可以加入 让i915显示驱动正常工作
i915.modeset=1 i915.lvds_channel_mode=2 i915.lvds_use_ssc=0
从GRUB2启动到SystemRescueCD就不会黑屏了。接下来可以开始和正常安装Gentoo的流程一样,一直到配置内核。
分区
磁盘格式使用 GPT。
某是和 OSX 分开安装的,所以相对安全一些,单独留一个 /efi
的分区放EFI启动文件即可。某这里把所有 grub2 的模块都放进去总大小18MB,所以64MB左右应该就够用了。
如果和 OSX 放同一个分区下,则注意需要把 OSX 自己的 EFI 分区给洗了(否则就等着重装吧XDDD)。
另外,如果硬盘是在 OSX 下初始化的话,默认就留好了一个 EFI 启动分区XDDD
至于文件格式,就随喜好了。
最后留意 EFI 分区格式还是 FAT32 以求最大兼容性,具体会在 bootloader 那节里说明。
chroot 时要留意的地方
由于最终会用 EFI 的方式启动,所以别无选择的会要使用 GRUB2 来做 bootloader,在这里会使用到 efibootmgr 工具来进行EFI引导信息的写入,它要求安装环境加载efivars
模块,这个模块的功能是在/sys/efi
下添加 EFI 相关信息的文件系统来让程序获取信息,所以在 chroot 的时候,除了原本的 mount 外,还需要加一条
cd /mnt/gentoo # 假设我们把最终环境的/挂载到这里
mount -t proc none proc
mount --rbind /dev dev
mount --rbind /sys sys
还要记得在外面
modprobe efivars
如果这条命令报错,说明没有从EFI模式启动。
配置kernel
目前使用最新的 gentoo-sources 即可,包括 3.10 分支,以及还未stable的3.12。
至于前一次提到的 EFI 模式下 radeon 驱动读取 BIOS 内容的问题,仍旧可以参考来源
配置kernel里其他选项
如果有其他选项不明白的,可以参考某上次整理的kernel配置选项说明,这里只提及必要的选项
Processor type and features --->
[*] Machine Check / overheating reporting
[*] Intel MCE features
[ ] AMD MCE features
<M> CPU microcode loading support
[*] Intel microcode loading support
[ ] AMD microcode loading support
<M> /dev/cpu/*/msr - Model-specific register support
<M> /dev/cpu/*/cpuid - CPU information support
[*] EFI runtime service support
[*] EFI stub support
Power Management and ACPI options --->
[*] Suspend to RAM and standy
[ ] Hibernate (aka 'suspend to disk')
[*] ACPI (Adavanced Configuration and Power Interface) Support --->
<*> AC Adapter
<*> Battery
-*- Button
-*- Video
<*> Fan
[ ] Dock
<*> Processor
<*> Thermal Zone
Bus options (PCI etc.) --->
[*] PCI support
[*] PCI Express support
[*] PCCard (PCMCIA/CardBus) support --->
<*> 16-bit PCMCIA suuport
[*] Support for PCI Hotplug --->
[*] Networking support --->
<*> Bluetooth subsystem support --->
<*> RFCOMM protocol support
[*] RFCOMM TTY support
<*> BNEP protocol support
[*] Multicase filter support
[*] Protocol filter support
<*> HIDP protocol support
Bluetooth device drivers ---> # 这里保险起见把所有的都选上,等某搞清楚哪个驱动了再清理
-*- wirelress --->
<*> cfg80211 - wireless configuration API
[*] enable powersave default
[*] cfg80211 wireless extensions compatibility
<*> Generic IEEE 802.11 Networking Stack (mac80211)
<*> RF switch subsystem support --->
Device Drivers --->
Generic Driver Options --->
[*] Maintain a devtmpfs filesystem to mount at /dev
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs
-*- Userspace firmware loading support
[*] Include in-kernel firmware blobs in kernel binary
<*> Serial ATA and Parallel ATA drivers --->
<*> AHCI SATA suuport
[*] ATA SFF support (for legacy IDE and PATA)
[*] ATA BMDMA support
<*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA suuport
<*> ACPI firmware driver for PATA
<*> Generic ATA suuport
[*] Network device suuport --->
[*] Ethernet driver support --->
[*] Broadcom drvices
<*> Broadcom Tigon3 suuport
-*- PHY Device support and inftrasture --->
<M> Drivers for Broadcom PHYs
[*] Wireless LAN --->
<M> Broadcom 43xx wireless support (mac80211 stack)
[*] Support for BCMA bus
[*] Hardware support that overlaps with the brcmsmac driver
[*] Support for HT-PHY (high throughput) devices
Input device support --->
[*] Mice --->
<*> Apple USB BCM5974 Multitouch trackpad support
-*- Hardware Monitoring support --->
<M> Intel Core/Core2/Atom temperature sensor
<*> Apple SMC (motion sensor, light sensor, keyboard backlight)
[*] Watchdog Timer Support
<*> Intel TCO Timer/Watchdog
[*] Intel TCO Timer/Watchdog Specific Vendor Support
Graphics support --->
<*> /dev/agpgart (AGP Support) --->
<*> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
[*] Laptop Hybird Graphics - GPU switching support # 这个选项就是vgaswitcheroo
[*] Apple GMUX handler for Hybird Graphics # 打了patch后才有这个选项
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
<M> ATI Radeon # 确定Radeon显卡没问题前先模块比较保险,万一出错之后启动就永远失败了...
<*> Intel 8xx/9xx/G3x/G4x/HD Graphics
[*] Enable modesetting on intel by default
<M> MMC/SD/SDIO card support --->
[*] X86 Platform Specific Device Drivers --->
<*> Apple Gmux Driver> # 背光调节支持
其他诸如声卡、文件系统、网络、安全还有虚拟化支持就随喜好设置即可。
需要留意的,主要是一些设备驱动,这里简要说明一下。也可以直接使用某的.config
,make menuconfig
,然后save
一下就可以自动转成对应版本的配置。
最后,为了一些其他扩展功能,生成initrd
也有必要。可以考虑用genkernel
来做。
另外,上面选择并非从kernel里直接获取firmware文件,记得要安装sys-kernel/linux-firmware
,想要支持 UVD 记得要安装20130530
或者以后的版本。
bootloader
这里使用grub2,关于具体使用方法,可以参考[]wiki页面](http://wiki.gentoo.org/wiki/GRUB2)。(参考其中uEFI/GPT部分)
这里简要介绍一下做法,准备EFI分区(假设是/dev/sda1)
# FAT32分区,label为"efi-boot"
mkdosfs -F 32 -n efi-boot /dev/sda1
# EFI分区将mount在这个路径
mkdir /boot/efi
# 写fstab配置,使用label来挂载EFI分区
echo 'LABEL=efi-boot /boot/efi vfat defaults 0 2' >> /etc/fstab
# 挂载
mount /boot/efi
# 创建必要的目录
mkdir -p /boot/efi/{EFI/BOOT,GRUB2}
在/etc/portage/make.conf
里加入配置
GRUB_PLATFORMS="efi-64"
安装grub2
emerge -av grub:2
确保在chroot前已经modprobe efivars
,并且挂载了/sys
目录,如果没有则推出 chroot 挂载好再 chroot 进来。
安装GRUB2
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot/efi
保险起见,将所有 GRUB2 模块都复制到启动分区里
cp -a /usr/lib/grub/x86_64-efi/* /boot/efi/GRUB2/
生成bootloader文件,后面的-O
指定了需要的模块,根据需要调整。
如果grub.efi文件调整,则这部和下面复制那步需要重新做。
grub2-mkimage -p /grub2 -o /boot/efi/GRUB2/grub.efi -O x86_64-efi ext2 fat lvm part_msdos part_gpt search_fs_uuid normal
安装默认的bootloader位置
cp /boot/efi/GRUB2/grub.efi /boot/efi/EFI/BOOT/BOOTX64.EFI
添加EFI启动记录
安装efibootmgr
echo "sys-boot/efibootmgr ~amd64" >> /etc/portage/package.keywords
emerge -av efibootmgr
添加EFI引导记录,注意2个反斜杠。
efibootmgr --create --gpt --disk /dev/sda --part 1 --write-signature --label "GRUB2" --loader "\\EFI\\GRUB2\\grub.efi"
生成GRUB2配置文件
由于默认的GRUB2配置文件基础上要修改,和GRUB1不同就是配置文件不再需要手工配置,调整好生成脚本,可以自动生成。
修改/etc/default/grub
内容
GRUB_CMDLINE_LINUX="i915.modeset=1 i915.lvds_channel_mode=2 i915.lvds_use_ssc=0 radeon.modeset=1"
生成配置文件,以后每次更新kernel等,也需要重新生成,会默认把版本最大的放到第一位启动
grub2-mkconfig -o /boot/efi/grub2/grub.cfg
其他配置
接下来可以做一些其他配置安装工作,必要的步骤还有
- fstab
- 记得安装syslog-ng、vixie-cron、对应的fsprogs等工具
- 如果对udev新的网络设备命名不满意,可以在/etc/udev/rules.d下追加命名规则,如果喜欢以前的命名方式。
- 网络配置
/etc/conf.d/net
- 千万别忘记设置root密码啊XDDDD 否则就算成功boot起来了也进不了系统XDDDDD
预备,启动!
如果是和OSX安装到同一个硬盘,按照前面的设置,现在可能默认启动Gentoo了,不喜欢的话可以用efibootmgr或OSX其他工具调整启动顺序。
加电点亮后,按住Option键应该就可以看到2个启动选项了。
如果一切正常就可以看到GRUB2界面,启动第一项就能顺利进入Gentoo界面了XDDD
恭喜你,在MBP上安装Gentoo的主要流程已经完成了!
使用上的问题
如果发现有异常,记得使用dmesg看kernel相关的日志信息。常见的几个问题基本都是radeon显卡的问题。
切换显卡(使用外接显示器)
如果radeon驱动加载正常,则可以通过/sys/kernel/debug/vgaswitcheroo/switch切换
# 切换到radeon显卡,屏幕会短暂的卡住几秒后便正常,否则就可能死机了...
echo DIS > /sys/kernel/debug/vgaswitcheroo/switch
# 切换到intel显卡
echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
# 确认显卡使用情况,第3栏有+号表示使用中
cat /sys/kernel/debug/vgaswitcheroo/switch
0:IGD:+:Pwr:0000:00:02.0
1:DIS-Audio: :Pwr:0000:01:00.1
2:DIS: :Pwr:0000:01:00.0
据说切换到radeon,待机的话唤醒后可能有问题,某还没遇到过。
如果不存在/sys/kernel/debug/vgaswitcheroo
,请检查kernel配置,以及dmesg信息,radeon驱动是否正常加载。
正常加载的信息应该类似
[ 8.573169] [drm] radeon kernel modesetting enabled.
[ 8.573445] [drm] initializing kernel modesetting (CAICOS 0x1002:0x6760 0x106B:0x00E1).
[ 8.573479] [drm] register mmio base: 0xB0800000
[ 8.573481] [drm] register mmio size: 131072
[ 8.573483] vga_switcheroo: enabled
[ 8.928126] ATOM BIOS: Seymour
[ 8.928577] radeon 0000:01:00.0: VRAM: 256M 0x0000000000000000 - 0x000000000FFFFFFF (256M used)
[ 8.928580] radeon 0000:01:00.0: GTT: 512M 0x0000000010000000 - 0x000000002FFFFFFF
[ 8.934412] [drm] Detected VRAM RAM=256M, BAR=256M
[ 8.934415] [drm] RAM width 64bits DDR
[ 8.934508] [TTM] Zone kernel: Available graphics memory: 4037910 kiB
[ 8.934510] [TTM] Zone dma32: Available graphics memory: 2097152 kiB
[ 8.934511] [TTM] Initializing pool allocator
[ 8.934517] [TTM] Initializing DMA pool allocator
[ 8.934541] [drm] radeon: 256M of VRAM memory ready
[ 8.934543] [drm] radeon: 512M of GTT memory ready.
[ 9.186557] radeon 0000:01:00.0: ffff880265417c00 unpin not necessary
[ 9.329928] radeon 0000:01:00.0: fence driver on ring 5 use gpu addr 0x0000000000072118 and cpu addr 0xffffc9001b4e6118
[ 9.329936] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 9.330390] [drm] PCIE gen 2 link speeds already enabled
[ 9.330421] [drm] Loading CAICOS Microcode
视频回放 UVD硬件解码
这个问题稍显复杂一些,因为 Intel 的显卡和 Radeon 都是可以硬件解码的。比较早硬件解码视频回放是 nvidia 搞出来的技术,叫做 VDPAU ,后来则变成一个一种 Unix-like 系统下硬件解码视频回放的规范, Intel 则还有自己的实现 VA-API ,目前一些程序可以通过 VDPAU 来作为 VA-API 的后端;此外 AMD 也有自己对 VDPAU 的实现,叫做 XvBA。
这里我们就不纠结名字的来龙去脉了,可以笼统的认为在 Linux 下,这3者都可以指代硬件解码视频回放。前提是你的硬件支持,这里 i7 2635QM 的 HD3000 和 Radeon HD6490M 都是支持的( AMD 5 月份发布的开源 UVD 驱动要求 Radeon 要达到 HD4000 系列以上)。
这里简述一下具体操作。如果想用radeon
驱动的话,确保UVD
固件加载正常。
例如
[ 9.629024] [drm] UVD initialized successfully.
启用 VDPAU 的前提条件是 3D 加速启用 OK ,而支持 UVD 的 r600 驱动要求 mesa 版本使用 9.2 以上的分支。
注意由于 mesa-9.2
以上目前均还是 keywords 的,并且高于 9.2 的版本会要求 udev 也升级到最新的版本对系统影响比较大,建议仅使用 9.2 这个版本就好。
# make.conf 里记得要加上 r600 ,这样 mesa 才会编译 r60 0的 3D 加速
VIDEO_CARDS="intel i965 radeon r600"
自己打开 keywords 安装吧。 X 启动后,可以用x11-misc/vdpauinfo
来检查是否支持。
另外还要有支持的播放器。 mplayer(smplayer) 支持 vdpau , vlc 支持 vaapi ,二者皆可以使用。
无线网卡
正常情况下, BCM43xx系 列的网卡已经不能再用官方以前提供的 STA 驱动,会造成 kernel panic,使用 kernel 里新支持的 brcmsmac 即可。 udev 下能识别出网卡即可。
再按照 wpa_supplicant 设置一下,例如最简单的设置如下。其他 DE 或者使用 Networkmanager 可能更简单一点,不过某都是寻找比较轻量的程序。
某的配置
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
ssid="FOO"
psk="..."
key_mgmt=WPA-PSK
}
CPU风扇
kernel 里打开 apple smc 选项后便可以支持温度控制。
在/sys/devices/platform/applesmc.768
下面有传感器。根据 iFixit 上以及某自己拆机显示, MBP8,2 是有2个 CPU 风扇的,2个热管将 CPU 和 GPU 连起来,分别通向一个风扇。所以在该目录下面会看到 fan1 和 fan2 。
fan1_input 和 fan2_input 分别指示当前的转速。max 表示最大转速,为 6200;manual 表示是否手动控制,默认是自动的;output 为当前输出速率;3000 以下基本没声音,4500 以上就有一些吵了。而Linux 比较奇怪,默认就 5000 左右。所以可以自己调节一下。获取温度除了可以自己从 coretemp 里之外还可以使用lm_sensors
包里的sensors
命令。
如果嫌自己写太麻烦,这里有一个现成的工具,只不过 Gentoo 下面需要自己安装。
背光调节
/sys/class/backlight/gmux_backlight
下面brightness
,最大值为max_brightness
里的110400,默认是30000左右。直接调整文件内容即可。
DE 直接可以支持快捷键调节的, KDE 测试 OK。
蓝牙
参考 wiki
选用 KDE 的bluedevil
,或者单独的bluez
都可以。后者记得要打开test-programs
的 USE FLAG,安装测试 pair 程序。
实际测试下来,Apple Magic Mouse 也是可以连接的,pair 的时候 PIN 输入0000
即可。
待机(suspend)至内存,以及休眠(hibernate)
suspend一切正常,只要kernel里ACPI电源相关勾选即可。
通过命令pm-suspend
激活,或者DE等的选项。(pm-suspend
命令在pm-utils
这个包里)
hibernate某个人没需要,但看到有说多少有点小问题,所以还是推荐不要尝试了。某直接kernel的ACPI里关闭掉了。
结语
总体而言老的 MBP 硬件已与 PC 无异,现在使用 Windows 8 的 PC 也已经是 EFI ,只是带了 legacy boot device 的支持,相信以后会有更多这样的设备,我们可以看到 GRUB2 等 Linux 世界的工具早已为这些做好了准备,在 MBP 上使用 Linux 也是一件非常愉快的事情 :)