29 сент. 2014 г.

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