LINUX.ORG.RU
ФорумAdmin

Восстановление grub на сервере с ядром OVZ,не пойму что происходит.


0

2

Сервер с CentOS5.4 на котором рабочим было ядро от OpenVZ после очередной перезагрузки не загрузился. Ядро от OpenVZ обновлял раза два.
На экране типа GRUB_ и мертвяк.
по такой примерно инструкции (в инете нашел) восстанавливаю grub
1. Загрузка с установочного диска CentOS5.7
2. Выбор пункта: F5 rescue mode
3. Выбор пункта: English
4. Выбор пункта: Local CD/DVD
5. Отказался от setup networking
6. Выбор пункта: Continue
7. Сообщение: /mnt/sysimage
8. Выбор пункта: shell Start shell
9. Консоль ввод: chroot /mnt/sysimage
10. Консоль ввод: grub
11. Консоль grub'a ввод : find /boot/grub/stage2

grub вывод : root (hd0,2)

12. Консоль grub'a ввод : root (hd0,2)
13. Консоль grub'a ввод : setup (hd0)
14. Консоль grub'a ввод : quit
15. Консоль ввод: exit
16. Консоль ввод: exit
17: Выбор пункта: reboot

После загрузки сервера появляется синий экран с предложением выбора ядра для загрузки, но последнего ядра «title OpenVZ» там нет !!!
Грузится по умолчанию «title CentOS (2.6.18-164.15.1.el5.028stab068.9PAE)»

more 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/sda3
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title OpenVZ (2.6.18-308.el5.028stab099.3PAE)
root (hd0,0)
kernel /vmlinuz-2.6.18-308.el5.028stab099.3PAE ro root=LABEL=/ selinux=0
initrd /initrd-2.6.18-308.el5.028stab099.3PAE.img
title CentOS (2.6.18-164.15.1.el5.028stab068.9PAE)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.15.1.el5.028stab068.9PAE ro root=LABEL=/
initrd /initrd-2.6.18-164.15.1.el5.028stab068.9PAE.img
title CentOS (2.6.18-164.15.1.el5PAE)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.15.1.el5PAE ro root=LABEL=/
initrd /initrd-2.6.18-164.15.1.el5PAE.img
title CentOS (2.6.18-128.el5PAE)
root (hd0,0)
kernel /vmlinuz-2.6.18-128.el5PAE ro root=LABEL=/
initrd /initrd-2.6.18-128.el5PAE.img

Пробовал переустановить ядро от openvz, но никакого эффекта - загрузчик само собой не грузит ядро, которое было установлено последним, а грузит второе из (grub.conf) и даже не предлагает для загрузки последнее яdро от OpenVZ
т.е. в конфиге grub нужно ядро есть но оно не грузится!!!
Как такое случилось и что посоветуете изменить, сделать?

★★★

Похоже, ты показываешь не тот grub.conf, который реально используется. Где он лежит? И /boot у тебя отдельный раздел?

Chumka ★★★ ()
Ответ на: комментарий от Chumka

/boot - отдельный раздел /dev/sda1
/ - /dev/sda3

я показал вот этот /boot/grub/grub.conf, который после загрузки на разделе /boot(/dev/sda1).
И мучаюсь вопросом - откуда grub взял конфиг и мне его показывает?
где еще может храниться grub.conf на загруженной системе теоретически?

Vlad-76 ★★★ ()
Ответ на: комментарий от Vlad-76

Буду гадать дальше:

1. Может на / есть каталог /boot (не раздел, а каталог!) в котором свой grub.conf ? 2. А может menu.lst и grub.conf разные?

Chumka ★★★ ()
Ответ на: комментарий от Vlad-76

Centos 5.4, если груб оттуда, то возможно grub.cfg он еще не умеет (все ж дистр старый), тогда попробуй посмотреть где-то рядом menu.lst.

Попробуй примонтировать свой рутовый раздел куда-нибудь еще и посмотреть, нет ли там в /boot чего-то

BaBL ★★★★★ ()
Ответ на: комментарий от Chumka

на / нет каталога /boot, в системе есть только раздел /boot
ls -la /boot/grub/menu.lst
lrwxrwxrwx 1 root root 11 Apr 2 2010 /boot/grub/menu.lst -> ./grub.conf
типа ссылка одно на другое

Vlad-76 ★★★ ()
Ответ на: комментарий от BaBL

а ничего что я грузился и восстанавливал grub с установочного диска CentOS5.7?

Vlad-76 ★★★ ()
Ответ на: комментарий от Vlad-76

/boot - отдельный раздел /dev/sda1

В нумерации груба это (hd0,0)

/ - /dev/sda3

В нумерации груба это (hd0,2)

Теперь становится понятно, как получилось:

11. Консоль grub'a ввод : find /boot/grub/stage2
grub вывод : root (hd0,2)

Это — не тот раздел. На разделе /boot файл назывался бы /grub/stage2, а не /boot/grub/stage2. А раз раздел не тот, то и grub.conf не тот.

По хорошему надо сделать в консоли груба:

 root (hd0,0)
 setup (hd0)
 quit
и всё должно заработать.

Но вообще надо ещё разобраться, почему там два набора grub-ов. Похоже кроме отдельного boot-раздела, тот каталог /boot в который он должен монтироваться на корневом разделе, тоже не пустой. Остаться должен только один, либо надо убрать лишний раздел, либо почистить содержимое каталога /boot на корневом разделе.

anonymous ()
Ответ на: комментарий от Vlad-76

смогу подмонтировать не скоро, сервер в продакшене

Это можно проверить без ребута:

mount /dev/sda3 /mnt/myroot
(да, один раздел можно монтировать одновременно в несколько каталогов)

anonymous ()
Ответ на: комментарий от anonymous

но проверить то без ребута сервера все равно не получиться ))
спасибо за ответы, буду пробовать

Vlad-76 ★★★ ()
Ответ на: комментарий от anonymous

Подмонтировал раздел / и на этом разделе оказалась дирректория /boot c тем самым искомым содержимым

# cd /mnt/myroot/boot/grub
# more 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/sda3
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-164.15.1.el5.028stab068.9PAE)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.15.1.el5.028stab068.9PAE ro root=LABEL=/
        initrd /initrd-2.6.18-164.15.1.el5.028stab068.9PAE.img
title CentOS (2.6.18-164.15.1.el5PAE)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.15.1.el5PAE ro root=LABEL=/
        initrd /initrd-2.6.18-164.15.1.el5PAE.img
title CentOS (2.6.18-128.el5PAE)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-128.el5PAE ro root=LABEL=/
        initrd /initrd-2.6.18-128.el5PAE.img
Только как сие могло случиться если ставил через инсталлятор CentOS?
Это он так чудит?

Vlad-76 ★★★ ()
Ответ на: комментарий от Vlad-76

Подмонтировал раздел / и на этом разделе оказалась дирректория /boot c тем самым искомым содержимым
как сие могло случиться если ставил через инсталлятор CentOS?

Могут быть разные причины. Например, отдельный раздел для /boot был создан заранее и не был указан при установке. Или там до этого уже стояла центось, и раздел остался от неё, скажем, после апгрейда с CentOS5 до CentOS6. Или кто-то копировал/бакапил файлы в /boot, забыв смонтировать туда раздел.

Вариантов придумать можно много. Но какая теперь разница? Теперь надо их почистить, чтобы остался только один, и с него поставить груб.

anonymous ()
Ответ на: комментарий от anonymous

А такой вопрос
После того как система загрузилась с параметрами загрузчика из /boot который как оказалось был на разделе /, ведь произошло перемонтирование раздела /boot в дирректорию /boot.
И после этого я переустановил последнее ядро OVZ
Почему переустановка ядра OVZ не помогла решить проблему? именно в этот момент уже был доступен раздел /boot, а не директория /boot c раздела /. И загрузчик должен был взять содержимое menu.lst из правильного места
Так оно ведь и происходило все это время - ведь я без проблем обновлял ядра OVZ

Vlad-76 ★★★ ()
Ответ на: комментарий от Vlad-76

Почему переустановка ядра OVZ не помогла решить проблему?

В отличие от lilo, grub не нужно переустанавливать после изменения его конфига. [Пере]установка ядра всего лишь меняет конфиг. Она не переустанавливает загрузчик. А новое ядро записалось не в тот файл, который читался загрузчиком.

anonymous ()
Ответ на: комментарий от Chumka

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

Vlad-76 ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.