MacOS High Sierra, Ubuntu и Windows с тройной загрузкой без поддержки

10

В настоящее время на моем MacBook Air 2017 установлены три ОС: macOS, Ubuntu и Windows 10. Я не могу загрузиться в 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
kouwei32
источник
Какой год твоего MacBook Air? Что я действительно хочу знать, так это как Windows, Ubuntu и rEFInd установлены. Любой BIOS загружается? Где вы установили rEFInd? Также было бы полезно, если бы вы включили вывод diskutil listкоманды. Ваш вопрос был задан ранее. Есть несколько простых решений.
Дэвид Андерсон
Есть, действительно, несколько решений, но ни одно из них не работает для меня. Год MacBook Air - 2017. Сначала я установил Windows с загрузочным лагерем, сжал том macOS, чтобы создать другой том данных для Windows, установил Ubuntu, снова сжав раздел macOS (что сломало вещи, и мне пришлось переустановить macOS и перезагрузить Windows раздел данных). После этого я установил ссылку с официального сайта. diskutil listвывод: Pastebin
kouwei32
1
Возможно, вам следовало бы сначала прочитать это: установка Ubuntu на Mac с уже установленными macOS и Windows . В настоящее время я публикую ответ на ваш вопрос. Мой ответ основан на ссылке выше.
Дэвид Андерсон
Перезагрузите Mac и выполните команду diskutil list. Замените вывод в вашем ответе этим новым выводом. Я спрашиваю об этом, потому что disk0s3отсутствует в вашем отображаемом выводе.
Дэвид Андерсон

Ответы:

5

Альтернативный второй ответ

Этот второй ответ отличается от моего первого ответа следующими способами.

  • Второй раздел EFI заменен разделом HFS +.

  • Метка, отображаемая в Startup Manager, будет «Ubuntu» вместо общей «EFI Boot».

Я приму следующее:

  • Вы должны установить Ubuntu, чтобы использовать метод загрузки EFI.
  • Вы используете Grub для загрузки Ubuntu
  • Grub boots из раздела EFI.
  • Существует только один раздел EFI.
  • Раздел EFI является первым разделом на диске.
  • Включен только один диск, и диск является внутренним.
  • rEFInd установлен в разделе EFI.

Я предложу два способа решения вашей проблемы. У каждого есть свои плюсы и минусы.

Диспетчер запуска Mac отобразит операционную систему, если вы поместите файл .efi в нужное место. Это расположение является System/Library/CoreServicesпапкой тома в разделе HFS +. Имя файла должно быть boot.efi. Кроме того, вы можете настроить значок, отображаемый для операционной системы, поместив .VolumeIcon.icnsфайл в корневую папку тома в разделе HFS +.

Первый путь

Примечание. Здесь rEFInd все еще используется, но не в качестве замены для Startup Manager. Вы сможете использовать пароль прошивки. На самом деле никакие ссылки и меню не отображаются. Менеджер загрузки rEFInd просто тихо загружает grub (который загружает Ubuntu).

  1. Загрузите ссылку с этого сайта SourceForge . Я предполагаю, что загруженный файл назван, 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, затем перейдите к окну «Preferences ...». Снимите все «Опции», как показано ниже. Когда закончите, выйдите из TextEdit.

    y1

  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файл, чтобы он загрузился без вывода сообщений (который будет работать с загрузочной 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/ubuntuи System/Library/CoreServices, введя следующие команды.

    mkdir  -p  /Volumes/Ubuntu/EFI/ubuntu
    mkdir  -p  /Volumes/Ubuntu/System/Library/CoreServices
    
  4. Скопируйте файлы grub.cfgи grubx64.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.efiили grub.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
    

    Примечание. Файлы, начинающиеся с period ( .), обычно не отображаются в окне приложения Finder.

  6. Используйте приложение Finder, чтобы извлечь системный раздел EFI с именем тома Ubuntu. Кроме того, вы можете использовать команду, показанную ниже, чтобы отключить том.

    diskutil  unmount  disk0s3
    
  7. Используйте приложение Finder, чтобы извлечь названный том mac-icns.

Добавление раздела HFS +

Примечание. Ниже приведены результаты diskutil list, предоставленные вами в вашем вопросе.

  1. Введите команду ниже в окне приложения терминала. Будет создан том «Mac OS Extended» с именем «Ubuntu» в новом разделе.

    sudo  diskutil  apfs  resizeContainer  disk0s2  242300M  HFS+  Ubuntu  200M
    
  2. Получите UUID тома для тома с именем «Ubuntu», введя команду ниже.

     diskutil info Ubuntu | grep "Volume UUID"
    

    Вывод должен быть похож на то, что показано ниже.

       Volume UUID:              795F14D2-ED1F-3CA0-A004-BD0A27000DC8
    
  3. Затем, запретите автоматическое монтирование этого нового имени тома «Ubuntu», введя следующие команды. Замените свой 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
kouwei32: Хорошо, когда кто-то может проверить мои шаги. Я добавил команду для изменения разрешений, чтобы можно было использовать приложение TextEdit. И да, nanoэто хорошая замена.
Дэвид Андерсон
@DavidAnderson Большое спасибо! Это было ключом к загрузке всех трех ОС. Без второго раздела EFS можно было загружаться только в [macOS или Ubuntu] ИЛИ [Ubuntu или Windows через GRUB], в зависимости от того, как была установлена ​​гибридная MBR, и от того, выбрал ли я скрытие основного раздела APFS. Вы знаете, почему это так? Даже с помощью rEFInd не было ни одного случая, когда 3 ОС были бы загрузочными ... пока я не добавил второй раздел EFS и не выполнил действия, описанные в первом способе.
igordcard
@igordcard: я сделал некоторые исправления после прочтения вашего комментария. Примечание: так как я опубликовал этот ответ, Ubuntu больше не загружается таким же образом. Поэтому мой ответ может не сработать, если вы используете Ubuntu 18. Компьютеры Mac, выпущенные в 2017 году, больше не содержат BIOS, поэтому нет необходимости в гибридной MBR. Фактически, гибридная MBR препятствовала бы загрузке Windows. Я не уверен, что вы подразумеваете под «скрыть основной раздел APFS».
Дэвид Андерсон
@igordcard: Intel Macs предназначены для загрузки OS X, macOS или Windows. Однако встроенное ПО также позволяет загружать операционную систему, если загрузочные файлы операционной системы установлены с использованием спецификаций, приведенных в разделе 3.5.1.1 Removable Media Boot Behaviorна стр. 91 спецификации Unified Extensible Firmware Interface (UEFI) . Для Intel Mac, носитель должен быть съемным.
Дэвид Андерсон
1

Оригинальный ответ

Мой второй ответ отличается от этого ответа следующими способами.

  • Во втором ответе второй раздел EFI заменяется разделом HFS +. Этот тип раздела легче создавать и изменять.
  • Во втором ответе метка, отображаемая в Startup Manager, будет «Ubuntu» вместо общей «EFI Boot».

Я приму следующее:

  • Вы должны установить Ubuntu, чтобы использовать метод загрузки EFI.
  • Вы используете Grub для загрузки Ubuntu
  • Grub boots из раздела EFI.
  • Существует только один раздел EFI.
  • Раздел EFI является первым разделом на диске.
  • Включен только один диск, и диск является внутренним.
  • rEFInd установлен в разделе EFI.

Я дам два пути, чтобы решить вашу проблему. У каждого есть свои плюсы и минусы.

Диспетчер запуска Mac отобразит операционную систему, если вы поместите файл .efi в нужное место. Это местоположение является EFI/bootпапкой тома в разделе EFI. Имя файла должно быть bootx64.efi. Кроме того, вы можете настроить значок, отображаемый для операционной системы, поместив .VolumeIcon.icnsфайл в корневую папку тома в разделе EFI.

Первый путь

Примечание. Здесь rEFInd все еще используется, но не в качестве замены для Startup Manager. Вы сможете использовать пароль прошивки. На самом деле никакие ссылки и меню не отображаются. Менеджер загрузки rEFInd просто тихо загружает grub (который загружает Ubuntu).

  1. Загрузите ссылку с этого сайта SourceForge . Я предполагаю, что загруженный файл назван, refund-bin-0.11.2.zipи этот файл был загружен в вашу ~/Downloadsпапку.
  2. Создайте новый раздел EFI. Инструкции приведены в разделе «Добавление раздела EFI».
  3. Загрузите программное обеспечение rEFInd Boot Manager с этого веб-сайта SourceForge .
  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, затем перейдите к окну «Preferences ...». Снимите все «Опции», как показано ниже. Когда закончите, выйдите из TextEdit.

    y1

  7. Используйте команду ниже, чтобы перейти к папке, содержащей refind.confфайл.

    cd  /Volumes/EFI2/EFI/BOOT
    

    Сделайте резервную копию этого файла.

    cp  refind.conf  refind.conf.orignal
    

    Откройте файл в приложении TextEdit.

    open  -e  refind.conf
    
  8. В этом томе отредактируйте EFI/BOOT/refind.confфайл, чтобы он загрузился без вывода сообщений (который будет работать с загрузочной 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/ubuntuи EFI/boot, введя следующие команды.

    mkdir  -p  /Volumes/EFI2/EFI/ubuntu
    mkdir  -p  /Volumes/EFI2/EFI/boot
    
  4. Скопируйте файлы grub.cfgи grubx64.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.efiили grub.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
    

    Примечание. Файлы, начинающиеся с period ( .), обычно не отображаются в окне приложения 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
Второе решение основано на проверенных решениях, которые я опубликовал ранее. Многие другие пользователи успешно использовали это решение. Смотрите здесь и здесь .
Дэвид Андерсон
1
Возможно, я не дал достаточно подробностей. Например, в вашем случае вам нужно будет создать новый раздел EFI. Это не может быть обычный раздел в формате FAT32. Это должен быть раздел EFI, где находится GUID в GPT C12A7328-F81F-11D2-BA4B-00A0C93EC93B.
Дэвид Андерсон
У меня уже есть раздел EFI. Пробовал 3 раза и безрезультатно.
kouwei32
Вы можете иметь столько разделов EFI, сколько вам нужно. В вашем случае Windows уже использует папку EFI / boot в вашем разделе EFI. Вот почему вам нужен второй раздел EFI.
Дэвид Андерсон