У меня есть 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 ответ1

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. (Утилита 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 в прошлом.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .