Восстановление GRUB Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
wiki:восстановление_grub [2010/04/05 10:58]
wiki:восстановление_grub [2021/03/28 22:53]
[Первый способ]
Строка 1: Строка 1:
 ====== Восстановление GRUB ====== ====== Восстановление GRUB ======
  
-[[GRUB]] - это основной загрузчик Ubuntu начиная с версии 9.10. Ранее он был известен как ​GRUB 2 и пришёл он на смену старой версии GRUB, известной теперь как ​[[grub_legacy|GRUB Legacy]]. Если вам необходимо восстановить GRUB Legacy, например поскольку у вас стоит версия Ubuntu старше 9.10, то вам необходимо прочитать [[восстановление_grub_legacy|соответствующую статью]].+[[GRUB]] - это основной загрузчик ​[[ubuntu|Ubuntu]] начиная с версии 9.10. Ранее он был известен как ​GRUB2 и пришёл он на смену старой версии ​[[grub_legacy|GRUB]], известной теперь как GRUB Legacy. Если вам необходимо восстановить GRUB Legacy, например поскольку у Вас стоит версия Ubuntu старше 9.10, то вам необходимо прочитать [[восстановление_grub_legacy|соответствующую статью]].
  
-<​note>​Не перепутайте GRUB версии 1, известный теперь как [[grub_legacy|GRUB Legacy]] и использовавшийся в Ubuntu до версии 9.04 включительно,​ и GRUB версии 2, который подразумевается сейчас под словом [[GRUB]] и используется в Ubuntu начиная с версии 9.10. Несмотря на то, что это фактически две версии одного приложения с названием GRUB, они не имеют ничего общего и являются совершенно разными программами.</​note>​+<​note>​Несмотря на то, что это фактически две версии одного приложения с названием GRUB, они не имеют ничего общего и являются совершенно разными программами.</​note>​
  
-Основная проблема любого загрузчика Linux - это то, что он никак не отвечает за тупизну систем от Microsoft, которые каждый раз при ​установке или восстановлении перетирают загрузчики ​Linux из загрузочной области.+На любом загрузочном винчестере есть так называемая [[http://​ru.wikipedia.org/​wiki/​Главная_загрузочная_запись|Главная загрузочная запись]] //​(англ. master boot recordMBR)//, к которой обращается [[wp>​BIOS]] ​при ​загрузке компьютера. В эту область загрузчик ​системы ​и должен ​записать информацию ​об основных файлах, которые хранятся уже на разделах винчестера.
  
-Вкратце: на любом винчестере есть так называемая MBR область,​ к которой обращается BIOS при ​загрузке компьютера с этого винчестера. В эту MBR загрузчик системы должен записать '​ссылку'​ на свои основные файлы, ​которые храняться уже на основных разделах винчестера. Так ​вот, Windows при установке перетирает без всяких вопросов ссылку Linux и ставит свою, в итоге, Linux пропадает из меню ​загрузки. Слава богу, Windows так же втихую не убивает сам Linux, так что восстановить последствия беспредела достаточно просто.+<note important>​Каждый раз при установке ​или восстановлении систем от Microsoft ​загрузчики Linux заменяются и их необходимо заново ​устанавливать.</​note>​
  
-===== Восстановление ​с использованием LiveCD ​Ubuntu ​=====+===== Восстановление с помощью ​LiveCD/USB =====
  
-FIXME - //если ​вы думаете, что я знаю, как восстанавливать GRUB 2, то вы глубоко заблуждаетесь ;-)//+==== Первый способ ==== 
 +Запустите систему с LiveCD/USB и откройте [[терминал]]. Для этого ​можно нажать <​key>​Alt+F2</​key>​ и ввести команду:​ 
 +<​code>​gnome-terminal<​/code>
  
-Вообще говоря, ​судя ​по крайне скромной информации,​ записать ​GRUB в MBR можно командой+Далее необходимо узнать Вашу таблицу разделов. Используйте команду: 
 +<​code>​sudo fdisk -l</​code>​ 
 +На экран должна быть выведена примерно такая таблица:​ 
 +<​file>​ 
 +/​dev/​sda3 ​    ​239616 233392328 233152713 111,2G Microsoft basic data 
 +/​dev/​sda4 ​ 233394176 234438655 ​  ​1044480 ​  510M Windows recovery environment 
 +... 
 +Disk identifier: 0x7d6fe43d
  
-  ​sudo grub-setup DEV+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
  
-где DEV - устройство GRUB, т.е. что-то вида "​(hd1)"​.+</​file>​
  
-===== ТСС... =====+Из таблицы видим, что Linux (загрузочный /​-корень отмечен звёздочкой) стоит (в нашем случае) на разделе /dev/sdc1
  
-FIXME+Теперь подключим этот раздел в /mnt следующей командой (следим за пропусками между кодами и порядковыми номерами разделов):​ 
 +<​code>​sudo mount /dev/sdc1 /​mnt</​code>​
  
-Немного инфы ​есть [[http://wiki.archlinux.org/index.php/GRUB2_(Русский)|тут]] и [[http://​en.gentoo-wiki.com/​wiki/​Grub2|тут]]\\+Затем, для записи grub в MBR, вводите следующую команду: 
 +<​code>​sudo grub-install --root-directory=/mnt /dev/sdc</code> 
 +В случае, если нужно только восстановить MBR диска (например,​ после переустановки Windows), ​то этого достаточно,​ закрываем терминал и перезагружаем.
  
-А вот тут полная ​информация похоже ​[[https://help.ubuntu.com/community/Grub2#​Reinstalling GRUB 2|Reinstalling GRUB 2]] (может группу переводчиков задействовать?) :)+Если нужно обновить и меню grub (например, ​после установки Windows), то нужно сделать: 
 +<​code>​sudo update-grub --output=/mnt/boot/grub/grub.cfg</​code>​ 
 +Восстановление закончено! 
 +==== Восстановление используя chroot ==== 
 +Запустите систему с LiveCD/USB и откройте [[терминал]]. Для этого можно нажать ​<​key>​Alt+F2</​key>​ и ввести команду: 
 +<​code>​gnome-terminal</​code>​
  
-{{tag>​Администрирование HOWTO GRUB FIXME}}+Далее необходимо узнать Вашу таблицу разделов. Используйте команду:​ 
 +<​code>​sudo fdisk -l</​code>​ 
 +На экран должна быть выведена примерно такая таблица:​ 
 +<​file>​ 
 +/dev/sda1 29 8369 66999082+ 83 Linux 
 +/dev/sda2 * 8370 13995 45190845 7 HPFS/NTFS 
 +/dev/sda3 13996 14593 4803435 5 Extended 
 +</​file>​ 
 + 
 +Теперь нужно примонтировать Ваш Linux раздел (здесь это sda1) и еще несколько важных директорий:​ 
 +<​code>​ 
 +sudo mount /dev/sda1 /mnt 
 +sudo mount --bind /dev /mnt/dev 
 +sudo mount --bind /proc /mnt/proc 
 +sudo mount --bind /sys  /mnt/sys 
 +</​code>​ 
 + 
 +<note important>​Если раздел /boot или /var находится отдельно,​ то Вам необходимо примонтировать их в /mnt/boot и /​mnt/​var</​note>​ 
 + 
 +Теперь перейдем в окружающую среду [[http://​ru.wikipedia.org/​wiki/​Chroot|chroot]]:​ 
 +<​code>​sudo chroot /​mnt</​code>​ 
 + 
 +Теперь необходимо установить [[GRUB]], используя команду:​ 
 +<​code>​grub-install /​dev/​sda</​code>​ 
 + 
 +<note tip>​Если Вы получили сообщение об ошибке,​ то используйте команду:​ 
 +<​code>​grub-install --recheck /​dev/​sda</​code>​ 
 +Также в некоторых случаях может помочь вариант:​ 
 +<​code>​grub-install --recheck --no-floppy /​dev/​sda</​code>​ 
 +</​note>​ 
 + 
 +Если все прошло успешно,​ выходим из [[http://​ru.wikipedia.org/​wiki/​Chroot|chroot]] командой:​ 
 +<​code>​exit</​code>​ 
 + 
 +Теперь необходимо отмонтировать разделы:​ 
 +<​code>​ 
 +sudo umount /mnt/dev 
 +sudo umount /mnt/proc 
 +sudo umount /mnt/sys 
 +sudo umount /mnt 
 +</​code>​ 
 + 
 +Если Вы монтировали раздел /boot воспользуйтесь командой:​ 
 +<​code>​sudo umount /​mnt/​boot</​code>​ 
 + 
 +Затем перезагрузим Ваш компьютер командой:​ 
 +<​code>​sudo reboot</​code>​ 
 + 
 +При необходимости Вы можете обновить меню загрузчика командой:​ 
 +<​code>​sudo update-grub</​code>​ 
 + 
 +=====Восстановление в rescue mode===== 
 +При отсутствии загрузочного диска, можно восстановить Grub из его консоли. Восстановление происходит следующим образом:​ сначала нужно подгрузить все модули,​ чтобы стала доступна вся функциональность Grub, а затем уже запуститься с нужного раздела. 
 +Как известно,​ Grub состоит из двух частей. 
 +Первая часть записана в MBR диска. Она содержит базовую функциональность,​ то есть в ней есть консоль в rescue mode и ничего больше. Вначале нужно определить,​ на каком разделе находится вторая часть груба (она лежит в каталоге /​boot/​grub),​ подгрузить недостающие модули. И только потом можно будет дать команду запуска с нужного раздела. 
 +В rescue mode доступно всего четыре команды:​ 
 +<​code>​ ls 
 +set 
 +unset 
 +insmod</​code>​ 
 +Вначале следует дать команду:​ 
 +<​code>​ls</​code>​ 
 +В ответ она выведет,​ например,​ следующее:​ 
 +<​code>​(hd0) (hd0,​msdos3) (hd0,​msdos2) (hd0,​msdos1) (hd1) (hd1,​msdos2) (hd1,​msdos1)</​code>​ 
 +Иногда Grub может неправильно опеределить,​ какие файловые системы находятся на разделах дисков. В данном случае определяет их как msdos. 
 +Нам нужно постараться угадать,​ какие диски мы видим. В данном случае видно два диска. Диск с индексом 0 содержит три раздела,​ диск с индексом 1 содержит два раздела. Зная структуру своих дисков несложно определить нужный диск. 
 + 
 +Grub называет разделы в обратном порядке. И становится непонятно,​ что имеется в виду под (hd0,​msdos3) - первый раздел или третий?​ Тут можно выкрутиться,​ использовав синтаксис (hd0,1). Нужно помнить,​ что в Grub счет дисков начинается с 0, а счет разделов - с 1. 
 +Предположим,​ что Линукс установлен на первый диск в первый раздел,​ то есть (hd0,1). 
 +Даем команду:​ 
 +<​code>​set prefix=(hd0,​1)/​boot/​grub  
 +set root=(hd0,​1)</​code>​ 
 +Этими командами мы указываем использовать диск (hd0,1) для дальнейших команд. После чего нужно проверить,​ действительно ли на этом разделе есть то, что нам нужно. Даем команду:​ 
 +<​code>​ls /​boot/​grub</​code>​ 
 +если в ответ получаем список всех файлов в этой директории,​ то диск и раздел выбраны правильно. 
 +Подгружаем модули:​ 
 +<​code>​insmod ext2 
 +insmod normal 
 +normal</​code>​ 
 +<note warning>​Проверьте правильность написания первой команды для файловых систем ext3 и ext4</​note>​ 
 +<note warning>​Если ОС расположена на разделе,​ отформатированном в btrfs, 
 +то выполняем следующие команды:​ 
 +<​code>​set prefix=(hd0,​1)/​@/​boot/​grub 
 +set root=(hd0,​1)</​code>​ 
 +подгружаем модули:​ 
 +<​code>​insmod btrfs 
 +insmod normal</​code>​ 
 +запускаем GRUB: 
 +<​code>​normal</​code>​ 
 +</​note>​ 
 +После чего Grub перейдёт в полнофункциональный режим. Он автоматически найдет все операционки,​ которые можно подгружать,​ и покажет своё Grub-меню.  
 + 
 +Дальнейшее восстановление сводится к тому, чтобы загрузить нужный нам Linux, и в нем от рута дать команду:​ 
 +<​code>​grub-install /​dev/​sdX</​code>​ 
 +Где sdX, диск, на который нужно установить Grub. 
 +===== Ссылки ​ ===== 
 +  * [[grub|Загрузчик системы GRUB]] 
 +  * [[внешний_вид_grub|Настройка внешнего вида загрузчика GRUB]] 
 +  * [[http://​wiki.archlinux.org/​index.php/​GRUB2_(Русский)|Информация о GRUB на русском]] 
 +  * [[https://​help.ubuntu.com/​community/​Grub2#​Reinstalling GRUB 2|HOWTO Reinstalling GRUB (англ.)]] 
 +  * [[http://​ru.wikibooks.org/​wiki/​Grub_2_от_А_до_Я|Grub 2 от А до Я]] 
 +  * [[http://​webhamster.ru/​site/​page/​index/​articles/​comp/​196|Grub - как восстанавливаться в rescue mode ]] 
 +  * [[https://​help.ubuntu.com/​community/​Boot-Repair|Boot-repair]] 
 +  * [[https://​help.ubuntu.ru/​wiki/​boot_repair|Boot-repair на русском]] 
 +  
 +{{tag>​Администрирование HOWTO GRUB}}