Приветствую, %USERNAME%. Меня зовут Рубанов Николай и я технический евангелист компании Evrone. Моя роль подразумевает постоянное изучение новых технологий, так что нужно иметь некую песочницу для экспериментов. Под это я решил приспособить свой старый ноутбук на базе Core i7 4-го поколения.
Выбор бесплатных гипервизоров невелик, так что выбор я остановил на VMware ESXi. На этом пути есть много подводных камней, главным из которых является аппаратная совместимость. Сходу установить ESXi не получилось, поскольку система сообщила об отсутствии сетевой карты и невозможности продолжить установку.
Существующие инструкции по внедрению сторонних драйверов в ESXi или уже устарели, или содержали неполную информацию. Так что я перерыл кучу источников и решил написать небольшой собственный туториал. Надеюсь, что мой опыт сэкономит вам немало времени и нервов.
Предыстория
Два года назад я готовился к переезду на Кипр, поэтому решил привести свою технику в порядок. Я искал машину, которая не сломается от небольшого падения, опрокинутого стакана с кофе или попадания в дождь. Для работы на свежем воздухе был куплен «бронебойный» Acer Enduro Urban N3: заглушки со всех сторон предотвращают попадание в разъемы пыли, воды и песка. А у клавиатуры есть превосходный трюк, впервые представленный в ноутбуках ThinkPad — дренажные отверстия на случай залития.
Дома я предпочитаю до сих пор использовать свой 10-летний MSI GE60-2OC. Ему я решил сделать небольшой апгрейд в виде пары свежих SSD-дисков Samsung EVO 870 по 500 Гб каждый. Один сразу поставил в качестве основного. Второй диск просто взял с собой в качестве ЗИП. Спустя примерно год первый диск скончался, выдав множество бэдов, и на его место встал запасной. Впрочем, прожил он примерно столько же и также стал наращивать счётчик Reallocated sector count.
Пока делал финальный бэкап своих виртуальных машин, которые раньше крутил на Oracle VirtualBox, столкнулся с проблемой. Копирование прерывалось и операционная система ругалась на ошибку ввода-вывода. Пришлось привлечь тяжелую артиллерию в виде утилиты DMDE. Она имеет чудесную опцию копирования с пропуском бэд-блоков. Мне очень повезло, так как проблемный файл был только один, а в сбойных блоках не было важных данных. Так что все файлы я вытащил и поехал в магазин за новым диском. У меня уже был позитивный опыт с дисками Crucial, поэтому приобрёл модель BX500 объёмом 480 Гб. На март 2023 его стоимость составила 85 евро. Надеюсь, что проживёт он дольше EVO 870.
Первая попытка
Раз уж полез внутрь ноутбука, кроме SSD заменил и кулер. У линейки GE60 есть противная «детская болячка». Кулеры в этой линейке более года живут редко и меняются, как расходники. Мой экземпляр сменил уже 8 штук.
Когда ноутбук был собран обратно, я подумал, что было бы хорошей идеей превратить его в небольшой сервер. Сказано — сделано. Я отправился на портал VMware скачивать дистрибутив. Залил ISO на Zalman, о котором рассказывал в одной из моих статей, и запустил установку.
Разумеется, меня постигло фиаско в виде ошибки «No Network Adapters», и я полез в гугл выяснять про установку сторонних драйверов в ESXi. Первые же ссылки не обнадёживали, там речь шла о серверных картах, для которых был выпущен так называемый Community Networking Driver. Но я также узнал, что существует USB Network Native Driver, который позволяет использовать гигабитные сетевые карточки, подключаемые по USB. Например, на базе чипсетов ASIX88178a или RTL8152/RTL8153.
У меня под рукой была только карточка на базе ASIX88772a, но я всё равно решил попробовать. Забегая вперед, скажу, что эта сетевая карта так и не заработала, но вот сам процесс встраивания драйвера стал тем ещё квестом.
До 2018 года была такая классная штука, как ESXi-Customizer-PS. Это такой Powershell-скрипт, который позволял относительно просто встраивать драйверы в ESXi версий 5.x и 6.x. Но вот для ESXi версий 7.x и 8.x надо было искать другой способ. Этим способом стала пересборка образа с помощью PowerCLI и модуля ImageBuilder.
Оказалось, что всё-таки ESXi-Customizer-PS до сих пор обновляется своим создателем, правда на официальном сайте до сих пор указана последняя версия, датированная 2018 годом. За информацию спасибо хабраюзеру Johan_Palych
Подготовительная работа
Итак, на старте у меня был ноутбук с Windows 11, образ VMware-ESXi-8.0b-21203435-depot.zip и драйверы в файле ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip. Прежде чем приступать к сборке, нужно установить весь сопутствующий софт. Первое, чем нужно обзавестись — PowerCLI. Открываем PowerShell с правами администратора и выполняем установку:
Install-Module -Name VMware.PowerCLI
Система пару раз предупредит, что установка будет из стороннего источника данных и мы должны понимать потенциальные риски. Отвечаем утвердительно и дожидаемся завершения процесса.
Следующий модуль будет содержать неподписанные сценарии, загруженные из интернета, поэтому вначале меняем политику исполнения:
Set-ExecutionPolicy RemoteSigned
И только теперь устанавливаем модуль сборщика:
Import-Module VMware.ImageBuilder
Сразу этот модуль не заработает, поскольку для своей работы требует наличия Python определённой версии и некоторых дополнительных компонентов. Вначале скачиваем и устанавливаем интерпретатор Python 3.7.9. При установке обязательно ставим галочку, чтобы путь к Python был прописан в PATH.
Теперь можно открыть обычную сессию PowerShell от пользователя и выполнить несколько команд. Прописываем в настройках PowerCLI путь до exe-шника интерпретатора:
Set-PowerCLIConfiguration -PythonPath ”C:\Users\<username>\AppData\Local\Programs\Python\Python37\python.exe” -Scope User
Переходим в вышеуказанную директорию и обновляем pip:
python -m pip install --upgrade pip
Теперь устанавливаем необходимые пакеты:
pip install six
pip install psutil
pip install lxml
pip install pyopenssl
На этом подготовка системы завершена и можно попробовать собрать образ.
Сборка образа
Копируем архивы с образом и драйверами по адресу C:\Users\[username]\. Теперь проверяем версию образа ESXi командой:
Get-DepotBaseImages -Depot .\VMware-ESXi-8.0b-21203435-depot.zip
Ответ будет иметь такой вид:
Version Vendor Release date
8.0.0-1.20.21203435 VMware, Inc. 02.13.2023 23:00:00
8.0.0-1.15.21203431 VMware, Inc. 02.13.2023 23:00:00
Теперь проверяем архив с драйверами:
Get-DepotComponents -Depot .\ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip
Получаем следующее:
Name Version ID Vendor Release date
VMware-vmkusb-nic-fling 1.11-1vmw.800.1.20.61054763 VMware-vmkusb-nic-fling:1.11-1vmw.800.1.20.61054763 VMware, Inc 11.21.2022 06:22:41
Из этих данных сформируем JSON-файл с будущими настройками, назовём его vmware-esxi8-custom-iso.json и положим вместе с образом и драйверами:
{
"base_image": {
"version": "8.0.0-1.20.21203435"
},
"components": {
"VMware-vmkusb-nic-fling": "1.11-1vmw.800.1.20.61054763"
}
}
Запускаем сборку:
New-IsoImage -Depots “VMware-ESXi-8.0b-21203435-depot.zip” , “ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip” -SoftwareSpec “./vmware-esxi8-custom-iso.json” -Destination “./VMware-ESXi-8.0b-21203435-custom.iso”
Процесс достаточно быстрый. Полученный образ VMware-ESXi-8.0b-21203435-custom.iso теперь можно использовать для установки ESXi.
Заключение
Я успешно загрузился с полученного ISO, но увы, моя сетевая карточка так и не определилась. Тем не менее, такой способ добавления драйверов в образ вполне рабочий. Как только до меня доедет карта на базе ASIX88178a, то я попробую ещё раз провернуть трюк с установкой. А пока что установил Proxmox 7.3, который обзавёлся новыми возможностями скачивания установочных образов и достаточно адекватной поддержкой Red Hat QXL драйвера.
Меня очень порадовала возможность эмуляции UEFI и TPM 2.0, а также то, что без проблем удалось перегнать VDI-образ в RAW и записать в выделенный машине ZFS-раздел. Так я перенёс виртуальную машину с Windows 11 и настроил доступ к экрану с нормальным разрешением, вплоть до 4k. Если вам интересны подробности, то сообщите в комментариях, я выделю время на написание такой статьи.
А вот ещё несколько интересных текстов:
— Ruby, Cucumber и русский язык: автотесты для Альфа-Банка
— 3 попытки и 8 лет перехода с Ruby на Elixir
— UseStdLibVars: используйте переменные стандартных библиотек
Комментарии (14)
DikSoft
06.04.2023 07:30+1Век живи, век учись.
Я думал, что после tulip уже ничего нового в этом плане не будет, и про вопрос с ESXi новее 6.0 на левом железе можно забыть. Спасибо! Как раз нужна была VMWare в домашней лабе, и такие сетевые адаптеры "на всякий случай" давно валяются без дела.
dkuznets
06.04.2023 07:30Мне так и не удалось собрать с помощью PowerCLI. В процессе вываливался с какими-то ошибками...
Скачал 6.5, с помощью кастомайзера интегрировал нужные мне дрова. И все заработало. До этого лет 10 работал сервер на ESXi 5.5, и все устраивало, пока железо не решил поменять :)
DikSoft
06.04.2023 07:30Получилось с образом 7.0U1c и даунгрейдом PowerCLI до 12.7 , с восьмой версией рецепт из статьи сразу рабочий.
Johan_Palych
06.04.2023 07:30+1До 2018 года была такая классная штука, как ESXi-Customizer-PS
ESXi-Customizer-PS v2.9.0 Latest от автора - Added support for ESXi 8.0
Darksa Автор
06.04.2023 07:30Да, действительно. Автору этого чудесного скрипта не помешало бы обновить свой сайт — там последняя версия 2.6.0 (2018-04-18). Спасибо — добавлю в статью ссылку.
Johan_Palych
06.04.2023 07:30+1Проверил на виртуалке. С этой версией надо ставить Python и (Install-Module -Name VMware.PowerCLI -AllowClobber). Причем с -AllowClobber
Лень было докачивать.
Han7
06.04.2023 07:30+2Лет 6 назад, когда мне приходилось эксплуатировать ESXi 4.Х-6.Х, для меня гораздо проще было установить недостающие драйверы из консоли ESXi, используя внутренние команды ESXi, а не заниматься танцами вокруг PS и Python.
werter_l
06.04.2023 07:30+1В любом случае, спасибо.
Перешли на pve. Он с каждым релизом все краше.
Как доведут до ума на нем sdn еще один пункт можно из прелестей вмваре вычеркивать.
winmasta
Почему выбрали именно ESXi, чем не устроил Proxmox ?
Darksa Автор
Proxmox прекрасен, но с ESXi тоже стоит практиковаться )
winmasta
Кажется, что ESXi становится все менее актуален )
Darksa Автор
Разве? https://www.gartner.com/reviews/market/server-virtualization