Grub rescue - ошибка: неизвестная файловая система

53

У меня установлена мультизагрузочная система. Система имеет три привода. Мультизагрузка настроена на Windows XP, Windows 7 и Ubuntu - все на первом диске. У меня было много нераспределенного пространства, оставленного на диске, и резервировал его для добавления других ОС и для хранения там файлов в будущем.

В один прекрасный день я пошел вперед и загрузил мастер разделов и создал логический раздел NTFS из Windows 7, но еще некоторое нераспределенное пространство осталось. Все работало нормально, пока я не перезагрузил компьютер через несколько дней.

Теперь я получаю:

error: unknown filesystem.  
grub rescue>

Прежде всего, я был удивлен, не найдя какой-либо помощи, пытаясь:

help , ? , man , --help , -h , bash , cmd и т. д.

Теперь я застрял в не-загрузочной системе. Я начал изучать проблему и обнаружил, что люди обычно рекомендуют загружаться на Live CD и исправлять проблему. Есть ли способ исправить эту проблему изнутри спасения grub без необходимости в Live CD?

UPDATE

Следуя шагам из Персистентные команды, набранные для GRUB rescue , я смог загрузить приглашение initramfs. Но не куда дальше.

Пока не прочитайте руководство по спасение grub , я смог увидеть мои диски и разделы с помощью команды ls . Для первого жесткого диска я вижу следующее:
(hd0) (hd0, msdos6) (hd0, msdos5) (hd0, msdos2) (hd0, msdos1)

Теперь я знаю, что (hd0, msdos6) содержит на нем Linux, так как ls (hd0,msdos6)/ перечисляет каталоги. Другие дадут "error: unknown filesystem".

ОБНОВЛЕНИЕ 2

После следующих команд я теперь перехожу к меню загрузки и могу загрузиться в Windows 7 и Ubuntu, но после перезагрузки я должен повторить эти шаги.

ls
ls (hd0,msdos6)/
set root=(hd0,msdos6)
ls /
set prefix=(hd0,msdos6)/boot/grub
insmod /boot/grub/linux.mod
normal

ОБНОВЛЕНИЕ 3

Спасибо Shashank Singh, с вашими инструкциями я упростил свои шаги к следующему. Я узнал от вас, что я могу заменить msdos6 всего на 6 и что я могу просто сделать insmod normal вместо insmod /boot/grub/linux.mod . Теперь мне просто нужно выяснить, как сохранить эти настройки изнутри самой grub, без загрузки в любую ОС.

set root=(hd0,6)
set prefix=(hd0,6)/boot/grub
insmod normal
normal

ОБНОВЛЕНИЕ 4

Ну, похоже, что это требование для загрузки в Linux. После загрузки в Ubuntu я выполнил следующие шаги, описанные в руководстве .

sudo update-grub
sudo grub-install /dev/sda

Это не решило проблему. Я все еще получаю подсказку спасброска. Что мне нужно сделать, чтобы надолго исправить это?

Я также узнал, что номера дисков, как и в hd0, должны быть переведены на буквы букв, как в / dev / sda для некоторых команд. hd1 будет sdb, hd2 - sdc и т. д. Перегородки, перечисленные в grub as (hd0, msdos6), будут переведены на / dev / sda6.

ОБНОВЛЕНИЕ 5

Я не мог понять, почему следующее не исправило grub:

sudo update-grub
sudo grub-install /dev/sda

Итак, я загрузил загрузку-ремонт на основе ответа от Ссылка . Это, похоже, сделало трюк после того, как я выбрал вариант "Рекомендуемый ремонт (ремонт наиболее часто встречающихся проблем)".

    
задан user53817 07.04.2012 в 04:16
источник

4 ответа

23

Я не мог понять, почему следующее не исправило grub:

sudo update-grub
sudo grub-install /dev/sda

Итак, я загрузил загрузку-ремонт на основе ответа от команды Persist, напечатанные в сообщении GRUB rescue . Это, похоже, сделало трюк после того, как я выбрал вариант "Рекомендуемый ремонт (ремонт наиболее часто встречающихся проблем)".

Я также использовал Grub Customizer для настройки порядка загрузочных записей.

    
ответ дан user53817 07.04.2012 в 10:19
источник
7

Существует другая причина этой проблемы. В этом конкретном случае GRUB был как-то поврежден и нуждается в ремонте или переустановке. Однако, как показано в Сбой спасения Grub с " Boot Repair "с ошибкой" неизвестной файловой системы ", также возможно, что корневой раздел, на котором установлен GRUB, может быть поврежден. Чтобы исправить это:

Это возможное решение, но его нельзя использовать, чтобы ваш корневой раздел не был поврежден. Запустив команду fsck -t ext4 /dev/sda1 , эта программа пытается выполнить поиск и исправление ошибок в поврежденной файловой системе. Замените sda1 на ваш фактический корневой раздел. Замените ext4 на фактическую файловую систему; вы должны знать файловую систему, иначе раздел будет более поврежден. Подробнее см. Восстановление поврежденной файловой системы .

Несмотря на то, что у этого вопроса есть ответ, есть альтернативный способ исправить проблему, которая сработала для меня. Шаги объясняются в мучительном видео Grub Rescue - Руководство для начинающих . Короче говоря, он будет полностью переустанавливать GRUB 2 вместо того, чтобы ремонтировать его.

Поскольку это видео так больно смотреть, я приведу следующие шаги (как я должен, независимо от того, насколько больно смотреть видео)

  1. Запустите живую сессию Ubuntu. Видео использует live CD, тогда как я использовал живой USB. Я убедился, что у живого USB есть такая же версия Ubuntu, что у меня на жестком диске.
  2. Найдите, где был установлен ваш корневой раздел. В видео пользователь использует Nautilus для навигации по каждому подключенному накопителю. Он был установлен с длинной строкой цифр и символов. Если это так, выполните следующие шаги, чтобы перемонтировать раздел. Иначе переходите к шагу 5.
  3. Поднимите терминал с помощью Ctrl + Alt + T и используйте команду mount , чтобы найти имя раздела.
  4. Установите раздел. Создайте новую папку в своей медиа-папке. sudo mkdir /media/ubuntu. Затем просто установите свой раздел в эту папку. sudo mount /dev/sdxx /media/ubuntu , где xx sdxx определяется на шаге 3.
  5. Привяжите следующие каталоги из корневого каталога вашего live CD / USB к вашему корневому каталогу в вашей версии Ubuntu. Каталоги - это dev proc и sys . Сделайте это со следующими командами:

    sudo mount --bind /dev /media/ubuntu/dev
    sudo mount --bind /sys /media/ubuntu/sys
    sudo mount --bind /proc /media/ubuntu/proc
    
  6. Измените корневой каталог на тот, который находится на вашем разделе Ubuntu. sudo chroot /media/ubuntu/

  7. Сделав это, установка GRUB 2 снова установит его в корневую директорию вашего дистрибутива Ubuntu, а не на live CD / USB. Итак, продолжайте и запустите sudo grub-install /dev/sdx

И вот как исправить GRUB, используя живой CD / USB. Этот метод был разработан пользователем crazytechzone пользователя YouTube.

    
ответ дан Nil 17.04.2013 в 02:31
5

Использование:

  1. set prefix=(hdX,Y)/boot/grub. Используйте значения, определенные ранее. Пример: Если система Ubuntu находится на sda5, введите:
    set prefix=(hd0,5)/boot/grub
  2. set root=(hdX,Y). Пример: set root=(hd0,5)
  3. insmod normal. Попытайтесь загрузить нормальный модуль.
  4. normal

В основном нам нужен GRUB, чтобы узнать, где находится папка /boot/grub . Если это не работает, я думаю, что установка GRUB с загрузочного компакт-диска является хорошим вариантом.

    
ответ дан Shashank Singh 07.04.2012 в 05:09
3

Смешно, у меня также была такая же проблема час назад!

Во всяком случае, это то, что я сделал.

  1. Загрузить ubuntu:

    set root=(hd0,6)
    set prefix=(hd0,6)/boot/grub
    insmod normal
    normal
    

    , так как ваш ubuntu установлен в 6 справа?

  2. запустить терминал:

    sudo -i *to access root*
    grub-install --root-directory=/mnt/ /dev/sda
    sudo update-grub
    sudo grub-install /dev/sda
    
ответ дан Francis 07.04.2012 в 06:40