Запускаем ESX4i на офисных компах без VMware Workstation

За статью спасибо virus’у…

dark past, pathetic present and uncertain future

подумалось в далеком 2006 году

при первом взгляде на ESX

(цензурный вариант)

На правах предисловия

Блеск

Как всем известно, ESXi официально поддерживает установку на строго определенный набор серверов. Ядро гипервизора не поддерживает подавляющее число железок, которые ставят в обычные компы (whitebox), и не поддерживает 100 мегабитные сетевые карты,что создает серьезную головную боль людям, которым «очень хочется».

Все началось, как это всегда все начинается, Я записал образ на флешку, записал в раздел 5 на флешке файл oem.tgzс драйверами и прописанными pciid, воткнул флешку в комп и со словами «поехали» нажал на кнопку «power». Система радостно посчитала свои 4 гигабайта, перешла к загрузке с флешки и радостно констатировала «cannot get disk partameters».

На этом приятная и знакомая часть закончилась, и началось погружение в кишки гипервизора.

При беглом осмотре выяснилось, что загрузчиком выступает какой-то древний syslinux (выпуска аж от сентября 2005 года, впрочем виноваты в этом RedHat, так как именно эта версия идет в комплекте RHEL5).

Собственно сам syslinux запускает модуль загрузчика гипервизора «safeboot.c32», этот модуль выбирает раздел с которого грузить и передает ядру нужные параметры.

Логичное и простое решение – обновляем древний syslinux, однако это не срабатывает! Проблема оказалась глубже – после обновления syslinuxту же самую ошибку стал выдавать модуль «safeboot.c32». После изучения доступных частей исходников (ну вы же не думали что там все выложено?) оказалось, что он собран на базе syslinuxверсии 3.63 выпуска апреля 2008 года.

Значит будем жертвовать возможностью отката обновления. Меняем активную партицию на 5 (раздел гипервизор1), и ставим туда загрузчик syslinux /dev/sdc5

Пишем строку загрузки в syslinux.cfg

default mboot.c32 vmkboot.gz — vmk.gz — sys.vgz — cim.vgz — oem.tgz — license.tgz — mod.tgz

Ура, все грузится. Правда так же медленно, как и всегда. Судя по всему, контроллер не переводится в режим usb2 ни средствами syslinux, ни программистами vmware, а жаль.

Сразу же выяснилось что не заработал встроенный SATA-контроллер, пришлось править oem.tgz, внутри этого архива есть файл etc/vmware/ simple.map. Нужно взять идентификаторы от SATA и IDE-контроллера своей материнки (проще всего это посмотреть на экране загрузки, когда БИОС перечисляет все устройства и их идентификаторы). Прописывать нужно следующим образом:

1002 4393 SB700/SB800 SATA Controller [RAID5 mode].

Добавляем такую строку:

1002:4393 0000:0000 storage ahci.o

1002 439c ATI Technologies Inc SB700/SB800 IDE Controller

Добавляем такую строку:

1002:439c 0000:0000 storage pata_atiixp.o

После перезагрузки с новой версией oem.tgz диски видны, но оказывается что настройки перестали сохранятся на флешку, придется входить внутрь.

… и нищета

Первое что бросается в глаза – это так называемый visorfs. Судя по тому, что я увидел, это самый тупой ramdisk. Ужасает то, что память выделяется статически, и что содержимое не сжимается. Сразу на ум приходит вопрос «а почему нельзя было использовать Squashfs+unionfs?» но опыт задавания «неудобных» вопросов в форуме vmware подсказывает, что вопрос останется без ответа (по крайней мере, со стороны «авторов»).

Таким образомв текущий момент нам придется смирится, с тем фактом, что 256М (или 30 долларов, в случае регистровой памяти) для _нас_ «просто потеряны» на КАЖДОМ хосте.

По результатам анализа скриптов инициализации оказалось, что у каждой партиции есть UUID, который хранится внутри раздела (16 байт по смещению 528), и показывается при монтировании раздела:

FilesystemSizeUsed Available Use% Mounted on

visorfs220.0M182.5M37.5M83% /

vfat249.7M61.1M188.7M24% /vmfs/volumes/386a41e4-ff1587ba-1385-2feaeed494ad

vfat249.7M4.0k249.7M0% /vmfs/volumes/8c7e2fe8-f4c58d9f-34d3-8553ffee79a0

vfat285.9M242.6M43.3M85% /vmfs/volumes/e00f98e1-2bcc0c91-e7a2-3487611c1557

значит нужный нам раздел 386a41e4-ff1587ba-1385-2feaeed494ad

К сожалению, указывать UUID надо в другом виде, в итоге мы получаем такую строку:

default mboot.c32 vmkboot.gz bootUUID=e4416a38ba8715ff85132feaeed494ad — vmk.gz — sys.vgz — cim.vgz — oem.tgz — license.tgz— mod.tgz

Собственно сам результат работы, в виде образа флешки можно скачать тут [http://cybersec.ru/files/esxi-4u1-bfhwdbg.7z]

Флешка обладает возможностью грузится на тех материнках, где оригинальный ESXi не грузился, поддерживает сетевуху rtl8169(и совместимые с ней) и пишет на экран логи при загрузке.

Архив файлов гипервизора можно скачать тут [http://cybersec.ru/files/rootfs.7z].

Архив oem.tgz можно скачать тут [http://cybersec.ru/files/oem.tgz]

Послесловие

Было бы неплохо, если бы кто-то придумал:

  1. как можно запихать гипервизор в Squashfs
  2. способ контролировать, куда девается память в системе гипервизора (т.е. та которая НЕ тратится на виртуалки)

24 thoughts on “Запускаем ESX4i на офисных компах без VMware Workstation”

  1. Круто! http://www.vm-help.com/ – по мотивам тутошных рекомендаций, но с анализом загрузчика.

    А как вам идея выковырять гипервизор и воткнуть его на полноценный дистрибутив?
    Для тех кто скажет – пользуй Worksation, объясняю – хочу полноценный esx, но с GUI доступом 🙂

    Я проводил эксперименты по созданию “наколенного CVP”, т.е. прикручивал иксы от CentOS и rdp-клиента. Получил розовый экран и успокоился, пока. Но, идея сделать ESX на ноутбуке с управлением и доступом к консоли серверов меня, пока, не покинула.

  2. phily, я думаю такая затея с ESXi /гипервизор/ будет по сложности сравнимой очень серьезным испытанием ваших навыков по следующим причинам:
    1. У гипервизора очень “своеобразное” ядро. Все что не относится “к делу” отпилено, а поскольку полных исходников нет – “впилить” обратно без помощи авторов – мягко говоря сложно.
    2. чтобы показывать картинку надо vmrc. Который тоже совсем не “сахар” в плане реализации. чем тут поможет rdp клиент – неясно.

    Возможно со временем vmware откроют больше исходников и все станет реально, но в текущий момент “наудачу”
    можно попробовать запустить статически слинкованный самый легкий хсервер типа KDrive, в любом случае это не решает п2

  3. Многие поставят памятник человеку написавшему хоу то – добавить агента для управления рейд контроллером. Очень уже любят lsi чипы писать – а полный функционал, это пожалуста ставьте утилитку для управления контроллером вашей системы. опять же оповещения по емайл про сбойнутый диск или дегрейд по какой либо причине, было бы очень приятно получать… без агента на мой взгляд никак ( или кто то знает другой способ?

  4. ESX стоит денег. И если взломан и не поставлен на баланс – это уже неприятности.
    ESXi бесплатен и модификация попадает под нарушение лицензии, но найти эту модификацию гораздо сложнее чем ESX
    … безусловно пакеты для малого бизнеса стоят ОЧЕНЬ небольших денег. Более того, многие даже включили в бюджет на 2010 … но жить пока както надо )
    да и интересно же в конце концов!

  5. Решил опробовать вашу сборку
    Как понимаю в архив делался под Mac OS X.
    Этими приложениями?
    Norton DiskDoubler Pro
    SuperDoubler
    DDExpand

    Подскажите как можно развернуть из под WinXP или LinuxMint
    Заранее спасибо

  6. Доброго дня!

    У меня Asus P5Q PRO Turbo GREEN Rev 1.02G. Bios 0602.
    CPU — Intel Core 2 Quad Processor Q8200

    ESXi 4.0 Update 1 Installable (CD ISO) — ставится без проблем и патчей.

    НО — попробовал поставить в виртуалке Windows 7 64bit.

    И сразу получил сообщение, что процессор не поддерживает 64dit.

    Установка непосредственно на сисиетму (без ESXi 4.0) данного дистрибутива прошло без проблем.

    Можно ли сделать так, что бы на этом железе под ESXi 4.0 поставить 64-х разрядную сиситему?

    Заранее спасибо за ответ!

  7. vitaly, наиболее вероятно что когда вы выбирали шаблон – выбрали windows 7 x86 (32bit)

  8. 2virus: возможно, но не факт 😉
    во-первых, для запуска под ESX/ESXi 64-битных гостевых систем, нужно включить в BIOS опцию аппаратной поддержки виртуализации процессором (технологии Intel VT/AMD-V).
    во-вторых, процессор Intel Q8200 эту технологию не поддерживает (http://ark.intel.com/Product.aspx?spec=SLB5M).
    Мои соболезнования. В остальном, вполне достойный процессор.

  9. Добрый день! А можно ли сделать такой образ загрузочной флешки с ESXi 4.1? А то не хочется ставить на голое железо. Заранее спасибо.

  10. ТЬфу…Не устанавливается на железо в общем у меня ESXi 4.1
    Я новичок, простите если что)

  11. Romariano, я вас не понимаю 🙂
    образ можно сделать все точно также, драйвера должны подойти те же самые.

  12. у кого вопросы – пишите в гталк, меня утомила дурная местная капча…
    логин alien.virus

  13. :))))
    ООО, у нас такая крутая и вредная капча :)))))))))))
    Вирус, ты сколько раз накалывался и флажок не ставил? 🙂
    Я раза три-четыре точно 🙂

  14. да вобщем то хрен с ней что не ставишь флажок, обломно что когда “назад” нажмешь – текста который ты вбил – почему-то нет

  15. Просто у вас браузеры туповаты =)
    В опере весь текст сохраняется… 😉

  16. Большое спасибо Андрею Вахитову за предыдущий пост от 7 июля 2010 в 10:51

    Он оказался прав – дело в протце.

    Сейчас есть возможность проапдейтить данное железо. Прошу помочь в выборе процессора и материнской платы.

    Что порекомендуете взять сейчас для работы с VMware ESXi?

  17. Однозначно, процессор, поддерживающий аппаратную виртуализацию.
    По остальному железу консультировать не готов. Если нет желания “напрягаться”, смотрите HCL и подбираете железо из доступного, либо ищете на англоязычных блогах.
    Либо берете существующую конфигурацию и допиливаете ее (ESX допиливать проще, чем ESXi).

Leave a Reply

Your email address will not be published. Required fields are marked *