ESXi kickstart2: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 116: | Строка 116: | ||
boot |
boot |
||
</PRE> |
</PRE> |
||
+ | |||
+ | ==Загрузка образа ESXi== |
||
+ | При установке с флешки разложено некоторое число граблей, остановлюсь на них чуть подробнее. |
||
+ | <BR> |
||
+ | В интеренте полно примеров как кастомизировать образ, в 2-х словах |
||
+ | * смотнировать оригинальны куда-то в /mnt/esxi (moount your-esxi-iso /mnt/esxi -o loop) |
||
+ | * скопировать содержимое /mnt/esxi в рабочуюю директорию. |
||
+ | * править содержимое |
||
+ | * собрать назад в диск примерно так |
||
+ | <PRE> |
||
+ | ionice -n 7 mkisofs -allow-limited-size -relaxed-filenames -J -R -o ./esxi.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./NEW_ISO_WITH_ADDONS |
||
+ | </PRE> |
||
+ | |||
+ | Для того что бы ESXi из образа на диске корректно нашла файлик кикстарта в boot.cfg исправляем |
||
+ | <PRE> |
||
+ | bootstate=0 |
||
+ | title=Loading ESXi installer |
||
+ | kernel=/tboot.b00 |
||
+ | kernelopt=runweasel |
||
+ | modules=/b.b00 ks=usb --- /useropts.gz --- /k.b00 <skipped list> |
||
+ | build= |
||
+ | updated=0 |
||
+ | </PRE> |
||
+ | т.е. добавляем |
||
+ | <PRE> |
||
+ | ks=usb |
||
+ | </PRE> |
||
+ | МЕЖДУ /b.b00 и --- /useropts.gz |
Версия 13:18, 7 июля 2012
ESXi - автоматическая установка с флешки с виртуаьными машинами
Идея такая:
Recovery procedure should allow customer to completely reset device to factory settings including erasing of any secure keys/setting/etc.
To perform factory reset user should power off the appliance and insert any FAT16/FAT32 USB Flash drive with “factory.rst” file on it.
This file acts as trigger to the system restore service and may not contain any data.
After that customer should power-on the appliance and wait for shutdown. When shutdown was happened customer should remove USB flash drive.
At that point appliance should be at the factory state and should be available to configure after powering it on.
Другими словами - если есть файлик на второй флешке - то ставить вместе со всем барахлом. Если нет - грузиться с винта. Забавно.
Маленькое отсупление - я бы убил этих инженегров из VMware inc. - судя по их документации так сделать нельзя. Но если нельзя а очень хочется ...
Итак, задача состоит из нескольких частей:
- Настроить загрузчик так что бы он определял наличие файла, и на основе этого принимал решние
- Собрать образ ESXi с виртуальными машинами в нем самом
- Написать скрипт установки
На словах все довольно просто, но - грузиться надо с образа ISO а не с "настоящего" диска и это порождает кучу проблем.
- подмонтировать этот образ нельзя - эти
уродытоварищи не включили никаких нормальных утилит, а то что есть - не позволяет работать с образами (модуль loop отсутвует) - нет комманды mount - все что можно монтирует автомаунт.
Потому, даже когда передается управление образу ISO проблемы в том что
- скрипт кикстата лежит обычно внутри образа и недоступен (монтировать USB НЕЛЬЗЯ, а даже если и можно было бы - то нельзя смонтировать образ ISO.) А стандартная ссылка cdrom:/ks.cfg указывает на ФИЗИЧЕСКИЙ привод, где никакого файла конечно же нет.
- образы виртуалок можно положить куда угодно на флешку, но монтировать USB Drive нельзя. Т.е. вроде вот они, близко - но не доставть.
Но, есть такое слово - надо.
Загрузка
Я уже описывал chain load http://wiki.sirmax.noname.com.ua/index.php/Grub_Chain_load - достаточно подробно. В этом случае я делаю все то же самое, за исключением того что флешку разбиваю на те же 2 раздела но все файлы размещаю на 1-м (vfat)
# fdisk -l /dev/sdb Disk /dev/sdb: 8032 MB, 8032091136 bytes 248 heads, 62 sectors/track, 1020 cylinders, total 15687678 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00035e84 Device Boot Start End Blocks Id System /dev/sdb1 2048 6293503 3145728 b W95 FAT32 /dev/sdb2 6293504 15687677 4697087 83 Linux
# ls -1 boot esxi.iso ks.cfg
В boot на первом разделе помещаю grub и grub4dos. Обратить внимание , что меню для grub4dos лежит в папке /boot/grub хотя сам он - в /boot/grub4dos. это связано с тем что пути поиска menu.lst захардкожены.
Итого, имеем:
grub.cfg
cat boot/grub/grub.cfg insmod loopback.mod set timeout=3 function check_usb { if [ -f (hd1,1)/factory.rst ]; then echo "Please remove USB drive with factory.rst file. " sleep -v 5 check_usb fi } menuentry "Boot " { # check for flag echo "Check for recovery mode" if [ -f (hd0,1)/recovery ]; then echo "Recovery file found, Ububtu will be loaded in 5 seconds" sleep -v 5 set isofile="/ubuntu-11.10-desktop-i386.iso" loopback loop (hd0,1)$isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile nomodeset initrd (loop)/casper/initrd.lz else if [ -f (hd1,1)/factory.rst ]; then echo "factory.rst file was found ... appliance will be reseted to factory defaults in 5 secons" sleep -v 5 check_usb # Re-install echo "Re-install mode" set root=(hd0,1) linux16 /boot/grub4dos/grub.exe else # Normal boot echo "Will boot from hard drive in 5 seconds" sleep -v 5 set root=(hd2) chainloader +1 boot fi fi }
В качестве рековери диска можно применять любой - хоть gentoo хоть убунту хоть что угодно. Для тестов использовал что под рукой было.
Если на втором диске (hd1,1) находим нужный файлик - переходим в режим инсталляции и просим вытащить флешку с этим файликом. Как только флешка пропала - продолжаем загрузку grub4dos --> iso.
Думаю, тут все предельно ясно - безусловная передача управления образу. Обратить внимание что образ должен быть НЕ фрагментирован!
color blue/green yellow/red white/magenta white/magenta timeout 3 default /default title ESXi kickstart install map (hd0,0)/esxi.iso (0xff) map --hook chainloader (0xff) boot
Загрузка образа ESXi
При установке с флешки разложено некоторое число граблей, остановлюсь на них чуть подробнее.
В интеренте полно примеров как кастомизировать образ, в 2-х словах
- смотнировать оригинальны куда-то в /mnt/esxi (moount your-esxi-iso /mnt/esxi -o loop)
- скопировать содержимое /mnt/esxi в рабочуюю директорию.
- править содержимое
- собрать назад в диск примерно так
ionice -n 7 mkisofs -allow-limited-size -relaxed-filenames -J -R -o ./esxi.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./NEW_ISO_WITH_ADDONS
Для того что бы ESXi из образа на диске корректно нашла файлик кикстарта в boot.cfg исправляем
bootstate=0 title=Loading ESXi installer kernel=/tboot.b00 kernelopt=runweasel modules=/b.b00 ks=usb --- /useropts.gz --- /k.b00 <skipped list> build= updated=0
т.е. добавляем
ks=usb
МЕЖДУ /b.b00 и --- /useropts.gz