1.背景

大家都知道,随着mac系统不停升级,到某一天,手里老的mac硬件就不再支持升级。一般来说,这时候都可以使用OpenCore Legacy Patcher,让手里的mac能再升级几次,具体怎么操作,网上有比较全面的教程。但是,还有人想要在这时候还能弄个双系统,能启动到ubuntu下面,特意到官网查了下,OpenCore Legacy Patcher说人手不够,没时间,不考虑dual boot(双启动),这篇博客就是为这个目的写的。

那么问题来了,为什么要把一个mac弄这么复杂?其实问题是这样的,开发翻一会主要在linux下面开发,而且折腾linux二十年,到mac下各种不舒服,而开发翻一会的iphone版app又不得不到mac系统下开发,而且需要最新版的mac系统才行。所以,上面的双系统需求就这么来的。

2.OpenCore Legacy Patcher原理简介

按我粗浅的理解,OpenCore Legacy Patcher其实是在内存里面虚拟部分mac的硬件信息,让mac 新版os读取到的mac硬件信息能符合os要求,这样就能让新版mac os 运行起来。

3.OpenCore Legacy Patcher下的refind

折腾过mac的人都知道refind,能把mac、windows、linux都添加到启动链,开机时选一个系统就可以,但是在OpenCore Legacy Patcher下面无法安装refind,这在官网已经有回答,所以只能想其他办法。

后来找到一个其他办法,就是利用live iso刻录的启动u盘,启动到grub2下面,就可以启动已经安装在原系统中的linux。

4.macbook air中安装的系统及启动

好,说这么多废话后总算到正题,首先说下macbook air 硬件,再说分区及安装的操作系统,再说如何双启动。

4.1 macbook air 硬件

在linux下输入:

sudo dmidecode -s system-product-name

得到的结果如下:

MacBookAir6,1

4.2 macbook air的分区及安装的操作系统

我的macbook air的分区及操作系统如下

/dev/sda1 EFI 200M
/dev/sda2 apple macos 233G
/dev/sda3 linux swap 8G
/dev/sda4 linux 240G (ubuntu 20.04)

操作系统的安装顺序,记得至少要有3个16G以上U盘(一个刻录ubuntu 20.04 iso,一个刻录opencore legacy patcher,一个刻录苹果操作系统安装盘)。 - 1.安装正常的mac与linux,具体可以参考这篇 - 2.按照这篇文章说的安装opencore legacy patcher,再安装新的mac os,提示一点,最好把opencore legacy patcher用刻录工具刻录到u盘里。 - 3.把ubuntu 的iso刻录到另一个u盘里。

4.3 用ubuntu 20.04 iso这个u盘启动ubuntu

开机,按住option键,出来后选择最右边的文件夹,进入grub 2界面。这时候输入c这个字母,就可以进入grub2的命令行了,不然会直接启动u盘里的iso。grub2命令行的操作主要有这么几步: - 1.ls命令查看分区,每个人的分区应该不同,我的ls显示分区是这个样子

grub> ls
(proc) (memdisk) (hd0) (hd1) (hd2) (hd3) (hd4) (hd5) (hd6) (hd6,apple2) (hd6,apple1) (hd6,msdos3) (hd6,msdos2) (hd7) (hd7,gpt4) (hd7,gpt3) (hd7,gpt2),(hd7,gpt1)
  • 2.确定ubuntu所在分区,并输入命令引导启动
grub> set root=(hd7,gpt4)
grub> linux /boot/vmlinuz-5.15.0-46-generic root=/dev/sda4
grub> initrd /boot/initrd-5.15.0-46-generic
grub> boot

好了,正常就可以启动都ubuntu下面了。其中在grub下面输入命令的时候,可以按tab键,会有各种提示。

  • 3.如果ubuntu升级重新安装grub后,怎样进入mac? 这时候就需要用到另一个刻录了opencore legacy patcher的u盘,插入mac,开机,按住option ,一会就会跳出可以运行的mac os图标,选择就可以进入mac系统。