Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
wiki:восстановление_grub [2010/04/05 10:58] |
wiki:восстановление_grub [2021/03/28 22:52] [Первый способ] |
||
---|---|---|---|
Строка 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 record, MBR)//, к которой обращается [[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}} |