Как запустить update-grub с LiveCD?

62

Хорошо, я сделал что-то глупое. Я пытался очистить записи Grub и случайно удалил все ядра Linux из Grub (они все еще на жестком диске). Так что теперь, очевидно, Grub не дает мне никакого способа загрузиться в Ubuntu; Я могу нормально загрузиться в Windows, но Ubuntu даже нет в списке.

Поэтому я просто хочу запустить "sudo upgrade-grub", чтобы восстановить Ubuntu в списке. Я могу загрузиться с LiveCD, но как мне выполнить эту команду? (Кстати, моя Ubuntu установлена ​​на sda5.)

Kelley
источник
Это работает отлично ... сделал это всего 2 дня назад
Nirmik
в этой теме хочу указать - что в 12.10 команда update-grub не работает с grub <2.0 ?! - Я сам на прошлых выходных испортил мою установку 12.10 (pear OS 7.0.1) с grub-install, а затем update-grub не работал - пришлось спасаться с помощью supergrub-CD ...
dschinn1001

Ответы:

81

Поскольку вы говорите, что ваш загрузчик grub появляется, но меню пустое, я думаю, вам не нужно переустанавливать grub, а, как вы просите, запустить update-grub. Для этого вы можете использовать Live CD, смонтировать соответствующие разделы с вашего жесткого диска, выполнить chroot в смонтированном каталоге и запустить update-grub, который должен работать так, как если бы вы работали на реальном жестком диске.

Загрузитесь с вашего Live CD, выбрав «Попробуйте Ubuntu без установки».

После загрузки откройте терминал (ctrl-alt-t) и смонтируйте раздел Ubuntu в / mnt. Я предполагаю, что раздел Ubuntu - / dev / sda5, но вы должны определить это сами. Дайте мне знать, если вам нужна помощь, чтобы сделать это:

sudo mount /dev/sda5 /mnt

Затем смонтируйте еще несколько каталогов, которые необходимы:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc

Кроме того, если у вас есть отдельный загрузочный раздел Ubuntu (довольно редко в наши дни, но это может быть так):

sudo mount /dev/sdaX /mnt/boot

Как узнать, есть ли у вас загрузочный раздел?

После того, как вы смонтировали раздел Ubuntu, откройте /mnt/etc/fstab. Если вы видите запись для /boot, обратите внимание, на какое устройство оно указывает ( /dev/sda4возможно?). Это тот, который вы должны смонтировать.

Как только они смонтированы, выполните chroot, чтобы начать использовать смонтированный каталог в качестве корневого раздела:

sudo chroot /mnt

Вы получите #/подсказку. Первое, что нужно сделать, это подтвердить, что вы используете правильный /bootкаталог. Идите /boot/grubи посмотрите на файлы там. Там должно быть несколько файлов .mod и файл grub.cfg. Если каталог пуст, не продолжайте, потому что это означает, что это НЕ ваш фактический bootкаталог. Посмотрите выше, чтобы узнать, как определить, нужно ли монтировать дополнительный bootкаталог.

После того как вы подтвердили , что /boot/содержит правильные файлы, а это означает , что он является правильным расположением, типа:

sudo update-grub

Это должно восстановить ваш файл /boot/grub/grub.cfg с пунктами меню.

Затем выйдите из chroot:

exit

На этом этапе вы можете проверить, что все было правильно обновлено. Для этого cd /mnt/boot/grubи убедитесь, что файлы grub есть, должно быть несколько файлов .mod и grub.cfg, в последнем должны быть записи для ваших ядер Ubuntu. Если вы видите только grub.cfg и никаких файлов .mod, это означает, что это НЕ правильный загрузочный каталог, посмотрите выше, как смонтировать отдельный загрузочный раздел.

Размонтируйте файловые системы:

sudo umount /mnt/dev
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/boot #Only if you mounted it earlier
sudo umount /mnt/

А затем перезагрузите компьютер, надеюсь, ваше меню Grub будет восстановлено.

roadmr
источник
Когда я пытаюсь запустить три команды монтирования, я получаю «точку монтирования / mnt / dev не существует» или соответствующую для каждой.
Келли
ваша Ubuntu установлена ​​в / dev / sda5? Если это так, после sudo mount /dev/sda5 /mntвы сможете cd /mntувидеть и увидеть дерево вашей установки Ubuntu там. Это должны быть dev, sys и proc. Если нет, возможно, вы монтируете не тот раздел. Вы можете это проверить? Спасибо!
roadmr
Я перезапустил LiveCD, и на этот раз он работает. Должно быть, я напечатал что-то неправильно в первый раз, хотя я был осторожен. В любом случае, я сейчас перезагружаюсь ... и нет, ничего не изменилось. По-прежнему нет выбора Ubuntu в меню Grub.
Келли
Поэтому, чтобы ответить на ваш вопрос, после запуска «sudo mount / dev / sda5 / mnt», а затем «cd / mnt» я вижу dev, sys и proc.
Келли
1
Вы, сэр, спасатели жизни :) Спасибо за это. Работал как шарм.
2012 года
14

Загрузитесь с Live CD.

Нажмите Alt+ Ctrl+, Tчтобы открыть терминал и выполнить следующие команды:

sudo mount / dev / sda5 / mnt

Установите загрузчик GRUB2:

sudo grub-install --root-directory = / mnt / dev / sda

Это /dev/sda- сам жесткий диск, а не раздел Ubuntu /dev/sda5.

Размонтируйте раздел Ubuntu и перезагрузите компьютер следующим образом:

sudo umount / dev / sda5; перезагрузка sudo

Если у вас установлено более одной ОС, переопределите ОС следующим образом:

sudo update-grub

Это оно!

Башарат Сиалви
источник
1
пометил мою для удаления - нет смысла в том же самом дважды
23 93 26 35 19 57 3 89
Спасибо, но это не работает. Он переустанавливает Grub, но когда я перезагружаюсь, он все еще не обновлялся, поэтому моя установка Ubuntu по-прежнему не отображается в Grub. Каким-то образом мне нужно обновить Grub перед перезагрузкой, как с LiveCD.
Келли
@ Келли Вы уверены, что установка Ubuntu на sda5? Вы можете проверить это, запустив sudo fdisk -l. Установка Ubuntu будет иметь *после / dev / sdxx.
Башарат Сиалви
Да, это на sda5. Однако * стоит после sda2, который является моим разделом Windows (и последним разделом, в который я смог загрузиться, так как это единственный выбор в моем меню Grub).
Келли
Корневой. Пожалуйста, прочитайте другие ответы.
иш
1

Мое решение этой проблемы было:

  1. загрузить supergrub2disk с http://www.supergrubdisk.org/category/download/supergrub2diskdownload/super-grub2-disk-stable/
  2. положить его на подвесной привод http://www.supergrubdisk.org/put-super-grub2-disk-into-an-usb-pendrive-as-an-iso-image-from-windows/
  3. загрузочный компьютер с pendrive с supergrub2disk на нем
  4. войдите в свой Ubuntu
  5. получить Boot-Repair для Ubuntu с https://help.ubuntu.com/community/Boot-Repair

Возможно, это не самое быстрое решение, но для меня оно было самым простым.

jmarceli
источник
1

Это решение точно так же, как ответ Roadmr, но гораздо проще.

  1. Загрузитесь с AntiX Live CD.
  2. Меню> Приложения> Системные инструменты> Восстановление загрузки
  3. Выберите «Восстановить файл конфигурации GRUB» (эта опция запускает update-grub)
  4. Выберите диск / раздел, где находится / boot
  5. Перезагрузитесь, когда все закончится.

В моем конкретном случае «Reinstall GRUB Bootloader» исправил это для меня .. У меня двойная загрузка windows / linux. Я использовал Macrium 7 для создания клона диска в файл. Затем восстановите этот файл на новый диск. После того, как я восстановил его на новом диске, он загрузился бы на черный экран с мигающим курсором в левом верхнем углу .

Джефф Люет
источник
-1

Спасибо за всю большую помощь! Однако, в конце концов, похоже, ничего не получалось, и, поскольку у меня был отдельный раздел / home, я смог переустановить Ubuntu без потери каких-либо данных. Мне все еще приходится переустанавливать программы и выполнять некоторые настройки, но на данный момент все кажется хорошим.

Kelley
источник
1
Рад, что вы как-то решили это, но chroot должен был сработать, и это, я считаю, лучшее решение.
Махеш
Да. Я не знаю, почему это не сработало, но ответ был отличным (и я проголосовал за него). Вы, ребята, оказали большую помощь, и, возможно, ответы помогут кому-то еще справиться с этой проблемой.
Келли