Grub не видит внешний диск (Intel Mac)

У меня есть Intel Mac (MacMini) и внешний usb-накопитель. На внутреннем диске у меня есть раздел с установленной OSX и один с Ubuntu+Grub2. На внешнем диске у меня есть копия моего полного раздела OSX и копия моего полного раздела Ubuntu (оба с UUID, отличными от оригинала).

Я использую REFIt для двойной загрузки. Внутренние OSX и Linux и внешний OSX появляются в меню rEFIt и являются загрузочными. Внешний Linux, который я хочу загрузить, отсутствует. После создания резервной копии Linux я выполнил update-grub для внутреннего Linux (он нашел все 4 установки) и для внешнего (через chroot - он нашел все установки, кроме внутреннего Linux). Это не решило проблему.

Когда я пытаюсь загрузить внешний Linux с помощью внутреннего Grub, я получаю сообщение об ошибке:

error: no such device: <the UUID of the external Linux partition>
error: no such partition.
error: you need to load the kernel first.

Когда я печатаю ls во внутреннем меню Grub перечислены все разделы на внутреннем диске, но (hd1) полностью отсутствует

Я попытался синхронизировать таблицы разделов на внешнем диске, используя gptsync, но он утверждает, что нет GPT присутствует. gdisk нашел, однако, и ручное сравнение с fdiskВыходные данные дают мне впечатление, что они синхронизированы. (Раздел Linux включен в обе таблицы.)

РЕДАКТИРОВАТЬ:

Я записал REFInd на CD и экспериментировал. Результаты:

  • Когда я загружаю свой Mac, нажимая C для загрузки с компакт-диска, он вскоре показывает серый фон rEFInd, но затем сразу же запускает grub из внутренней установки. Я могу обойти это, выбрав REFInd из REFIt. Тем не менее, это дает мне небольшую уверенность в установке rEFInd в OSX.

  • rEFInd показывает все параметры, которые должны отображаться. Как и следовало ожидать, Grubs по-прежнему не в состоянии загружать Linux с внешнего диска.

  • Когда я запускаю ядро ​​Linux с внешнего диска с помощью rEFInd, оно загружается, но после загрузки оказывается, что внутренний раздел монтируется как /, Согласно этой статье, единственные изменения, которые нужно сделать после копирования раздела, находятся в grub. Так как я не использую личинку, я не понимаю.

1 ответ

Решение

Сначала вы должны понять разницу между загрузкой в ​​собственном режиме EFI и загрузкой в ​​BIOS/CSM/ устаревшем режиме. Mac на базе Intel имеют прошивку EFI, а OS X загружается в режиме EFI. Эта микропрограмма включает в себя эмулятор BIOS (известный как модуль поддержки совместимости или CSM; или иногда называемый поддержкой "устаревшего режима"), который позволяет им загружать загрузчики в режиме BIOS. Apple намерена использовать это для загрузки Windows; но многие люди также используют эту поддержку BIOS/CSM/legacy для загрузки других ОС, включая Linux. Linux, тем не менее, поддерживает загрузку в режиме EFI, а также загрузку в режиме BIOS, поэтому использование CSM для Mac часто не нужно и даже усложняет. OTOH, есть определенные модели, на которых аппаратное обеспечение работает лучше в Linux при загрузке в режиме BIOS, чем при загрузке в режиме EFI.

Загрузка с внешнего носителя на Mac - сомнительное предложение, особенно в BIOS/CSM/ устаревшем режиме. Скорее всего, это проблема, с которой вы сталкиваетесь. Я не знаю решения "серебряной пули" для проблемы в режиме BIOS. Наиболее вероятное решение - перейти на загрузку в EFI-режиме. Для этого я рекомендую вам перейти от заброшенного REFIt к его форку, который я поддерживаю, REFInd. Помимо прочего, в rEFInd добавлена ​​поддержка прямого запуска ядер Linux с загрузчиками-заглушками EFI (в том числе большинство ядер, поставляемых с дистрибутивом, начиная с 3.3.0). Если вы загрузите rEFInd с флэш-накопителя USB или образа CD-R, доступного на странице загрузок, он может запустить Linux как с внутреннего, так и с внешнего накопителя (и OS X из обоих мест). Если это работает, установите rEFInd в OS X, а также установите драйвер для любой файловой системы, содержащей ваше ядро ​​Linux (обычно ext4fs). Результатом должна стать возможность загрузки любой ОС напрямую, минуя GRUB.

Если все это работает, я рекомендую удалить некрасивую и опасную гибридную MBR, которую EFI Apple использует в качестве триггера для активации своей CSM. (The gptsync Утилита создает или изменяет гибридную MBR.) Прочтите эту ссылку, чтобы понять, что такое гибридная MBR и почему это такая проблема.


РЕДАКТИРОВАТЬ:

Тот факт, что rEFInd CD-R не работал правильно, когда вы использовали "C" для прямой загрузки, но работал при запуске из rEFIt, мало говорит о вероятности правильной работы rEFInd при установке на жесткий диск или флэш-накопитель USB. К сожалению, загрузка с оптических носителей в EFI довольно запутанна, и Apple, похоже, наложила свои собственные морщины. Таким образом, загрузка таким способом может быть немного рискованной, тем более что у меня (разработчика rEFInd) есть только один древний Mac, на котором можно что-то тестировать. Загрузка с жесткого диска (или с USB-накопителя) с большей вероятностью будет работать.

На основании вашего описания, я подозреваю, что вы не смогли обновить свой /etc/fstab файл в скопированной файловой системе. обновление /etc/fstab при выполнении этой процедуры ссылка на новый UUID для раздела обязательна. Если случайно у вас есть /boot/refind_linux.conf файл, то он тоже должен быть обновлен. (Скорее всего, у вас нет этого файла, но вы можете сделать это, если вы немного вышли за рамки моих инструкций или играли с rEFInd в прошлом.)

Другие вопросы по тегам