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 в прошлом.)