Grub - это универсальный загрузчик, который используется для загрузки операционной системы Linux и других ОС, в случае, если на компьютере установлен Linux. Но когда вы выполняете какие-либо действия с разделами на диске, например, восстанавливаете их с помощью Clonezilla, изменяете размер или что-то другое, что Grub может быть поврежден.
Часто такие повреждения приводят к ошибке grub rescue unknown filesystem. Тогда перед вами не появляется меню, а только сообщение про ошибку и консоль восстановления для ввода команд. В этой небольшой статье мы рассмотрим как исправить эту ошибку.
Содержание статьи
Ошибка grub rescue unknown filesystem
Ошибка grub rescue unknown filesystem может возникать по разным причинам вот самые распространенные причины:
- Вы восстанавливали диск из Clonezilla и были изменены метрики раздела /boot;
- Раздел /boot был отформатирован и больше не существует;
Дело в том, что Grub устанавливается в два места. Первое - место в таблице разделов MBR. Там очень мало места, около 512 байт, а следовательно, весь загрузчик туда поместиться не может. Поэтому Grub имеет модульную структуру и все основные модули, конфигурационные файлы и ресурсы располагаются на обычном разделе, который монтируется после загрузки в /boot. Причем программа в MBR помнит где находится раздел /boot, но если с этим разделом что-то произойдет и программа не сможет загрузить привычные модули, то выдаст ошибку unknown filesystem. Если раздела больше нет, то вам останется только брать LiveCD диск и переустанавливать загрузчик, если же раздел просто немного изменен, то еще можно все исправить.
Как исправить Grub unknown error
У вас есть простейший терминал с самой простой командной оболочкой. Чтобы знать какие команды можно там вводить наберите:
help
Дальше нам нужно посмотреть список доступных разделов, для этого используется команда ls, как в bash:
ls
Без модулей grub поддерживает только ту файловую систему, которая была на /boot. Вы можете попытаться просмотреть содержимое каждого раздела чтобы определить где находятся файлы модулей. Например:
ls (hd0,1)/
Если вы увидели папку boot, значит это наш раздел. Дальше устанавливаем этот раздел значением переменной root с помощью команды set:
set root=(hd0,1)
set prefix=(hd0,1)/boot/grub
Загружаем и запускаем модуль normal, который должен загрузить все, что нам необходимо:
insmod normal
normal
Если раздел /boot не был поврежден, то загрузчик нормально определит все файлы, а потом запустит привычное для вас меню. Конечно, после того, как система загрузится, вам будет необходимо восстановить загрузчик Grub чтобы не вводить эти команды при каждой загрузке системы.
Выводы
В этой статье мы рассмотрели почему возникает ошибка error unknown filesystem grub rescue и что делать grub rescue, когда вы видите это сообщение. Да, во многих случаях у вас уже не получится загрузить систему без LiveCD диска. Но иногда все можно спасти. Надеюсь, эта информация была полезной для вас.
Если вы искали альтернативу почтовому сервису Gmail, который уважает вашу конфиденциальность, обратите внимание на ProtonMail. Ваши письма автоматически шифруются сквозным шифрованием, поэтому читать их можете только вы и получатель. ProtonMail не собирает ваши персональные данные и базируется в Швейцарии, где действуют одни из самых строгих законов о конфиденциальности. Посмотреть детали









А если ошибка, что файл normal.mod не найден в /boot/grub/i386-pc/?
При попытке убрать i386-pc ничего не вышло.
Как удалось исправить?
Вместо /boot/grub в префиксе нужно указывать просто /grub
Все равно /grub/i386-pc/normal.mod not found.
Спасибо, помогло!
После загрузки системы, чтобы GRUB работал постоянно, нужно ввести эти команды:
$ sudo grub-install /dev/sda
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
Благодарю Вас! Справился без посторонней помощи.
А если все разделі неизвестні?
автор путает строки grub и grub rescue
в grub rescue всего 4 команды и нет никакого help
у меня ошибка attempt to read or write outside of disk 'hd0'
После установки командой set рута и префикс делаю insmod normal и полчуаю обратно туже ошибку
Была ошибка insmod normal not found. Помог только LiveCD:
https://sourceforge.net/projects/boot-repair-cd/files/
С ним за 5 мин. все восстановилось, правда пришлось записать его на чистый диск.
спасибо, помогло !!!
А что если команду Is и insmode граб rescue не знает?
перезапусти комп и попробуй всё снова, помогло
У меня так же было. Пришлось ставить на другой диск систему и данные восстанавливать
Спасибо, это помогло. Только была небольшая особенность, у меня было несколько раздело
(hd0), (hd0,msdos5), (hd0,msdos3), (hd0,msdos2), (hd0,msdos1), (hd1) ...
(hd0,msdos5) - имел /boot/grub + в корне была знакомая мне структура каталогов, но normal.mod, был на каталог ниже в /boot/grub/i386-pc/normal.mod в консоли я получил not found при выполнении команды 'insmod normal'
(hd0,msdos3)- имел сразу в корне /grub + в корне было несколько утилит, судя по названию это были запуски проверки памяти , запуск рекавери мода и прочее, что обычно видно в boot menu.
В моём случае мне помогло:
$ set root=(hd0,msdos3)
$ set prefix=(hd0,msdos3)/grub
Ещё раз спс)
P.S. вопрос, что было бы если я бы поставил set prefix=(hd0,msdos5)/boot/grub/i386-pc ?
> ls (hd1,1)/
error: unknown filesystem
После ввода ls компьютер перезагружается.
Вместо отображения содержимого разделов пишет sector sizes of 512 byte aren't supported yet
Вытащил 2 планки оперативки и система нормально загрузилась. Т.е. с диском всё в порядке и не нужно было вводить какие либо команды.