- Восстановление Grub
- Стандартная процедура
- Устранение неполадок : ‘grub-install /dev/sda’ failed.
- Восстановление GRUB2 в Debian ( Восстановление GRUB2 в «Linux Debian Lenny/Squeeze/Wheezy» с помощью инсталляционного дистрибутивного диска. )
- Заметки и комментарии к публикации:
- Recover GRUB
- Standard procedure
- Troubleshooting : ‘grub-install /dev/sda’ failed.
Восстановление Grub
Представьте себе, по какой-либо причине у вас есть другие операционные системы, установленные рядом с Debian. Или по какой-то другой причине вам придется его переустановить, потому что он на самом деле сломан. Опять же, представьте себе, у этой дрянной ОС получилась дрянная установка и она переписала загрузочную запись MBR, полностью завладев компьютером. Что дальше? Переустановка Debian? Нет.
В любом случае, вы можете использовать загрузочную утилитуSuperGrub, которая может восстанавливать и исправлять неправильную запись GRUB или напрямую загружать различные операционные системы.
Стандартная процедура
Установщик Debian (DVD, CD netinst, дискеты, по сети, и т.д.) может быть использован для восстановления систем, например, если они не загружаются после обновления. Вы должны прочесть и следовать инструкции Восстановление неработающей системы в разделе руководство по установке 1 (ищите его в индексе ) [ссылка на stable/i386].
Устранение неполадок : ‘grub-install /dev/sda’ failed.
Если параметр D-I «Переустановка загрузчика GRUB» завершается, сообщив об ошибке
Unable to install GRUB in /dev/sda Executing 'grub-install /dev/sda' failed. Это фатальная ошибка.
А также, если консоль логов d-i (Alt-F4) отобразит
grub-installer: /dev/scsi/host0/bus0/target0/lun0/disc does not have any corresponding BIOS Drive
Вы можете использовать следующий метод, чтобы переустановить GRUB. Выберите «Выполнить оболочку в Вашем корневом разделе» в меню восстановления d-i.
Найдите ваш корневой раздел :
fdisk -l Disk /dev/sda: 39.9 GB, 39996820992 bytes 255 heads, 63 sectors/track, 4862 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 111 891576 7 HPFS/NTFS /dev/sda2 167 230 514080 82 Linux swap /dev/sda3 231 784 4450005 83 Linux /dev/sda4 785 4862 32756535 f W95 Ext'd (LBA) /dev/sda5 785 4862 32756503+ 83 Linux
Переустановка загрузчика GRUB (руководство по grub)
Если у вас есть grub-legacy 2 и корневой раздел /dev/sda3, то вы можете повторно установить GRUB в MBR жесткого диска с помощью следующей команды:
sudo grub grub>root (hd0,2) grub>setup (hd0) grub>quit exit
Заметьте что (hd0,2) в grub-legacy это третий раздел.
Затем выберите «Перезагрузить систему», и все должно сработать.
- http://www.debian.org/releases/ (1)
- Если у вас есть stage1, stage2 и menu.lst файлы в /boot/grub/, то у вас, вероятно, рабочий grub-legacy. Если у вас есть несколько *.mod файлов и файл grub.cfg в /boot/grub/ это значит у вас новый grub (2)
Восстановление GRUB2 в Debian ( Восстановление GRUB2 в «Linux Debian Lenny/Squeeze/Wheezy» с помощью инсталляционного дистрибутивного диска. )
OS: «Linux Debian Lenny/Squeeze/Wheezy».
Application: «GRUB2 (Grand Unified Bootloader v2)».
Задача: восстановить работоспособность загрузчика операционной системы при широком спектре сбоев такового.
На практике я сталкивался с тремя причинами потери загрузчиком работоспособности: перезапись MBR (фрагмент первого сектора системного диска, в котором записан исполняемый код, запускающий загрузчик) в процессе установки операционной системы не распознающей альтернативные загрузчики (вроде MS Windows, например), невозможность получить доступ к файлам загрузчика в результате изменения принципа монтирования разделов (часто в результате попыток воздействовать на дисковую подсистему путём ручного изменения конфигурации) и сбой автоматического конфигурирования при кардинальном обновлении операционной системы и её подсистем (таким одно время грешил Debian Wheezy в комбинации MDADM+LVM+GRUB2, пока не вышел из тестового статуса). Для каждого из перечисленных сбоев есть свой упрощённый способ решения проблемы, из одного-двух этапов (в «интернетах» их часто путают), но в целях унификации методик, да и вообще, чтобы не забивать себе голову лишней информацией, я всегда восстанавливаю загрузчик одним и тем же проверенным и гарантирующим результат способом, который далее и опишу.
Во всех, без исключения, встретившихся мне руководствах по восстановлению загрузчика GRUB2 рекомендуют делать это с помощью так называемого LiveCD. Применительно для «Linux Debian» я, напротив, советую для восстановления GRUB2 использовать установочный дистрибутивный диск: например образ «netinstall» — он маленький, не более 250MB и не обременён излишествами, обладая в тоже время набором утилит достаточным для полноценной работы с файловой системой в рамках решения поставленной задачи. К тому же не всегда есть возможность срочно скачать и записать на загрузочный носитель (CD, DVD или Flash) образ LiveCD, тогда как инсталляционный образ практически всегда уже имеется.
Итак, мы оказались перед терминалом с сообщением о невозможности осуществить загрузку ОС «Linux Debian» по причине той или иной ошибки. Не будет здесь о причинах: главное, что мы приняли решение восстановить все компоненты загрузчика GRUB2 в основном сохранив его изначальную конфигурацию.
Загружаемся с инсталляционного образа «Linux Debian». Проходим этапы предварительной настройки установщика (пример здесь: Инсталляция «Linux Debian Squeeze»):
обязательно выбираем установку в экспертном режиме,
выбираем английский язык установки, раскладку en_US.UTF-8,
проходим этап сканирования доступных компонентов и их загрузки,
пропускаем этап настройки сети,
пропускаем этап настройки параметров пользователей,
проходим самый важный этап сканирования доступных дисковых устройств (здесь установщик загрузит необходимые для дальнейшей работы модули RAID, LVM и драйверы файловых систем).
Далее инсталлятор более не используем! Всё остальное делаем в командной строке. Переходим в командную строку используя соответствующий пункт установщика «Execute a shell» или элементарно уходим в соседний виртуальный терминал с помощью комбинаций клавиш «Alt+F2».
Суть дальнейших процедур заключается в том, что мы воссоздаём для утилит восстановления окружение файловой системы идентичное (в ограниченном смысле, в рамках решения поставленной задачи, разумеется) тому, что бывает в операционной системе запущенной обычным порядком и после отдаём указание переустановить компоненты загрузчика и перезаписать воссозданную конфигурацию подсистемы загрузки (как это бывает в случае обновления ядра операционной системы и перегенерации образа «initramfs», например).
Первым делом создаём точку монтирования, в которую в дальнейшем будем собирать требуемые нам разделы файловой системы:
Основа всего — корневая файловая система. Если точно неизвестно, на каком она разделе расположена, то следует воспользоваться утилитами просмотра списка доступных файловых ресурсов.
Для простых файловых систем может оказаться достаточным утилиты «fdisk»:
Для более современной GPT-разметки файловых систем может понадобится утилита «gdisk»:
Для файловых систем на LVM (Logical Volume Manager) следует посмотреть в сторону «blkid»:
После того, как найдено блочное устройство, на котором расположена корневая файловая система, монтируем её в нашу точку сборки (далее будем работать с LVM):
Естественно, что группа томов не обязательно будет называться «vg0», а логический том корневой файловой системы не обязательно будет называться «lvroot».
Чтобы предоставить утилитам восстановления информацию о реальном аппаратном и программном окружении, необходимо показать им содержимое динамически создаваемых директорий «/dev», «/proc» и «/sys»:
# mount —bind /dev /mnt/chroot/dev
# mount —bind /proc /mnt/chroot/proc
# mount —bind /sys /mnt/chroot/sys
Если директория «/boot» исполняемых и конфигурационных файлов загрузчика GRUB2 вынесена на отдельный раздел, то таковую также следует смонтировать в точку сборки.
Для простых файловых систем:
Для файловых систем на LVM:
Если загрузочная система UEFI (пришла на смену MBR, совместно с GPT-разметкой), до дополнительно подмонтировать и её раздел (пример для LVM):
После того, как все необходимые для восстановления загрузчика файловые системы оказались успешно смонтированы в точку сборки, изменяем для процессов текущего терминале (в котором мы в данный момент работаем) высшую точку корневой файловой системы, смещая её в заранее созданную точку сборки «/mnt/chroot». Тем самым мы изолируем запускаемые в дальнейшем процессы в своего рода «песочнице», заставляя воздействовать таковые на предоставленные им ресурсы, симулируя запущенную обычным образом операционную систему:
Уже в «песочнице» отдаём команду на установку GRUB2 (размещение исполняемых компонентов в MBR и директории «/boot», а также конфигурирование таковых):
В качестве завершающего штриха рекомендую запустить повторное сканирование и обновление конфигурации загрузчика, проверяя насколько успешно прошли все предыдущие процедуры. Это полезно для того, чтобы быть уверенным, что последующие обновление ядра операционной системы или установка драйверов, вызывающие перегенерацию образа «initramfs» и переконфигурацию загрузчика не приведут к неработоспособности GRUB2 по причине обнаружения какого-нибудь конфликта в файлах настройки:
После успешного завершения проверки очищаем дисковые «кэши» и перезапускаемся:
Восстановление загрузчика GRUB2 можно считать завершённым.
Так получилось, что за три-четыре года в процессе выбора наиболее эффективной конфигурации файловой системы у меня образовалось пара десятков серверов с не совсем типовыми комбинациями блочных устройств, разделов, прослоек абстракций и загрузчиков. По мере наличия свободного времени и энтузиазма я привожу всё серверное хозяйство к единому образу, но с учётом того, что на мне висит ещё сотня других серверов — дело это не быстрое. Потому считаю необходимым выложить этот мануал здесь: может статься что не мне уже придётся исправлять мои старые ошибки.
Поблагодарить автора ( сделайте свой денежный вклад в хорошее настроение )
Заметки и комментарии к публикации:
Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )
Recover GRUB
Imagine for any reason you have any other OS installed next to Debian. And for any reason you need to reinstall it because is really broken. Again, imagine that OS has a crappy installation and overwrites the disk MBR or GPT to own the full computer. What’s next? Reinstall Debian? No.
In any case, you can use SuperGRUB, a boot utility that can restore and repair overwritten and misconfigured GRUB installs or directly boot various operating systems.
Standard procedure
The Debian Installer (DVD, netinst CD, floppy, netboot, etc.) can be used to rescue systems, for example if they fail to boot after an upgrade. You should read and follow the instruction «Recovering a Broken System» section of the Installation Guide 1 .
Troubleshooting : ‘grub-install /dev/sda’ failed.
If D-I’s «Reinstall GRUB boot loader» option fails, with error message
Unable to install GRUB in /dev/sda Executing 'grub-install /dev/sda' failed. This is a fatal error.
Also, the d-i log console (Alt-F4) displays
grub-installer: /dev/scsi/host0/bus0/target0/lun0/disc does not have any corresponding BIOS Drive
You can still use the following method to reinstall GRUB. Choose «Execute a shell in Your root partition» in the d-i rescue menu.
Locate your root partition :
fdisk -l Disk /dev/sda: 39.9 GB, 39996820992 bytes 255 heads, 63 sectors/track, 4862 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 111 891576 7 HPFS/NTFS /dev/sda2 167 230 514080 82 Linux swap /dev/sda3 231 784 4450005 83 Linux /dev/sda4 785 4862 32756535 f W95 Ext'd (LBA) /dev/sda5 785 4862 32756503+ 83 Linux
Reinstall GRUB bootloader (grub manual)
If you have grub-legacy 2 and your root partition is /dev/sda3 then you can re-install grub in the MBR of your hard drive by typing the following commands :
sudo grub grub>root (hd0,2) grub>setup (hd0) grub>quit exit
Note that in grub-legacy (hd0,2) is the third partition.
Then choose «Reboot the system», everything should be fine.
- http://www.debian.org/releases/ on that page click on the used release > click the link «Installation Guide» > click the link for the used architecture (1)
- If you have stage1, stage2 and menu.lst files in /boot/grub/ then you probably have a working grub-legacy. If you have several *.mod files and a grub.cfg file in /boot/grub/ then you have the new grub. (2)