Mac (简体中文)
在MacBook上安装Arch Linux与在其他电脑上安装Arch Linux非常相似。然而,由于MacBook的特殊硬件配置,需要一些特殊的考虑,因此建立MacBook专页。更多背景信息,可以从官方安装指南以及安装后小贴士上获取。本文同样适用于MacBook Pro系列机型,也支持32位及64位版本。如果您正在使用MacBook 5,2并且有其他疑问,请猛击MacBook5,2获取帮助。
概述
在MacBook上安装Arch Linux可以分为一下几个步骤
- 安装Mac OS X:忽略安装过程最后的配置,此处将从一个新安装的OS X开始。
- 固件更新:这将有助于减少错误以及提供硬件的新特性。
- 分区:这步中可以调整OS X分区大小或删除分区并为Arch Linux建立分区。
- 安装Arch Linux:真正安装Arch Linux的过程。
- 安装后配置:针对MacBook的特殊配置。
安装 Mac OS X 以及固件更新
Apple已经提供了详尽的安装Mac OS X的教程。按照此教程安装好OS X后,点击菜单:
苹果图标 --> 软件升级
来更新所有软件。更新完成之后,您需要重启电脑。重启后请再次检查软件升级以确保所有软件都更新到了最新版。
如果您不打算安装Mac OS X,请为这些文件做好备份:
/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
这个文件将在后期调试iSight时用到。同样的,请备份色彩配置
/Library/ColorSync/Profiles/Displays/<此处的文件>
在调试色彩配置时会用到。
分区
下一步就是将硬盘重新分区。如果Mac OS X按照一般流程安装,那么您的硬盘将是GPT格式分区表,会有以下两个分区:
- EFI分区:一个大小有200MB的分区,在磁盘开始部分。有些分区工具会将其读作FAT分区,通常标为#1
- Mac OS X分区:这个分区(HFS+)一般是占用了硬盘的所有其他空间。通常标为#2
分区策略依据您想安装多少操作系统而定,有如下两个选项:
- 仅安装Arch Linux单系统。
- Mac OS X与Arch Linux共存双系统。
如果您不知道改选哪种方式,我们建议您选择双系统,这样您可以在任何时候回到Mac OS X。
仅安装Arch Linux
这种情况最好办。大多数情况下,分区操作与将Arch Linux安装在其他硬件上没两样。 唯一的不同点在于MacBook的启动响铃。为了确保启动响铃是关闭的,请提前在Mac OS X系统中就将音量调至静音。MacBook固件依赖于Mac OS X的配置。请注意,如果你选择去掉Mac OS X的分区,除了用另外一块硬盘来加载OS X进行设置固件外没有其他任何办法。
这之后可以使用parted来进行分区操作。最简单的办法是将分区表转为msdos格式,然后和平常一样来进行分区。GRUB不能认出GPT格式的分区表。
完成这一步骤之后,可以查看安装部分。
Mac OS X与Arch Linux共存
让Mac OS X与Arch Linux共存的最简单的分区方法是用Mac OS X的分区工具后用Arch Linux的工具完善。
过程:
- 在Mac OS X中,运行磁盘工具
- 在左侧栏,选择硬盘,请注意,是选择硬盘,而不是分区。点击右侧的分区标签。
- 选择要重置大小的分区。
- 确定你要给你的Mac OS X分区留多少空间,以及留多少空间给Arch Linux。记住一个Mac OS X大约需要15至20GB的空间,请留足空间以方便日后安装软件。
- 最后,设置Mac OS X分区的大小,然后在空白区域创建一个分区。
- 上述操作顺利完成后就可以进入下一步了,否则,请一定在Mac OS X上解决这些问题。
- 按住ALT键来从Arch Linux启动光盘启动。
- 现在,运行parted来完成后续操作。
# parted
- 删除空分区。你可以随意按照你的想法设置这个分区。请注意MBR是必须装在4个主分区上的,包括了EFI预留分区。也就是留下了2个主分区给Arch Linux。一种分区策略是分配一个根分区和一个Home分区,然后swap可以使用文件。要不然就是分配一个分区用于共享。下面会有详细说明。
- 此时,如果你需要多系统启动,你需要重启电脑,用rEFIt来修复磁盘上的分区表。如果你这样干,那您会需要重装GRUB来是Mac系统认出Linux分区。当你进入rEFIt菜单后,选择更新分区表,然后按Y
# reboot
- 完成了,可以继续安装过程了。
从GRUB直接启动
在efi上直接启动GRUB2而不用rEFIt是可以的。一下的操作在MacBook7,1上是可行的。建议将GRUB安装在fat32或者HFS+分区上,ext2或者ext3应该也行。GRUB的苹果加载命令在7,1上还暂时不能使用,但可以用过下面的补丁实现补丁地址。
GRUB装上硬盘分区后,固件需要知道从哪儿启动它。这步操作可以在OS X或者OS X安装光盘。下面的命令指明了GRUB是安装在OS X系统的/efi/grub中
sudo bless --folder /efi/grub --file /efi/grub/grub.efi
编译
有些型号可能需要将EFI_ARCH设置成i386。
bzr branch --revision -2 bzr://bzr.savannah.gnu.org/grub/trunk/grub grub cd grub ./autogen.sh patch -p1 < appleloader_macbook_7_1.patch export EFI_ARCH=x86_64 ./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix="" make cd grub-core ../grub-mkimage -O ${EFI_ARCH}-efi -d . -o grub.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot cp grub.efi *.mod *.lst yourinstalllocation
grub.cfg示例
此处应该有更好的方法来加载Windows系统。
set debug=video insmod efi_gop menuentry "Arch Linux EFI" { set root=(hd0,3) #search --set -f /boot/vmlinuz-linux-efi-physical #loadbios /boot/vbtrace_bios.bin /boot/int10.bin linux /boot/vmlinuz-linux-efi-physical root=/dev/sda3 reboot=pci resume=/dev/sda3 resume_offset=151552 initrd /boot/initramfs-linux-efi-physical.img } menuentry "MacOSX" { set root=(hd0,2) # Search the root device for Mac OS X's loader. #search --set -f /usr/standalone/i386/boot.efi # Load the loader. chainloader /usr/standalone/i386/boot.efi } menuentry "Windows 7" { appleloader HD } menuentry "Boot from CD" { appleloader CD } menuentry "Boot from USB" { appleloader USB }
安装
- 从Arch Linux安装光盘启动
boot: arch noapic irqpoll acpi=force
- 以root登陆
- 打开Arch Linux安装程序
/arch/setup
- 按照官方安装文档中说明的过程来做,但是在下面几个部分中请留意:
- 在准备磁盘部分,只要做设置磁盘挂在这步,注意要设对磁盘挂载点。
- 在安装启动器部分,编辑menu.lst文件,添加reboot=pci到kernel行的末尾,例如下面这行:
kernel /vmlinuz-linux root=/dev/sda5 ro reboot=pci
这样你的MacBook才能从Arch Linux正常重启 - 还是在安装启动器部分,将GRUB安装至
/boot
所在的分区。警告: 别把GRUB安装到/dev/sda这样的地方!!!这样做会造成系统不稳定。 - 在配置系统部分,编辑 /etc/mkinitcpio.conf,添加usbinput到HOOKS行的autodetect之后。这样才能在Arch Linux启动之前加载键盘驱动
- 安装完成之后就可以重启系统了。
# reboot
- 把Arch Linux安装光盘从光驱中退出。
安装后配置
Xorg
按照Xorg来安装Xorg。
视频
不同的MacBook有不同型号的显卡,可以通过下面命令来查看显卡种类
$ lspci | grep VGA
- 如果返回的字符串中包含intel,那你只需要安装xf86-video-intel驱动,用如下命令:
# pacman -S xf86-video-intel
- 如果返回的是nVidia,可以参看NVIDIA
- 如果返回ATI或者AMD,参见ATI
NVIDIA注意
对于使用NVIDIA显卡的MacBook,背景亮度可以通过AUR中的nvidia-bl-dkmsAUR{包解决。
MacBook 6,2+-EFI
截至2011年4月30日,nvidia驱动在此类EFI型号的机子下不能正常工作。可以了解一下mesa-git这个包。
触摸板
触摸板应该已经有了基本的功能。可以安装AUR中的xf86-input-multitouch-gitAUR[损坏的链接:package not found]包来达到和Mac OS X类似的多点触控效果,最多支持三点触控,包含了三指水平与垂直滑动。可以从项目主页 获取更多消息。
xf86-input-multitouch-git除了编辑源代码外不支持配置。一些用户也正面临这从palm上得到错误的点击。现在有个可定制度更高的包xf86-input-mtrack-gitAUR。在其readme中能得到更多配置信息。
下面的配置在MacBook 7,1中正常工作
Option "Thumbsize" "50" Option "ScrollDistance" "100"
可能你还需要添加下面的内容
MatchDevicePath "/dev/input/event10"
在更旧的MacBook机型上,比如MacBook 2,1中,可能需要安装xf86-input-synaptics包才能正常工作。可以查看Touchpad Synaptics获取更多信息。
键盘
MacBook的键盘默认是能正常工作的。如果想切换fn键,可以查看Apple Keyboard。
可以通过xbindkeys来重新设置键,或者通过DE配置。有另一种很好的方法,安装pommedAUR[损坏的链接:package not found]
根据你MacBook的硬件来配置/etc/pommed.conf,可以以/etc/pommed.conf.mac或者/etc/pommed.conf.ppc为模板来建立这个配置。
NVIDIA配置
如果在使用 pommed 后亮度仍然不正常, 请确认你安装了 nvidia-bl-dkmsAUR 并添加以下命令:
find . -name "*" -exec sed -i 's/mbp_backlight/nvidia_backlight/' '{}' \;
到 pommed PKGBUILD build() 函数中,然后重新编译。引用自 this forum post.
另一个解决方案是修改 pommed PKGBUILD build():
find . -name "*" -exec sed -i 's/nvidia_backlight/apple_backlight/' '{}' \;
如果上面两种方法都不能解决,那么你需要尝试以下方法:
运行 nvidia-settings,编辑 '/etc/X11/xorg.conf' 添加以下代码到 Device 部分:
Option "RegistryDwords" "EnableBrightnessControl=1"
保存并重启,检查亮度调节是否正常工作。 点击查看更多信息 Ubuntu MacBookPro5,5
Wi-Fi
不同型号的MacBook使用不同的网卡模块。
使用以下命令查看你的Macbook使用的网卡型号:
# lspci | grep Network
- 如果你使用的是 Atheros,无需任何设定即可正常工作。
- 如果你使用的是 Broadcom,请在 Broadcom BCM4312 页面查看教程。
- MacBook 5.0 和 6.0 使用 BCM43xx,在 Broadcom wireless 页面查看有关 broadcom-wl 驱动的部分。 网络接口在重启后会互换,所以最好使用 udev 规则来定义它们(教程在 Broadcom wireless 页面)。
- MacBook 8.1 使用 BCM4331,即不被Linux支持 (3.0 和 3.1) ,Broadcom 也没有提供闭源驱动,直到在 Linux 3.2 中才被初步支持。如果你需要在旧的内核上使用,你需要安装这里的驱动compat-drivers
电源管理
笔记本模式工具
睡眠(内核挂起)
休眠
声音配置
蓝牙
iSight配置
温度感应
色彩配置
苹果远程控制
HFS分区共享
HFS+ 分区
Home目录共享
在OS X中
第一步:改变UID与GID
第二步:改变Home目录权限
在Arch中
避免GRUB启动前EFI长时间执行
关闭启动响铃
rEFIt
详情参考refit myths.
在OS X下,从Refit主页下载".dmg"格式的安装包,并像其他苹果软件一样安装。
手动启用rEFIt的方法:
- 打开终端:
- 执行cd /efi/refit; ./enable.sh命令
rEFIt可能会遇到的问题
如果你在安装Arch或者rEFIt后遇到了问题,特别是启动时在启动菜单中看不到启动项,或者出现下面的GRUB提示时:
GRUB>_
请您参考下 http://mac.linux.be/content/problems-refit-and-grub-after-installation
该页面将会教你如何启动的Arch系统,将有问题的Arch系统挂载上去,然后chroot进入该系统,通过gptsyc重新安装GRUB。文中提到的那些用于debian系统的命令基本上都可以在Arch上工作。不过注意不要将GRUB安装错地方了(wrong spot怎么翻译?)
你可从 https://packages.debian.org/sid/gptsync 获取到gptsync。 或者通过下面两个命令之一分别下载32/64位版本的:
wget http://ftp.us.debian.org/debian/pool/main/r/refit/gptsync_0.14-2_i386.deb[失效链接 2021-05-17 ⓘ] wget http://ftp.us.debian.org/debian/pool/main/r/refit/gptsync_0.14-2_amd64.deb[失效链接 2021-05-17 ⓘ]
由于是.deb包,所以你可能需要先安装deb2targz
pacman -S deb2targz
参考资料
- http://www.netsoc.tcd.ie/~theorie/interblag/2010/01/30/installing-arch-linux-on-a-mac-pro/[失效链接 2021-11-13 ⓘ]
- http://allanmcrae.com/2010/04/installing-arch-on-a-macbook-pro-5-5/
- https://web.archive.org/web/20130917192747/https://blog.abhijeetr.com/2011/08/triple-boot-archlinux-windows-7-and-mac.html
MacBook Air (4,2) 内核补丁
Linus的内核树中的当前版本(Linux 3.0.7)中,包含几个问题。我(telmich)已经搜集了下面几个问题的修复补丁:
- 分辨率是1280x800而非正确的1440x900
- 触摸板不能正常工作或被检测为Synaptics
- FN + F1~F12组合键不工作(例如:fn啥都干不了)
- FN+F5~F12等多媒体键映射错误
- 网络处理的驱动/brcmsmac驱动(Hanging network applications / brcmsmac driver)
您可以从 http://git.schottelius.org/?p=foreign/linux-macbook-air;a=summary[失效链接 2020-08-04 ⓘ] 获取到打好补丁的内核,其中包括如下分支:
- keith-jiri: Keith Packard提供的显卡驱动补丁、Jiri Kosina提供的FN功能键补丁
- keith-jiri-brcmsmac: 上面提到的补丁加上网络处理的驱动
- jiri-kbdmapping: FN功能键和映射关系修复补丁
- keith-jiri-kbdmapping: 第一个分支加上多媒体键补丁
- keith-jiri-kbdmapping-brcmsmac: 以上所有的集合 (不确定的情况下,推荐使用这个分支)
你可以很简单的用当前ArchLinux的配置文件来编译内核:
# 请先通过git检出对应分支的源代码! cd linux-macbook-air # 使用当前的配置作为基础 zcat /proc/config.gz > .config # 编译内核时,可能会询问几个未配置的选项 make -j5