Проблема 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, он говорит:
Нет загрузочного устройства, вставьте диск и нажмите любую клавишу
- Я попытался перейти к разделу инструмента. Вот что я получил:
Как предложено в обновлении Mac OSX, прервал загрузку Ubuntu, я хотел исправить проблему так же, как AndrewM, но у меня нет опции "Таблица MBR должна быть обновлена".
- Затем я загрузился на 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
, Это должно загрузиться правильно.
РЕДАКТИРОВАТЬ: Не могли бы вы сделать следующее и опубликовать результаты (отредактируйте исходное сообщение, чтобы сделать это):
- В OS X введите
ls -l $(find /EFI -iname "*.efi")
и опубликовать результаты здесь. (Это предполагает, что вы установили rEFInd под OS X, используя параметры по умолчанию; если вы установили его в ESP, смонтируйте его и измените путь из/EFI
к точке монтирования вашего ESP.) - В Linux введите
ls -l /boot/vmlinuz*
и опубликовать результаты здесь. - Проверить
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, чтобы все это заработало, но вы можете рассмотреть эту возможность.