Готовим образ 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