在Mac mini上安装Linux可能会遇到一些挑战,尤其是当想要让所有外设都能顺利工作时。本文旨在覆盖在Linux安装过程中遇到的问题,以及如何让苹果硬件在Linux下愉快地运行。在开始之前,假设已经具备了一定的*nix操作系统和命令行知识。
首先,确保有稳定的电源供应。需要一台状态良好的Mac mini(如果不是,可以重新安装OSX,就是这么做的)。此外,还需要键盘和鼠标,以及一台或两台显示器,以便可以看到正在发生的事情。
注意:在安装Linux之前重新安装了macOS,并使用苹果磁盘工具重新创建了分区表。由于有一块1TB的硬盘,将其分成了两个相等的分区,并在第一个分区上重新安装了macOS。让第二个分区保持未格式化状态。不认为这是必须的操作,但只是告诉配置是什么。
Mac mini配备了UEFI引导程序,最简单的方法是通过rEFInd在机器上运行多个操作系统。可以从下面的链接下载rEFInd。据所知,rEFInd是一个软件层,用于基于UEFI的计算机,以便可以轻松地运行多个操作系统,并通过一个漂亮的菜单驱动界面轻松切换它们。
从下面的链接下载“二进制zip文件”。下载后,解压缩zip文件,进入文件夹并运行"sudo ./install.sh"。它会显示一些消息并完成安装。重启后,如果rEFInd安装正确,将在启动时看到菜单。
(截至2013年9月5日版本0.7.4,二进制zip存档)
安装过程应该是直接的,直到到达选择分区设置的地方。需要在硬盘设置/分区部分选择"Something else",然后在分区编辑器中选择在mac磁盘分区工具中留下的第二个分区,使用空白分区设置最喜欢的分区表。
有关手动磁盘分区的视频教程,请访问:
在"设备用于引导程序安装"下拉菜单中,请选择在分区表中创建的根分区或/boot/分区。永远不要使用Mac OSX使用的任何块设备,在电脑中它们是设备本身/dev/sda和/dev/sda1,/dev/sda2。
一旦分区确认并且引导程序安装设备设置好,就可以继续安装了。
如果有双显示器设置,可能会注意到其中一个显示器的颜色深度比另一个显示器少。在某处读到,这个问题发生在基于EFI的机器上,这些机器配备了Intel HD xxxx显卡,但不确定背后的原因。
永久修复这个问题的方法是通过/etc/profile文件更改Intel HD显卡的配置寄存器。更喜欢的方式是:
sudo gedit /etc/profile
添加以下行:
intel_reg_write 0x70008 0xC4002000
保存文件并退出。在下一次启动时,显示器的颜色将恢复正常。
Broadcom芯片在Linux上支持不是很好,如果需要更多信息,为什么Arch Linux文档提供了很好的内部信息()。让安装无线驱动程序。
需要确保仓库源设置为从源包本身下载并编译驱动程序,为了启用源代码仓库,请参考(),通常在Linuxmint/ubuntu的"软件源"应用程序中应该有一个选项来启用"源代码"选项。
启用源包后,打开终端并运行以下命令,为了从源代码编译一个包,需要内核头文件和Debian包开发工具。
sudo apt-get update
sudo apt-get install linux-headers-generic linux-headers-`uname -r`
sudo apt-get install dpkg-dev debhelper dh-modaliases
sudo apt-get install --reinstall bcmwl-kernel-source
并确保开源驱动程序被禁用,为了禁用它们编辑内核模块配置文件并进行必要的更改:
sudo gedit /etc/modprobe.d/blacklist.conf
在文件底部添加以下行:
blacklist bcm43xx
blacklist b43
blacklist bcma
重启机器,无线应该可以正常工作了。
如果真的不在乎将Mac mini可靠地挂起到RAM,以便可以节省树木,并且无线工作得很好,可以跳过这一节。如果需要同时让挂起和无线工作,请继续。
在最新的Ubuntu发行版中,内核3.8.xx无法可靠地将Mac mini置于睡眠状态,无法找出确切的原因,但经过大量的试错,发现内核-3.11.xx可以可靠地挂起Mac mini。
但是,安装最新内核的缺点是,wifi驱动程序停止编译,因为内核-3.10.0中的内核头文件发生了变化。
如果按照指南逐字进行,应该能够应用提交给bcm-kernel-source包的补丁,并正确编译和安装它。
mkdir /tmp/kernel-3.11.0
cd /tmp/kernel-3.11.0
从下面的链接获取内核包,根据处理器架构。由于所有最新的Mac mini都运行Core iX处理器,可以安全地下载64位包。
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11-saucy/linux-headers-3.11.0-031100-generic_3.11.0-031100.201309021735_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11-saucy/linux-headers-3.11.0-031100_3.11.0-031100.201309021735_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11-saucy/linux-image-3.11.0-031100-generic_3.11.0-031100.201309021735_amd64.deb
sudo dpkg -i *.deb
在编写本文时,bcmwl-kernel-source没有使用内核头文件3.11.0编译,并出现下面段落中提到错误,已经在ubuntu launchpad上提交了一个补丁。可以在文档末尾的URL检查包的状态,如果它说包已更新,就不用担心运行以下任何命令。
运行dpkg命令后,可能会看到一个错误,说检查make.log以获取调试信息,这意味着无线驱动程序未能正确编译和安装。但不用担心,只需重新启动计算机,这样下次计算机将使用刚刚安装的最新内核启动。请注意,重启后无线将无法工作(这是由于得到的wl.ko内核模块错误),所以确保有另一个设备打开这个教程,这样可以继续阅读。
重启后,下载在launchpad bug报告中附加的补丁,并按照以下方式将其复制到bcmwl-kernel-source目录,然后重新编译代码。
cd /usr/src/bcmwl-6.20.155.1+bdcom/patches
wget https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/1197586/+attachment/3808355/+files/0008-add-support-to-linux-3.9.0-3.11.0.patch
cd /usr/src/bcmwl-6.20.155.1+bdcom/
sudo gedit dkms.conf
编辑dkms.conf后,将看到10-15行如下,并添加到文件中并保存。
PACKAGE_NAME="bcmwl"
PACKAGE_VERSION="6.20.155.1+bdcom"
CLEAN="rm -f *.*o"
BUILT_MODULE_NAME[0]="wl"
MAKE[0]="make -C $kernel_source_dir M=$dkms_tree/$PACKAGE_NAME/$PACKAGE_VERSION/build"
DEST_MODULE_LOCATION[0]="/updates"
PATCH[0]="0001-MODULE_LICENSE.patch"
PATCH[1]="0002-Makefile.patch"
PATCH[2]="0003-Make-up-for-missing-init_MUTEX.patch"
PATCH[3]="0004-Add-support-for-Linux-3.2.patch"
PATCH[4]="0005-add-support-for-linux-3.4.0.patch"
PATCH[5]="0006-add-support-for-linux-3.8.0.patch"
PATCH[6]="0007-nl80211-move-scan-API-to-wdev.patch"
PATCH[7]="0008-add-support-to-linux-3.9.0-3.11.0.patch"
需要添加的行
#PATCH_MATCH[3]="^3.[23456]"
#PATCH_MATCH[4]="^3.[56]"
AUTOINSTALL="yes"
如果正确完成了上述所有步骤,应该能够运行以下命令并重新编译bcmwl驱动程序,而不会出现编译时错误。
sudo dpkg-reconfigure bcmwl-kernel-source
cd /lib/modules/3.11.0-031100-generic/kernel/drivers/net/wireless
ls -l
应该看到一个名为wl.ko的文件,就是这样!
重启机器,无线应该会启动。也可以尝试在终端中运行"sudo modprobe wl"来加载内核模块,而不会出现找不到模块的错误。