У меня настроена мультизагрузочная система. Система имеет три диска. 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 . Это, казалось, сделало трюк после того, как я выбрал опцию «Рекомендуемый ремонт (устранение наиболее частых проблем)».