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
попасть в меню загрузки, но я бы предполагается что если бы я с самого начала правильно ввел команду, он бы сразу увидел меню.
Итак, моя критическая система работает нормально. Я смогу перезагрузить его только один раз в ближайшем будущем, поэтому я хотел бы позаботиться об этом. правильно.
Итак, мои вопросы:
grub-install
? Я сейчас в ужасе от этого.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