没有rEFInd的三重启动macOS High Sierra,Ubuntu和Windows


10

我现在在我的2017 MacBook Air上安装了三个操作系统:macOS,Ubuntu和Windows10。没有rEFInd我无法启动到Ubuntu,但是我强烈希望使用默认的启动管理器,因为我想使用固件密码(即rEFInd没有)。

macOS启动管理器是否可以通过任何方式识别Ubuntu,而无需使用第三方启动管理器?

笔记:

  • 我不想将Ubuntu设置为默认操作系统。我只希望它出现在启动菜单中。
  • 我不介意它是否进入GRUB。只要它能以某种方式加载内核,就可以了。

命令的输出diskutil list

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         242.6 GB   disk0s2
   3:           Linux Filesystem                         49.9 GB    disk0s4
   4:       Microsoft Basic Data WinData                 75.1 GB    disk0s5
   5:       Microsoft Basic Data Windows                 125.1 GB   disk0s6

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +242.6 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            74.0 GB    disk1s1
   2:                APFS Volume Preboot                 25.1 MB    disk1s2
   3:                APFS Volume Recovery                506.6 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4

您的MacBook Air是哪一年?我真正想知道的是如何安装Windows,Ubuntu和rEFInd。是否有BIOS引导程序?您在哪里安装了rEFInd?另外,如果您包含了diskutil list命令的输出,也将有所帮助。您的问题已被问过。有几种简单的解决方案。
大卫·安德森

确实有几种解决方案,但是它们都不适合我。MacBook Air的年份是2017年。我首先在Bootcamp上安装了Windows,收缩了macOS的卷以为Windows制作另一个数据卷,通过再次缩小macOS的分区安装了Ubuntu(这很麻烦,我不得不重新安装macOS并重置Windows。数据分区)。之后,我从官方网站安装了rEFInd。diskutil list输出:引擎收录
kouwei32

1
您可能应该先阅读以下内容:在已经安装了macOS和Windows的Mac上安装Ubuntu。我目前正在发布您问题的答案。我的回答多少基于上面的链接。
David Anderson

重新启动Mac并执行命令diskutil list。用新的输出替换答案中的输出。我问这是因为disk0s3您当前显示的输出中缺少该内容。
大卫·安德森

Answers:


5

替代第二答案

第二个答案不同于我的第一个答案在以下几个方面。

  • 第二个EFI分区替换为HFS +分区。

  • 在启动管理器中显示的标签将是“ Ubuntu”,而不是通用的“ EFI Boot”。

我将假设以下内容:

  • 您已经安装了Ubuntu以使用EFI引导方法。
  • 您正在使用grub引导Ubuntu
  • Grub从EFI分区启动。
  • 只有一个EFI分区。
  • EFI分区是磁盘上的第一个分区。
  • 仅涉及一个磁盘,并且该磁盘是内部磁盘。
  • rEFInd已安装在EFI分区中。

我将提供两种方法来解决您的问题。每个都有优点和缺点。

如果将.efi文件放在正确的位置,则Mac启动管理器将显示操作系统。此位置是System/Library/CoreServicesHFS +分区中卷的文件夹。文件名必须为boot.efi。此外,您可以通过将.VolumeIcon.icns文件放在HFS +分区中卷的根文件夹中来自定义为操作系统显示的图标。

第一种方式。

注意:此处,rEFInd仍在使用,但不能代替启动管理器。您将能够使用固件密码。实际上,没有显示rEFInd菜单。rEFInd引导管理器只是默默地引导grub(引导Ubuntu)。

  1. 从此SourceForge网站下载rEFInd 。我假设下载的文件已命名,refind-bin-0.11.2.zip并且该文件已下载到您的~/Downloads文件夹中。
  2. 创建一个新的HFS +分区。在“添加HFS +分区”部分中给出了说明。
  3. 通过输入以下命令来挂载新的HFS +分区。

    sudo  diskutil  mount  disk0s3
    

    新的HFS +分区将具有卷名Ubuntu

  4. 将rEFInd安装到新HFS +分区上的卷中。

    cd  ~/Downloads/refind-bin-0.11.2
    ./refind-install  --ownhfs  /dev/disk0s3
    

    注意:错误消息Could not set boot device property: 0xe00002bc是预期的,可以忽略。

  5. 配置TextEdit应用程序。打开TextEdit,然后导航到“首选项...”窗口。取消选中所有“选项”,如下所示。完成后,退出TextEdit。

    11

  6. 使用以下命令导航到包含该refind.conf文件的文件夹。

    cd  /Volumes/Ubuntu/System/Library/CoreServices
    

    制作此文件的备份副本。

    sudo  cp  refind.conf  refind.conf.orignal
    

    CoreServices文件夹和refind.conf文件添加写权限。

    sudo  chmod  a+w  .  refind.conf
    

    在TextEdit应用程序中打开文件。

    open  -e  refind.conf
    
  7. 在此卷中,编辑System/Library/CoreServices/refind.conf文件以静默方式引导grub(它将自动引导Ubuntu)。这可以通过在refind.conf文件末尾添加以下几行来完成。您应该能够剪切并粘贴这些行。完成后,保存更改,然后退出TextEdit。

    #
    # Added to make rEFInd silent. 
    #
    menuentry "Ubuntu" {
        icon \System\Library\CoreServices\icons\os_ubuntu.png
        volume "EFI"
        loader \EFI\ubuntu\grubx64.efi
        ostype Linux
        graphics on
    }
    timeout -1
    hideui all
    scanfor manual
    
  8. Ubuntu通过输入以下命令来卸载名为的新卷。

    cd  ~
    diskutil  unmount  disk0s3
    

优点:Ubuntu不受影响,因此不需要任何Ubuntu更新。

缺点:您需要使用第三方启动管理器rEFInd。

第二种方式。

  1. 创建一个新的HFS +分区。在“添加HFS +分区”部分中给出了说明。
  2. 通过输入以下命令来挂载原始EFI分区和新HFS +分区。

    sudo  diskutil  mount  disk0s1
    sudo  diskutil  mount  disk0s3
    

    原始EFI分区的名称为EFI,新HFS +分区的名称为Ubuntu

  3. 通过输入以下命令,在名为的新卷中Ubuntu,创建文件夹EFI/ubuntuSystem/Library/CoreServices

    mkdir  -p  /Volumes/Ubuntu/EFI/ubuntu
    mkdir  -p  /Volumes/Ubuntu/System/Library/CoreServices
    
  4. 复制文件grub.cfggrubx64.efi命名新卷Ubuntu。所需命令如下。

    cp  /Volumes/EFI/EFI/ubuntu/grub.cfg  /Volumes/Ubuntu/EFI/ubuntu/grub.cfg
    cp  /Volumes/EFI/EFI/ubuntu/grubx64.efi  /Volumes/Ubuntu/System/Library/CoreServices/boot.efi
    
  5. 通过输入以下命令来卸载原始EFI分区和新HFS +分区。

    diskutil  unmount  disk0s1
    diskutil  unmount  disk0s3
    

优点:您不需要使用第三方启动管理器rEFInd。

缺点:如果grubx64.efigrub.cfg已更新,则必须手动将这些文件复制到名为的新卷中Ubuntu

添加自定义图标

下面的步骤会将以下Ubuntu图标添加到“启动菜单”。

os_ubuntu.png

  1. 从sourceforge网站Mac icns下载图标集。
  2. 使用Finder应用程序打开下载的文件mac-icns.dmg。我假设此文件已下载到您的~/Downloads文件夹。
  3. Ubuntu通过输入以下命令来挂载命名的卷。

    sudo  diskutil  mount  disk0s3
    
  4. 使用Finder应用程序将os_ubuntu.icns图标文件复制到名为的卷的根文件夹中Ubuntu。另外,您可以使用下面显示的命令。

    sudo cp  /Volumes/mac-icns/os_ubuntu.icns  /Volumes/Ubuntu/.
    
  5. os_ubuntu.icns图标文件重命名为.VolumeIcon.icns。这可以通过输入以下命令来完成。

    sudo mv  /Volumes/Ubuntu/os_ubuntu.icns  /Volumes/Ubuntu/.VolumeIcon.icns
    

    注意:以句号(.)开头的文件通常不会出现在Finder应用程序窗口中。

  6. 使用Finder应用程序弹出带有卷名的EFI系统分区Ubuntu。另外,您可以使用下面显示的命令卸载该卷。

    diskutil  unmount  disk0s3
    
  7. 使用Finder应用程序弹出名为的卷mac-icns

添加HFS +分区

注意:以下内容基于diskutil list您在问题中提供的输出。

  1. 在“终端应用程序”窗口中输入以下命令。会在新分区中创建一个名为“ Ubuntu”的“ Mac OS Extended”卷。

    sudo  diskutil  apfs  resizeContainer  disk0s2  242300M  HFS+  Ubuntu  200M
    
  2. 通过输入以下命令,获取名为“ Ubuntu”的卷的卷UUID。

     diskutil info Ubuntu | grep "Volume UUID"
    

    输出应类似于以下所示。

       Volume UUID:              795F14D2-ED1F-3CA0-A004-BD0A27000DC8
    
  3. 接下来,通过输入以下命令,防止新的卷名“ Ubuntu”自动挂载。将您的UUID替换为以下所示的UUID。

    sudo  bash
    echo  >> /etc/fstab
    echo  UUID=795F14D2-ED1F-3CA0-A004-BD0A27000DC8 none hfs rw,noauto >> /etc/fstab
    exit
    

    注意:编辑/etc/fstab文件的正确方法是使用命令sudo vifs。使用echo命令只是一个快捷方式。

  4. 使用Finder应用程序弹出此新卷。或者,您可以输入以下所示的命令来卸载该卷。

    diskutil  unmount  Ubuntu
    

如果您需要我进行以上任何步骤的扩展,请告诉我。


1
这完全适合我!谢谢!另外,使用TextEdit进行配置编辑也不是一件好事,因为它会将配置文件标记为已锁定。我曾经sudo nano /Volumes/Ubuntu/System/Library/CoreServices/refind.conf绕过这个问题。
kouwei32 '18

kouwei32:有人可以验证我的步骤非常好。我添加了一个命令来更改权限,以便可以使用TextEdit应用程序。是的,nano是一个很好的替代品。
David Anderson

@DavidAnderson非常感谢!这是使所有三个操作系统都能正常启动的关键。如果没有第二个EFS分区,则只能通过GRUB引导至[macOS或Ubuntu]或[Ubuntu或Windows,这取决于混合MBR的设置方式以及我是否选择隐藏主APFS分区。你知道为什么会这样吗?即使使用rEFInd,也没有一个实例可以启动3个操作系统……直到我添加了第二个EFS分区并按照First Way中的步骤进行操作。
igordcard

@igordcard:在阅读您的评论后,我确实做了一些更正。注意:自从我发布了这个答案以来,Ubuntu不再以相同的方式启动。因此,如果您使用的是Ubuntu 18,我的答案可能不起作用。2017年制造的Macs不再包含BIOS,因此不需要混合MBR。实际上,混合MBR会阻止Windows启动。我不确定“隐藏主APFS分区”是什么意思。
大卫·安德森

@igordcard:英特尔Mac旨在引导OS X,macOS或Windows。但是,如果使用统一可扩展固件接口(UEFI)规范3.5.1.1 Removable Media Boot Behavior第91页的规范安装了操作系统的启动文件,则固件也允许启动操作系统。对于Intel Mac,该介质必须可移动。
大卫·安德森

1

原始答案

我的第二个答案在以下方面不同于该答案

  • 在第二个答案中,第二个EFI分区被替换为HFS +分区。这种类型的分区更易于创建和修改。
  • 在第二个答案中,在启动管理器中显示的标签将是“ Ubuntu”,而不是通用的“ EFI Boot”。

我将假设以下内容:

  • 您已经安装了Ubuntu以使用EFI引导方法。
  • 您正在使用grub引导Ubuntu
  • Grub从EFI分区启动。
  • 只有一个EFI分区。
  • EFI分区是磁盘上的第一个分区。
  • 仅涉及一个磁盘,并且该磁盘是内部磁盘。
  • rEFInd已安装在EFI分区中。

我将给出两种解决您的问题的方法。每个都有优点和缺点。

如果将.efi文件放在正确的位置,则Mac启动管理器将显示操作系统。此位置是EFI/bootEFI分区中卷的文件夹。文件名必须为bootx64.efi。此外,您可以通过将.VolumeIcon.icns文件放在EFI分区中卷的根文件夹中来自定义为操作系统显示的图标。

第一种方式。

注意:此处,rEFInd仍在使用,但不能代替启动管理器。您将能够使用固件密码。实际上,没有显示rEFInd菜单。rEFInd引导管理器只是默默地引导grub(引导Ubuntu)。

  1. 从此SourceForge网站下载rEFInd 。我假设下载的文件已命名,refund-bin-0.11.2.zip并且该文件已下载到您的~/Downloads文件夹中。
  2. 创建一个新的EFI分区。在“添加EFI分区”部分中给出了说明。
  3. 从此SourceForge网站下载rEFInd Boot Manager软件。
  4. 将rEFInd安装到新EFI分区上的卷中。

    cd  ~/Downloads/refind-bin-0.11.2
    ./refind-install  --usedefault  /dev/disk0s3
    
  5. 通过输入以下命令来卸载并装入新的EFI分区。

    diskutil  unmount  disk0s3
    sudo  diskutil  mount  disk0s3
    

    新的EFI分区将具有卷名EFI2

  6. 配置TextEdit应用程序。打开TextEdit,然后导航到“首选项...”窗口。取消选中所有“选项”,如下所示。完成后,退出TextEdit。

    11

  7. 使用以下命令导航到包含该refind.conf文件的文件夹。

    cd  /Volumes/EFI2/EFI/BOOT
    

    制作此文件的备份副本。

    cp  refind.conf  refind.conf.orignal
    

    在TextEdit应用程序中打开文件。

    open  -e  refind.conf
    
  8. 在此卷中,编辑EFI/BOOT/refind.conf文件以静默方式引导grub(它将自动引导Ubuntu)。这可以通过在refind.conf文件末尾添加以下几行来完成。您应该能够剪切并粘贴这些行。完成后,保存更改,然后退出TextEdit。

    #
    # Added to make rEFInd silent. 
    #
    menuentry "Ubuntu" {
        icon \EFI\BOOT\icons\os_ubuntu.png
        volume "EFI"
        loader \EFI\ubuntu\grubx64.efi
        ostype Linux
        graphics on
    }
    timeout -1
    hideui all
    scanfor manual
    
  9. 卸载名为的新卷EFI2

    diskutil  unmount  disk0s3
    

优点:Ubuntu不受影响,因此不需要任何Ubuntu更新。

缺点:您需要使用第三方启动管理器rEFInd。

第二种方式。

  1. 创建一个新的EFI分区。在“添加EFI分区”部分中给出了说明。
  2. 通过输入以下命令来挂载原始和新的EFI分区。

    sudo  diskutil  mount  disk0s1
    sudo  diskutil  mount  disk0s3
    

    原始EFI分区将具有名称EFI,而新EFI分区将具有名称EFI2

  3. 通过输入以下命令,在名为的新卷中EFI2,创建文件夹EFI/ubuntuEFI/boot

    mkdir  -p  /Volumes/EFI2/EFI/ubuntu
    mkdir  -p  /Volumes/EFI2/EFI/boot
    
  4. 复制文件grub.cfggrubx64.efi命名新卷EFI2。所需命令如下。

    cp  /Volumes/EFI/EFI/ubuntu/grub.cfg  /Volumes/EFI2/EFI/ubuntu/grub.cfg
    cp  /Volumes/EFI/EFI/ubuntu/grubx64.efi  /Volumes/EFI2/EFI/boot/bootx64.efi
    

优点:您不需要使用第三方启动管理器rEFInd。

缺点:如果grubx64.efigrub.cfg已更新,则必须手动将这些文件复制到名为的新卷中EFI2

添加自定义图标

下面的步骤会将以下Ubuntu图标添加到“启动菜单”。

os_ubuntu.png

  1. 从sourceforge网站Mac icns下载图标集。
  2. 使用Finder应用程序打开下载的文件mac-icns.dmg。我假设此文件已下载到您的~/Downloads文件夹。
  3. EFI2通过输入以下命令来挂载命名的卷。

    sudo  diskutil  mount  disk0s3
    
  4. 使用Finder应用程序将os_ubuntu.icns图标文件复制到名为的卷的根文件夹中EFI2。另外,您可以使用下面显示的命令。

    cp  /Volumes/mac-icns/os_ubuntu.icns  /Volumes/EFI2/.
    
  5. os_ubuntu.icns图标文件重命名为.VolumeIcon.icns。这可以通过输入以下命令来完成。

    mv  /Volumes/EFI2/os_ubuntu.icns  /Volumes/EFI2/.VolumeIcon.icns
    

    注意:以句号(.)开头的文件通常不会出现在Finder应用程序窗口中。

  6. 使用Finder应用程序弹出带有卷名的EFI系统分区EFI2。另外,您可以使用下面显示的命令卸载该卷。

    diskutil  unmount  disk0s3
    
  7. 使用Finder应用程序弹出名为的卷mac-icns

添加EFI分区

注意:以下内容基于diskutil list您在问题中提供的输出。

引导至macOS后,在“终端应用程序”窗口中输入以下命令。

sudo  diskutil  apfs  resizecontainer  disk0s2  242300M  %EFI%  n  200M
sudo  newfs_msdos  -F  32  -v  EFI2  /dev/disk0s3

如果您需要我进行以上任何步骤的扩展,请告诉我。


不幸的是,第一种解决方案不是我想要的,而第二种根本不起作用。
kouwei32

第二种解决方案基于我之前发布的可靠解决方案。许多其他用户已成功使用此解决方案。看到这里这里
David Anderson

1
也许我没有提供足够的细节。例如,在您的情况下,您将需要创建一个新的EFI分区。这不能是普通的FAT32格式的分区。这必须是GPT中GUID为的EFI分区C12A7328-F81F-11D2-BA4B-00A0C93EC93B
David Anderson

我已经有一个EFI分区。尝试了3次,无济于事。
kouwei32 '17

您可以根据需要拥有任意数量的EFI分区。就您而言,Windows已经在使用EFI分区中的EFI / boot文件夹。这就是为什么您需要第二个EFI分区的原因。
David Anderson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.