Проблема GRUB 2 после обновления Mac OS X

У меня MacBook Pro с двойной загрузкой Mac OS X / Ubuntu 12.04 (Precise Pangolin). Когда я загружаю его, у меня появляется меню REFIt, и я могу выбирать между Mac OS X и Linux. Несколько дней назад я обновил Mac OS X с 10.7 (Lion) до 10.8 (Mountain Lion), используя изображение.dmg, предоставленное моей компанией. С тех пор, когда я выбираю Linux в rEFIt, он говорит:

Нет загрузочного устройства, вставьте диск и нажмите любую клавишу

  1. Я попытался перейти к разделу инструмента. Вот что я получил:

Введите описание здесь

Как предложено в обновлении Mac OSX, прервал загрузку Ubuntu, я хотел исправить проблему так же, как AndrewM, но у меня нет опции "Таблица MBR должна быть обновлена".

  1. Затем я загрузился на Ubuntu 12.04 CD, выбрал восстановление сломанной системы, выбрал root-права /dev/sda6 так как это где моя файловая система Ubuntu. У меня есть оболочка, но я не знаю, как исправить проблему, поскольку, если бы это была просто двойная загрузка Windows. Обновление GRUB решило бы проблему, но здесь я не знаю, где установлен GRUB 2.

Вот результаты Parted, и меня это немного смущает, так как раздел Mac - это раздел с загрузкой:

Введите описание здесь

Как вы видите, запись 1 является системным разделом EFI и является загрузочным разделом, поэтому мне интересно, стоит ли мне устанавливать GRUB там или в sda6, который является файловой системой Ubuntu.

Я не уверен, стоит ли мне работать с rEFIt shell или Ubuntu. К сожалению, я не помню, где GRUB был до обновления.

ОБНОВЛЕНИЕ: используя ту же ссылку, что и выше, я попробовал ответ RoundSparrow hilltx и установил rEFInd, но результат тот же.... все еще нет загрузочного устройства, когда я выбираю Linux.

ОБНОВЛЕНИЕ 2: просто снова использовал альтернативный CD, смонтированный в /dev/sda6 и запущенный update-grub. Казалось, что вок и начал перечислять все мои ядра. Но после перезагрузки несколько раз все равно нет загрузочного устройства, когда я выбираю Linux в rEFInd.

UDATE 3: попытался загрузиться с Ubuntu cd и выбрать "загрузиться с первой доступной файловой системы. Я получил ошибку и перешел на grub rescue shell. Я даже следовал указаниям по этой ссылке, но не смог загрузиться, так как пытался использовать sdb6, но нет везение

ОБНОВЛЕНИЕ 4 согласно запросу Роба Смита здесь вне от ls -l $(find /EFI -iname "*.efi")

*MAC OS X

-rw-r--r--@ 1 root  admin    55048 29 oct 17:44 /EFI/refind/drivers_x64/btrfs_x64.efi
-rw-r--r--@ 1 root  admin    38888 29 oct 17:44 /EFI/refind/drivers_x64/ext2_x64.efi
-rw-r--r--@ 1 root  admin    39304 29 oct 17:44 /EFI/refind/drivers_x64/ext4_x64.efi
-rw-r--r--@ 1 root  admin    43432 29 oct 17:44 /EFI/refind/drivers_x64/hfs_x64.efi
-rw-r--r--@ 1 root  admin    38984 29 oct 17:44 /EFI/refind/drivers_x64/iso9660_x64.efi
-rw-r--r--@ 1 root  admin    43656 29 oct 17:44 /EFI/refind/drivers_x64/reiserfs_x64.efi
-rw-r--r--@ 1 root  admin   175016 29 oct 17:44 /EFI/refind/refind_x64.efi
-rw-rw-r--  1 root  admin    73232  7 mar  2010 /EFI/tools/dbounce.efi
-rw-rw-r--  1 root  admin   763248  7 mar  2010 /EFI/tools/dhclient.efi
-rw-rw-r--  1 root  admin    67024  7 mar  2010 /EFI/tools/drawbox.efi
-rw-rw-r--  1 root  admin    71312  7 mar  2010 /EFI/tools/dumpfv.efi
-rw-rw-r--  1 root  admin    84848  7 mar  2010 /EFI/tools/dumpprot.efi
-rw-rw-r--  1 root  admin   472912  7 mar  2010 /EFI/tools/ed.efi
-rw-rw-r--  1 root  admin   143856  7 mar  2010 /EFI/tools/edit.efi
-rw-rw-r--  1 root  admin  1801008  7 mar  2010 /EFI/tools/ftp.efi
-rw-r--r--@ 1 root  admin    47848 29 oct 17:44 /EFI/tools/gptsync_x64.efi
-rw-rw-r--  1 root  admin   320560  7 mar  2010 /EFI/tools/hexdump.efi
-rw-rw-r--  1 root  admin   286384  7 mar  2010 /EFI/tools/hostname.efi
-rw-rw-r--  1 root  admin   534416  7 mar  2010 /EFI/tools/ifconfig.efi
-rw-rw-r--  1 root  admin   395344  7 mar  2010 /EFI/tools/loadarg.efi
-rw-rw-r--  1 root  admin   587408  7 mar  2010 /EFI/tools/ping.efi
-rw-rw-r--  1 root  admin   730416  7 mar  2010 /EFI/tools/pppd.efi
-rw-rw-r--  1 root  admin   561360  7 mar  2010 /EFI/tools/route.efi
-rw-rw-r--  1 root  admin  1961712  7 mar  2010 /EFI/tools/shell.efi 
-rw-rw-r--  1 root  admin   750224  7 mar  2010 /EFI/tools/tcpipv4.efi
-rw-rw-r--  1 root  admin     4048  7 mar  2010 /EFI/tools/textmode.efi
-rw-rw-r--  1 root  admin   320656  7 mar  2010 /EFI/tools/which.efi

* LINUX

Поскольку раздел Ubuntu 12.04 не является загрузочным, мне пришлось загружаться на live cd, поэтому сначала ваша команда не работала:

$ ls -l /boot/vmlinuz*
$ ls: cannot access /boot/vmlinuz*: No such file or directory

поэтому я решил смонтировать мою файловую систему:

sudo mkdir /media/sda6
sudo mount -t ext4 -r /dev/sda6 /media/sda6
cd /media/sda6/
sudo ls -l boot/vmlinuz*

-rw-r--r-- 1 root root 4965840 Apr 25  2012 boot/vmlinuz-3.2.0-23-generic
-rw------- 1 root root 4965968 May 21  2012 boot/vmlinuz-3.2.0-24-generic
-rw------- 1 root root 4974672 Mar 25  2013 boot/vmlinuz-3.2.0-40-generic
-rw------- 1 root root 4978416 Jun  6 20:24 boot/vmlinuz-3.2.0-48-generic
-rw------- 1 root root 4978416 Jun 18 18:20 boot/vmlinuz-3.2.0-49-generic
-rw------- 1 root root 4978960 Jul 24 20:59 boot/vmlinuz-3.2.0-51-generic
-rw------- 1 root root 4980336 Aug 22 21:41 boot/vmlinuz-3.2.0-53-generic

1 ответ

Решение

Если вы точно следовали инструкциям RoundSparrow Hilltx, включая использование --alldrivers возможность install.sh, вы должны увидеть одну или несколько новых опций в rEFInd, с описаниями, которые включают строку vmlinuz, Эти новые записи должны загрузить Linux. Если они это сделают, вы можете удалить нефункциональную запись Linux, отредактировав /EFI/refind/refind.conf Раскомментируя scanfor линия и обеспечение того, чтобы hdbios не входит в число вариантов.

Если вы не использовали --alldrivers вариант, или если вы не видите vmlinuz запись / записи, вы должны попробовать установить драйвер ext4fs, который поставляется с rEFInd. Предполагая, что вы использовали стандартные параметры установки rEFInd, вам нужно создать /EFI/refind/drivers каталог в OS X, а затем скопируйте драйвер ext4fs для вашей архитектуры (X64 или IA32) в этот каталог. При перезагрузке вы должны увидеть новую опцию Linux с именем, которое включает в себя vmlinuz, Это должно загрузиться правильно.


РЕДАКТИРОВАТЬ: Не могли бы вы сделать следующее и опубликовать результаты (отредактируйте исходное сообщение, чтобы сделать это):

  1. В OS X введите ls -l $(find /EFI -iname "*.efi") и опубликовать результаты здесь. (Это предполагает, что вы установили rEFInd под OS X, используя параметры по умолчанию; если вы установили его в ESP, смонтируйте его и измените путь из /EFI к точке монтирования вашего ESP.)
  2. В Linux введите ls -l /boot/vmlinuz* и опубликовать результаты здесь.
  3. Проверить refind.conf файл на наличие строки чтения scan_all_linux_kernels, Убедитесь, что он присутствует и не закомментирован (ведущим # персонаж).

Вы также можете попытаться снова запустить загрузку в режиме BIOS, исправив гибридную MBR и / или переустановив GRUB; однако гибридные MBR ужасны и опасны, поэтому я не рекомендую такой подход. Если вы идете по этому пути, попробуйте использовать gptsync программа от rEFInd, а не от rEFIt. Последнее не удалось для вас, но REFInd's, вероятно, будет работать; или вы можете использовать gdisk для этой работы, как описано на странице, на которую я ссылался ранее в этом пункте.


РЕДАКТИРОВАТЬ 2: Все ваши ядра имеют версии 3.2.x, предшествующие загрузчику заглушек EFI. Это означает, что они не будут работать напрямую с rEFInd. Вообще говоря, есть два способа обойти эту проблему:

  • Добавьте другой загрузчик EFI, такой как ELILO или версию GRUB 2 EFI, для загрузки существующих ядер 3.2.x. Это довольно легко сделать, если вы знаете, как, но для большинства пользователей это незнакомый процесс. Смотрите мою страницу в теме для справки и общие инструкции. Обратите внимание, что эти инструкции предполагают, что у вас есть работающая установка Linux; вам, вероятно, придется использовать live CD, чтобы установить вещи. Кроме того, вам не нужно бежать efibootmgr зарегистрировать загрузчик с прошивкой; просто скопируйте его файлы на место и настройте его файл конфигурации. После этого rEFInd должен обнаружить все, что вы устанавливаете, и позволить вам запустить его.
  • Обновите ваше ядро ​​до версии 3.3.x или новее. Это довольно легко сделать, если вы можете загрузить свою текущую систему, как описано здесь, но, конечно, это создает ловушку 22. Вы должны быть в состоянии преодолеть это препятствие, используя chroot с аварийного диска, как описано здесь.

Другой вариант - обновить вашу версию Ubuntu. Я понимаю, что 3.04 является выпуском LTS, но с тех пор были выпуски 3.04.1 и 3.04.2, и я уверен, что они включают более новые ядра. Я не уверен, что вы могли бы установить 3.04.2 поверх 3.04, чтобы все это заработало, но вы можете рассмотреть эту возможность.

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