- Восстановление GRUB
- Восстановление с помощью LiveCD/USB
- Первый способ
- Восстановление используя chroot
- Восстановление в rescue mode
- Как восстановить загрузчик Grub в Linux
- Восстановление GRUB в Ubuntu и Debian
- Восстановление GRUB в Arch Linux
- Восстановление GRUB на Fedora
- Часто задаваемые вопросы
- Можно ли восстановить GRUB , если моя система использует LVM ?
- Восстановление GRUB сотрет другие операционные системы на моем диске?
- Можно ли переустановить GRUB на системе UEFI ?
Восстановление GRUB
GRUB — это основной загрузчик Ubuntu начиная с версии 9.10. Ранее он был известен как GRUB2 и пришёл он на смену старой версии GRUB, известной теперь как GRUB Legacy. Если вам необходимо восстановить GRUB Legacy, например поскольку у Вас стоит версия Ubuntu старше 9.10, то вам необходимо прочитать соответствующую статью.
Несмотря на то, что это фактически две версии одного приложения с названием GRUB, они не имеют ничего общего и являются совершенно разными программами.
На любом загрузочном винчестере есть так называемая Главная загрузочная запись (англ. master boot record, MBR), к которой обращается BIOS при загрузке компьютера. В эту область загрузчик системы и должен записать информацию об основных файлах, которые хранятся уже на разделах винчестера.
Каждый раз при установке или восстановлении систем от Microsoft загрузчики Linux заменяются и их необходимо заново устанавливать.
Восстановление с помощью LiveCD/USB
Первый способ
Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt + F2 и ввести команду:
Далее необходимо узнать Вашу таблицу разделов. Используйте команду:
На экран должна быть выведена примерно такая таблица:
/dev/sda3 239616 233392328 233152713 111,2G Microsoft basic data /dev/sda4 233394176 234438655 1044480 510M Windows recovery environment . Disk identifier: 0x7d6fe43d Device Boot Start End Sectors Size Id Type /dev/sdc1 * 2048 29304782 29302735 14G 83 Linux /dev/sdc2 29304832 1953523711 1924218880 917,6G 83 Linux
Из таблицы видим, что Linux (загрузочный /-корень отмечен звёздочкой) стоит, в нашем случае, на разделе /dev/sdc1.
Теперь подключим этот раздел в /mnt следующей командой (следим за пропусками между кодами и порядковыми номерами разделов):
Затем, для записи grub в MBR, вводите следующую команду:
sudo grub-install --root-directory=/mnt /dev/sdc
В случае, если нужно только восстановить MBR диска (например, после переустановки Windows), то этого достаточно, закрываем терминал и перезагружаем.
Если нужно обновить и меню grub (например, после установки Windows), то нужно сделать:
sudo update-grub --output=/mnt/boot/grub/grub.cfg
Восстановление используя chroot
Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt + F2 и ввести команду:
Далее необходимо узнать Вашу таблицу разделов. Используйте команду:
На экран должна быть выведена примерно такая таблица:
/dev/sda1 29 8369 66999082+ 83 Linux /dev/sda2 * 8370 13995 45190845 7 HPFS/NTFS /dev/sda3 13996 14593 4803435 5 Extended
Теперь нужно примонтировать Ваш Linux раздел (здесь это sda1) и еще несколько важных директорий:
sudo mount /dev/sda1 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys
Если раздел /boot или /var находится отдельно, то Вам необходимо примонтировать их в /mnt/boot и /mnt/var
Теперь перейдем в окружающую среду chroot:
Теперь необходимо установить GRUB, используя команду:
grub-install --recheck /dev/sda
Также в некоторых случаях может помочь вариант:
grub-install --recheck --no-floppy /dev/sda
Если все прошло успешно, выходим из chroot командой:
Теперь необходимо отмонтировать разделы:
sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt
Если Вы монтировали раздел /boot воспользуйтесь командой:
Затем перезагрузим Ваш компьютер командой:
При необходимости Вы можете обновить меню загрузчика командой:
Восстановление в rescue mode
При отсутствии загрузочного диска, можно восстановить Grub из его консоли. Восстановление происходит следующим образом: сначала нужно подгрузить все модули, чтобы стала доступна вся функциональность Grub, а затем уже запуститься с нужного раздела. Как известно, Grub состоит из двух частей. Первая часть записана в MBR диска. Она содержит базовую функциональность, то есть в ней есть консоль в rescue mode и ничего больше. Вначале нужно определить, на каком разделе находится вторая часть груба (она лежит в каталоге /boot/grub), подгрузить недостающие модули. И только потом можно будет дать команду запуска с нужного раздела. В rescue mode доступно всего четыре команды:
Вначале следует дать команду:
В ответ она выведет, например, следующее:
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)
Иногда Grub может неправильно опеределить, какие файловые системы находятся на разделах дисков. В данном случае определяет их как msdos. Нам нужно постараться угадать, какие диски мы видим. В данном случае видно два диска. Диск с индексом 0 содержит три раздела, диск с индексом 1 содержит два раздела. Зная структуру своих дисков несложно определить нужный диск.
Grub называет разделы в обратном порядке. И становится непонятно, что имеется в виду под (hd0,msdos3) — первый раздел или третий? Тут можно выкрутиться, использовав синтаксис (hd0,1). Нужно помнить, что в Grub счет дисков начинается с 0, а счет разделов — с 1. Предположим, что Линукс установлен на первый диск в первый раздел, то есть (hd0,1). Даем команду:
set prefix=(hd0,1)/boot/grub set root=(hd0,1)
Этими командами мы указываем использовать диск (hd0,1) для дальнейших команд. После чего нужно проверить, действительно ли на этом разделе есть то, что нам нужно. Даем команду:
если в ответ получаем список всех файлов в этой директории, то диск и раздел выбраны правильно. Подгружаем модули:
insmod ext2 insmod normal normal
set prefix=(hd0,1)/@/boot/grub set root=(hd0,1)
insmod btrfs insmod normal
После чего Grub перейдёт в полнофункциональный режим. Он автоматически найдет все операционки, которые можно подгружать, и покажет своё Grub-меню.
Дальнейшее восстановление сводится к тому, чтобы загрузить нужный нам Linux, и в нем от рута дать команду:
Где sdX, диск, на который нужно установить Grub.
Как восстановить загрузчик Grub в Linux
Большой унифицированный загрузчик GRUB – это мощная и гибкая утилита, которая связывает BIOS материнской платы с ядром операционной системы. Она работает путем загрузки небольшой программы в память материнской платы, которая используется для загрузки более крупного двоичного файла мультизагрузки.
Но бывают случаи, когда GRUB не может загрузить ядро операционной системы. Например, двойная загрузка с Linux и Windows часто приводит к тому, что последняя стирает загрузчик. В этом руководстве показано, как можно восстановить систему, переустановив GRUB , используя некоторые из наиболее популярных дистрибутивов Linux.
Восстановление GRUB в Ubuntu и Debian
Одним из самых быстрых способов переустановки GRUB в Ubuntu и Debian является загрузка живой копии любого из этих дистрибутивов. Это позволит вам подключить корневой раздел вашей системы и использовать исполняемые файлы GRUB дистрибутива для воссоздания загрузчика вашей системы.
Примечание: когда вы загрузитесь с живого USB , нажмите «Try Ubuntu» для доступа к рабочему столу. Не нажимайте «Установить Ubuntu.»
- Откройте терминал в среде дистрибутива.
sudo fdisk -l | grep "Linux filesystem$"
sudo grub-install --force --boot-directory=/mnt/ /dev/sda1
Совет: хотя переустановка GRUB исправит большинство проблем с мультизагрузкой, новичкам может показаться сложной командная строка. В связи с этим, вы также можете исправить GRUB с помощью графической утилиты Boot Repair Utility.
Восстановление GRUB в Arch Linux
Наряду с Ubuntu и Debian, для восстановления загрузчика можно использовать живую копию Arch Linux. Одним из преимуществ этого является то, что живой Arch Linux не полагается на графическое отображение, поэтому вы можете легко восстановить GRUB даже на машинах по SSH .
- Определите корневой раздел вашей системы с помощью lsblk:
mount --bind /sys /mnt/sys mount --bind /proc /mnt/proc mount --bind /run /mnt/run mount --bind /dev /mnt/dev
/sbin/grub-install --target=i386-pc /dev/sda
/sbin/grub-mkconfig > /boot/grub/grub.cfg
Нажмите Ctrl + D , чтобы выйти из корневой сессии вашей системы.
Восстановление GRUB на Fedora
Подобно Ubuntu и Debian, восстановление Grub на Fedora также просто.
#Найдите корневой раздел вашей машины:
sudo fdisk -l | grep "Linux filesystem$"
- Смонтируйте корневой раздел вашей системы и создайте связующее монтирование между ним и вашей живой сессией:
sudo mount /dev/sda3 /mnt sudo mount --bind /sys /mnt/root/sys sudo mount --bind /proc /mnt/root/proc sudo mount --bind /run /mnt/root/run sudo mount --bind /dev /mnt/root/dev
sudo chroot /mnt/root bash mount /dev/sd3 / mount /dev/sda2 /boot
rm -f /etc/grub.d/* rm -f /etc/sysconfig/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-install --target=i386-pc /dev/sda
Часто задаваемые вопросы
Можно ли восстановить GRUB , если моя система использует LVM ?
Да. Вы можете восстановить GRUB , даже если ваша система использует LVM . Для этого выполните ls /dev/mapper/*—vg-root , чтобы определить абсолютный путь к корневому разделу вашей машины. Используйте этот абсолютный путь вместо традиционного «/dev/sda1.»
Восстановление GRUB сотрет другие операционные системы на моем диске?
Нет. Загрузчик, по своей конструкции, знает, где найти только первые несколько байт ядра операционной системы. Замена загрузчика не повлияет на существующую на диске операционную систему.
Можно ли переустановить GRUB на системе UEFI ?
Да. Для этого вам нужно убедиться, что вы правильно смонтировали раздел «/boot/efi» вашей системы UEFI . Вам также нужно изменить значение флага —boot-directory в grub-install на «/boot/efi».
Для Fedora, вам также нужно изменить значение флага -o для grub2-mkconfig на /boot/efi/EFI/fedora/grub.cfg
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.