Назад | Перейти на главную страницу

Случайно запустил grub-install неправильно, теперь есть подсказка grub, но нет меню

tl; dr: Я толстопалый grub-install, затем "правильно" повторно выпустил его, нацеливая файловую систему / boot на /dev/sda1 но это не чтение grub/grub.conf если я прямо не скажу, где искать, используя инструменты подсказки grub. Как мне это исправить?


У меня критически важная система CentOS 5 с несколькими жесткими дисками, которые не поддерживают горячую замену. Между прочим, это плохая идея.

Первый диск содержит / boot, затем два зеркальных раздела mdraid для ОС и данных. Второй диск содержит только два раздела mdraid.

Первый диск очень медленно умирает, поэтому я добавил третий диск, чтобы подготовиться к неизбежному. Я скопировал схему разделов первого диска, добавил его в зеркало mdraid, затем использовал dd клонировать sda1 в sdc1.

Прошлой ночью у меня было окно обслуживания оборудования, и мне все равно нужно было перезагрузить машину, поэтому я решил воспользоваться возможностью переключить sdc на загрузочный диск. Поскольку я скопировал только схему разделов и первый раздел, а не весь диск, я решил, что sdc не загрузочный. Поэтому после настройки fstab я сделал sdc1 загрузочным и использовал grub-install чтобы grub мог обо всем позаботиться.

Только я набрал команду и набрал grub-install /dev/sda.

Он дал мне предупреждение о том, что диск не найден в списке дисков BIOS, поэтому я предполагается что он не сделал ничего вредного. Я повторно выдал команду нацеливания /dev/sda1 вместо этого, но получил ту же ошибку. Хм. Ну да ладно, наверное, ничего не случилось, да? Да. Нет.

Когда система не восстанавливалась после перезагрузки (снова и снова печатая GRUB GRUB GRUB на консоли), я знал, что облажался. Видимо то, что я сделал, раздражающе распространенный.

Я загрузил машину в live CD, использовал dd чтобы уничтожить MBR как на sda, так и на sdc, смонтировал копию sda1 / boot, выдал верный команда (которая включает запрос на проверку списка дисков и указание фактического местоположения файловой системы) и перезагрузка. То, что возникло, было оболочкой личинки. Я смог выпустить root (hd0,0) и configfile grub/grub.conf попасть в меню загрузки, но я бы предполагается что если бы я с самого начала правильно ввел команду, он бы сразу увидел меню.

Итак, моя критическая система работает нормально. Я смогу перезагрузить его только один раз в ближайшем будущем, поэтому я хотел бы позаботиться об этом. правильно.

Итак, мои вопросы:

  1. Можно ли исправить текущую конфигурацию boot-into-grub-but-not-see-any-configuration без повторного запуска grub-install? Я сейчас в ужасе от этого.
  2. Если мне нужно вызвать grub-install опять же, каким должен быть правильный путь? я использовал grub-install --recheck --root-directory=/path/to/sda1/boot /dev/sda1 чтобы привести его в текущее состояние.

У меня аналогичная конфигурация: обычно я создаю / загружаюсь на зеркальном разделе mdraid, а затем устанавливаю grub на MBR каждого отдельного диска, чтобы сервер мог загрузиться в случае сбоя любого диска, остальное (т.е. все, кроме этапа программы MBR) все равно копируется с mdraid,

Просто беги

grub-install --recheck /dev/sda
grub-install --recheck /dev/sdb

Вам нужно установить grub на MBR, а не на первый раздел. Он загрузит файлы stage 1.5 и загрузит ядро, которое переключится в корень разделов mdraid и т. Д.

Вот как выглядит моя конфигурация, на самом деле делать особо нечего, да, это Centos 6, но это то же самое:

карта устройства

[root@main ~]# cat /boot/grub/device.map 
# this device map was generated by anaconda
(hd0)     /dev/sda
(hd1)     /dev/sdb
(hd2)     /dev/sdc
(hd3)     /dev/sdd

menu.lst

[root@main ~]# cat /etc/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_main-lv_main_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/md0
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title CentOS (2.6.32-358.14.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-358.14.1.el6.x86_64 ro root=/dev/mapper/vg_main-lv_main_root rd_NO_LUKS LANG=en_US.UTF-8 rd_MD_UUID=7d8cff6b:744c0786:023226e9:536570ed rd_LVM_LV=vg_main/lv_main_root rd_LVM_LV=vg_main/lv_main_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM quiet
        initrd /initramfs-2.6.32-358.14.1.el6.x86_64.img