Загружаем тестовое ядро linux единожды (once) с помощью GRUB. | Выделенный сервер своими руками

Загружаем тестовое ядро linux единожды (once) с помощью GRUB.

Частенько перед многими системными администраторами и владельцами выделенных серверов (dedicated servers) linux возникает задача одбновления ядра операционной системы. Проблема заключается лишь в том, что 100%-ой уверенности в нормальном рестарте системы с новым ядром дать не может никто :-) Хорошо когда консоль сервера под руками и мы можем просто перезагрузит линукс и в меню GRUB выбрать рабочее ядро. Еще очень хорошо, когда например у админа под руками есть такая чудная вещь как KVM over ip . Тогда никаких проблем с досупом к консоли тоже нет. Но что делать если датацентр далеко, физического доступа туда нет, сервер бюджетный и из доступных фишек есть только удаленный ребут (что тоже есть не у всех). Вот в этом нам и поможет наш загрузчик GRUB.

На данный момент практически у всех RPM based дистрибутивов linux в качестве загрузчика операционных чичтем установлен GRUB. В любом случае разговор будет про него. Описания инсталляции и настройки GRUB достаточно много на русском языке. Вот например тут.

Итак после установки нового ядра файл /etc/grub.conf выглядит примерно следующим образом:

default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
#вот это номер "0"
title CentOS (2.6.8-022stab061.1)
root (hd0,0)
kernel /vmlinuz-2.6.8-022stab061.1 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.8-022stab061.1.img
#вот это номер "1"
title CentOS_ServerCD (2.6.9-42.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.ELsmp ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-42.ELsmp.img
#вот это номер "2"
title CentOS_ServerCD-up (2.6.9-42.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.EL ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-42.EL.img

Мы видим, что перечислено три варианта загрузки. Причем нумерация начинается с цифры "0".
Таким образом default=1 означает загрузку по умолчанию варианта:
title CentOS_ServerCD (2.6.9-42.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-42.ELsmp ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.9-42.ELsmp.img

Предположим что нам необходимо единожды загрузить сервер с вариантом загрузки "0". Заходим в консоль и набираем:
echo "savedefault --default=0 --once" | grub --batch
после чего перегружаем сервер командой:
reboot
После чего сервер уходит на перезагрузку и мы затая дыхание ждем пока он как космический аппарат вернется из зоны тени :-) Если новое ядро нормально заработало, то через пару минут мы спокойно заходим в консоль, набираем
uname -a и видим версию нашего нового ядра. После чего, если нас все устраивает, изменяем файл /etc/grub.conf. Меняем в нем default=1 на default=0, после чего во время следующей перезагрузки загрузиттся новое ядро. Если же сервер остался недоступен , то его необходимо удаленно перезагрузить. Благо такая функция у нормальных продавцов бесплатна. После ребута сервера загрузится наше старое оригинальное ядро (которое в нашем случае имеет номер "1").
Таким образом можно максимально безболезненно удаленно заменить ядро и протестировать его нормальную загрузку.

Не часто найдешь материал на

Не часто найдешь материал на эту тему. Будем ждать продолжения...