Архив метки: IPMI

Готовим образ ISO с DOS для удаленной прошивки BIOS

К сожалению, не все платы Supermicro поддерживают загрузку через IPMI с образов HDD. Не все платы поддерживают Supermicro Update Manager, который является отдельным платным продуктом, в использовании которого в небольших средах до десятка серверов нет реальной необходимости.

Остается лишь поддерживаемый всеми IPMI модулями ISO, изготовлением которого мы и займемся. Для унификации со способом загрузки разных полезных вещей будем использовать тот же загрузчик Syslinux, т.е. его разновидность под названием ISOLinux. Загрузчик выводит меню и при помощи модуля memdisk грузит нужный дисковый образ. Это не самый простой способ в плане первоначальных затрат времени, но в дальнейшем будет легко использовать ту же конфигурацию и образы для загрузки через PXELinux.
Процесс настройки ISOLinux подробно описан в Вики по Syslinux, но пути к некоторым файлам в дистрибутиве Syslinux в последних версиях изменились.
1. Качаем последний дистрибутив Syslinux (6-я ветка, последняя на сегодняшний день): ftp://kernel.org/pub/linux/utils/boot/syslinux/6.xx/syslinux-6.02.tar.bz2
2. Создаем каталоги cd_root/isolinux и cd_root/kernel. В cd_root/isolinux копируем файлы из дистрибутива:
bios/core/isolinux.bin
bios/com32/elflink/ldlinux/ldlinux.c32
bios/com32/menu/menu.c32
bios/com32/menu/vesamenu.c32
bios/com32/chain/chain.c32
bios/com32/lib/libcom32.c32
bios/com32/libutil/libutil.c32
В cd_root/kernel копируем bios/memdisk/memdisk
3. Готовим образ HDD с DOS. Образы копируем в cd_root/images
4. Пример конфигурационного файла cd_root/isolinux/isolinux.cfg:

DEFAULT vesamenu.c32
ALLOWOPTIONS 0
PROMPT 0
TIMEOUT 300
ONTIMEOUT local

MENU TITLE boot menu
MENU BACKGROUND splash.png

MENU COLOR border 30;44 #00000000 #00000000 none
MENU COLOR unsel 37;44 #90ffffff #00000000 std
MENU COLOR sel 7;37;40 #70ffffff #20ff8000 all
MENU COLOR hotsel 1;7;37;40 #e0ffffff #20ff8000 all

MENU BEGIN tests
MENU TITLE Tests

LABEL MAINMENU
MENU LABEL ^back
MENU EXIT

LABEL memtestplus5
MENU LABEL Memtest86+ 5.01
kernel /kernel/memdisk
initrd /images/memtest86.iso.gz
append iso

MENU END

MENU BEGIN smc_bios
MENU TITLE Supermicro BIOS Updates
LABEL MAINMENU
MENU LABEL ^back
MENU EXIT

MENU BEGIN X10S
MENU TITLE X10S

LABEL MAINMENU
MENU LABEL ^back
MENU EXIT

LABEL X10SLD
MENU LABEL X10SLD v 2.0
kernel /kernel/memdisk
append initrd=/images/smc/x10s/x10sld.gz

MENU END

5. Создаем ISO:

mkisofs -o output.iso 
-b isolinux/isolinux.bin -c isolinux/boot.cat
-no-emul-boot -boot-load-size 4 -boot-info-table
cd_root

6. Проверяем. Видим меню, грузим нужный пункт, получаем DOS:

Автор: Dmitry Nosachev

Подготовка образов HDD с DOS для IPMI

Как удаленно прошить BIOS системной платы или контроллер через IPMI?
В большинстве случаев для этого нужен DOS, но некоторые контроллеры нужно шить в EFI shell. При наличии физического доступа к серверу всегда есть дежурная флешка с DOS. Для удаленного способа нам придется подготовить образ загрузочного HDD с DOS, это проще и удобнее, чем готовить ISO-образ. IPMI в современных платах Supermicro может использовать в качестве Virtual Media образы HDD.
Тривиальная задача, но начинающих администраторов может поставить в тупик. Для начала нам понадобится дистрибутив MSDOS (некоторые платы не шьются под FreeDOS) и любой гипервизор. В данном случае будем использовать VirtualBox, но подойдет, естественно, любой, где запускается DOS и с которым вам удобно работать. Версию MSDOS лучше всего взять с поддержкой длинных имен, например 7.1.

Создаем ВМ с диском, достаточным для размещения образа BIOS. Размер образа для современных плат Supermicro X9 — 16МиБ, можно создать диск с небольшим запасом — 20МиБ. Добавляем установочный ISO c DOS.

Уверен, что с такой увлекательной и сложной задачей, как установка DOS вы можете справиться самостоятельно. Финальная задача — получить удобный способ работы с образом: добавлять/убирать из него файлы с прошивками. IMHO, это удобно делать в Linux. Для начала нужно конвертировать образ диска из формата VDI в простой «сырой» образ:

VBoxManage clonehd -format RAW dos.vdi dos.raw

Далее возникает небольшая проблема. Сразу смонтировать образ не получится, так как монтировать нужно не диск целиком, а раздел на нем. Для этого нужно узнать его смещение. Сделать это можно при помощи parted. Командой unit задаем единицу измерения (в байтах) и командой print выводим информацию о разделах.

[root@stand ~]# parted dos.img
GNU Parted 2.1
Using /root/dos.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit B
(parted) print
Model:  (file)
Disk /root/dos.img: 20971520B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start End Size Type File system Flags
1 32256B 20643839B 20611584B primary fat16 boot

(parted)

Нужное смещение — 32256 байт. Можно монтировать:

mkdir /mnt/disk1
mount -o loop,offset=32256 -t vfat dos.img /mnt/disk1

Копируем прошивки и еще какие-нибудь полезности (например, VC или NC, прописываем автозапуск в autoexec.bat), размонтируем образ, и можно грузиться:

При большом количестве администрируемых серверов можно грузить образы при помощи PXELinux, благо он поддерживает загрузку сжатых через gzip образов.

Автор: Dmitry Nosachev