Grub rescue - ошибка: неизвестная файловая система
У меня настроена мультизагрузочная система. Система имеет три диска. Multiboot настроен с Windows XP, Windows 7 и Ubuntu - все на первом диске. У меня оставалось много неразделенного пространства на диске, и я зарезервировал его для добавления других ОС и для хранения там файлов в будущем.
Однажды я скачал "Мастер разделов" и создал логический раздел NTFS из Windows 7, но осталось еще немного неразделенного пространства. Все работало нормально, пока я не перезагрузил компьютер через несколько дней.
Теперь я получаю:
error: unknown filesystem.
grub rescue>
Прежде всего, я был удивлен, что не нашел никакой команды помощи, попытавшись:
help, ?, man, --help, -h, bash, cmd, так далее.
Теперь я застрял с не загружаемой системой. Я начал исследовать проблему и обнаружил, что люди обычно рекомендуют загрузиться с Live CD и исправить проблему оттуда. Есть ли способ исправить эту проблему из Grub Rescue без использования Live CD?
ОБНОВИТЬ
Следуя инструкциям команд Persist, введенных для восстановления GRUB, я смог загрузить приглашение initramfs. Но не дальше, чем это.
Пока я не читал руководство по grub rescue, я мог видеть свои диски и разделы, используя ls команда. Для первого жесткого диска я вижу следующее:
(hd0) (hd0,msdos6) (hd0, msdos5) (hd0, msdos2) (hd0, msdos1)
Теперь я знаю, что (hd0,msdos6) содержит Linux, так как ls (hd0,msdos6)/ списки каталогов. Другие выдадут "ошибка: неизвестная файловая система".
ОБНОВЛЕНИЕ 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
Спасибо Шашанк Сингх, с вашими инструкциями я упростил мои шаги до следующего. Я узнал от вас, что я могу заменить 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 как (hd0,msdos6), будут переведены в /dev/sda6.
ОБНОВЛЕНИЕ 5
Я не мог понять, почему следующее не исправить grub:
sudo update-grub
sudo grub-install /dev/sda
Поэтому я скачал загрузочный ремонт, основываясь на ответе из поста https://help.ubuntu.com/community/Boot-Repair. Это, казалось, сделало трюк после того, как я выбрал опцию "Рекомендуемый ремонт (устранение наиболее частых проблем)"
5 ответов
Я не мог понять, почему следующее не исправить grub:
sudo update-grub
sudo grub-install /dev/sda
Таким образом, я загрузил восстановление загрузки, основываясь на ответе команд Persist, набранных на спасательный пост GRUB. Это, казалось, сделало трюк после того, как я выбрал опцию "Рекомендуемый ремонт (устранение наиболее частых проблем)"
Я также использовал Grub Customizer для настройки порядка загрузочных записей.
Использование:
set prefix=(hdX,Y)/boot/grub, Используйте значения, определенные ранее.
Пример: если система Ubuntu работает на sda5, введите:set prefix=(hd0,5)/boot/grubset root=(hdX,Y), Пример:set root=(hd0,5)insmod normal, Попытка загрузить нормальный модуль.normal
Нам в основном нужен GRUB, чтобы знать, где /boot/grub папка есть. Если это не работает, я думаю, что установка GRUB с загрузочного CD - хороший вариант.
Существует альтернативная причина этой проблемы. В этом конкретном случае GRUB был каким-то образом поврежден и нуждался в ремонте или переустановке. Однако, как показано в Grub Rescue, происходит ошибка "Восстановление загрузки" с ошибкой "неизвестная файловая система", также возможно, что корневой раздел, на котором установлен GRUB, может быть поврежден. Чтобы исправить это:
Это возможное решение, но его не следует использовать скорее всего, чтобы ваш корневой раздел не был поврежден. Выполнение команды fsck -t ext4 /dev/sda1Эта программа пытается найти и исправить ошибки в поврежденной файловой системе. Замените sda1 фактическим корневым разделом. Замените ex t4 фактической файловой системой; Вы должны знать файловую систему, иначе раздел будет более поврежден. См. Восстановление поврежденной файловой системы для получения дополнительной информации.
Несмотря на то, что на этот вопрос есть ответ, есть альтернативный способ решить проблему, которая сработала для меня. Шаги объясняются в болезненном видео Grub Rescue - Руководство для начинающих. Короче говоря, он будет переустанавливать GRUB 2 вместо того, чтобы восстанавливать его.
Поскольку смотреть это видео так больно, я перечислю нижеприведенные шаги (как и следовало бы, независимо от того, насколько больно смотреть видео)
- Запустите сеанс Ubuntu. Видео использует живой CD, тогда как я использовал живой USB. Я убедился, что на живом USB была та же версия Ubuntu, что и на жестком диске.
- Найдите, где ваш корневой раздел был смонтирован. В видео пользователь использует Nautilus для навигации по каждому подключенному диску. Он был снабжен длинной строкой цифр и символов. В этом случае выполните следующие шаги, чтобы перемонтировать раздел. В противном случае перейдите к шагу 5.
- Поднимите терминал с помощью Ctrl + Alt + T и используйте
mountКоманда, чтобы найти имя раздела. - Смонтируйте раздел. Создайте новую папку в вашей медиа-папке.
sudo mkdir /media/ubuntu, Затем просто подключите раздел к этой папке.sudo mount /dev/sdxx /media/ubuntuгдеxxизsdxxопределяется в шаге 3. Свяжите следующие каталоги из корневого каталога вашего live CD/USB с корневым каталогом в вашей версии Ubuntu. Каталоги являются
devprocа такжеsys, Сделайте это с помощью следующих команд:sudo mount --bind /dev /media/ubuntu/dev sudo mount --bind /sys /media/ubuntu/sys sudo mount --bind /proc /media/ubuntu/procИзмените корневой каталог на тот, что находится в вашем разделе Ubuntu.
sudo chroot /media/ubuntu/- Сделав вышеизложенное, установка GRUB 2 снова установит его в корневой каталог вашего дистрибутива Ubuntu, а не в дистрибутив live CD/USB. Так что давай, беги
sudo grub-install /dev/sdx
И это как починить GRUB используя live CD/USB. Этот метод был разработан пользователем YouTube crazytechzone.
Забавно, у меня тоже была такая же проблема час назад!
Во всяком случае, это то, что я сделал.
Загрузите Ubuntu:
set root=(hd0,6) set prefix=(hd0,6)/boot/grub insmod normal normalтак как ваша Ubuntu установлена в 6 правильно?
запустить терминал:
sudo -i *to access root* grub-install --root-directory=/mnt/ /dev/sda sudo update-grub sudo grub-install /dev/sda
Другая причина проблемы заключается в том, что файловая система на загрузочном диске может быть сбой в редких случаях. Как уже упоминалось в других ответах, я изначально использую ls команда для вывода списка всех дисков / разделов в приглашении восстановления GRUB, но все они сообщают об неизвестной ошибке файловой системы. Я наконец исправил проблему в Ubuntu 16.04 (Xenial Xerus), восстановив файловую систему следующим образом:
Загрузка с флешки (попробуйте Ubuntu без установки)
Найдите загрузочный диск (проверьте емкость диска или выполните
fsckна каждом разделе):sudo fdisk -lВосстановите файловую систему:
sudo fsck /dev/sdb1После исправления и очистки файловой системы перезагрузите компьютер с загрузочного диска.