Вопрос или проблема
Я использую VMware ESX 4.1, и у меня есть виртуальная машина для разработки, которую я недавно обновил с Ubuntu 10.04 до 11.04. Затем я попытался переустановить VMware Tools, и некоторые модули дали мне ошибку и не компилировались. В результате у меня теперь проблемы с резервным копированием этой виртуальной машины, и я подозреваю, что причина в VMware Tools. Я установил последние патчи для VMware host, которые включали обновление VMware Tools (v8.3.7 build-381511), но я все еще получаю ту же ошибку.
Ошибка, которую я получаю, выглядит так:
...
/tmp/vmware-root/modules/vmhgfs-only/super.c:73:4: error: unknown field ‘clear_inode’ specified in initializer
make[2]: *** [/tmp/vmware-root/modules/vmhgfs-only/super.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmhgfs-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.38-8-generic'
make: *** [vmhgfs.ko] Error 2
make: Leaving directory `/tmp/vmware-root/modules/vmhgfs-only'
и также это:
/tmp/vmware-root/modules/vmci-only/vmci_drv.c:91:4: error: unknown field ‘ioctl’ specified in initializer
/tmp/vmware-root/modules/vmci-only/vmci_drv.c:91:4: warning: initialization from incompatible pointer type
/tmp/vmware-root/modules/vmci-only/vmci_drv.c: In function ‘vmci_init’:
/tmp/vmware-root/modules/vmci-only/vmci_drv.c:151:4: error: implicit declaration of function ‘init_MUTEX’
make[2]: *** [/tmp/vmware-root/modules/vmci-only/vmci_drv.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmci-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.38-8-generic'
make: *** [vmci.ko] Error 2
make: Leaving directory `/tmp/vmware-root/modules/vmci-only'
Есть идеи?
Я бы предположил, что у вас неверная версия заголовков ядра. Если вам не нужна какая-то конкретная функция, доступная только в версии VMware Tools, которую вы пытаетесь собрать (подсказка: скорее всего, нет), вы можете избавить себя от многих проблем, удалив вручную установленную версию и используя пакет open-vm-tools в Ubuntu:
sudo aptitude install linux-headers-virtual open-vm-dkms open-vm-tools
Также можно получить последнюю версию инструментов напрямую от VMware, но тогда вам нужно немного поработать с apt:
apt-add-repository 'deb http://packages.vmware.com/tools/esx/4.1latest/ubuntu natty main restricted'
wget http://packages.vmware.com/tools/VMWARE-PACKAGING-GPG-KEY.pub -q -O- | apt-key add -
apt-get update
apt-get install vmware-open-vm-tools-kmod-source
module-assistant prepare
module-assistant build vmware-open-vm-tools-kmod-source
apt-get install vmware-open-vm-tools
Похоже, что после миграции наших серверов VMware ESXi на версию 5.0 эта проблема исчезает. Видимо, это была проблема с VMware Tools, которую в итоге исправили в VMware.
До этого мы использовали VMware Tools из репозитория Ubuntu по предложению @pehrs, и они работали нормально, за исключением того, что показывались как “Unmanaged” в VMware vCenter, и их нельзя было обновить из консоли VMware vCenter, если доступна новая версия. Вместо этого кому-то нужно было войти в машину с Ubuntu под root и проверить наличие обновлений. Это было рабочее краткосрочное решение.
Ответ или решение
Установка VMware Tools на виртуальную машину с Ubuntu 11.04, работающую на VMware ESXi, требует тщательного подхода, особенно если возникают ошибки компиляции модулей, как в вашем случае. Вы упоминаете, что обновили VM с Ubuntu 10.04 до 11.04, а также обновили ESX до версии 4.1, однако вы всё ещё сталкиваетесь с проблемами при переустановке VMware Tools — модули не компилируются корректно.
Теория
VMware Tools — это набор утилит, который улучшает производительность виртуальной машины и её взаимодействие с гипервизором VMware. Он предоставляет такие функции, как корректное отображение разрешения экрана, возможность плавного перемещения курсора мыши между VM и хостом, поддержка виртуальных дисков и сетевых драйверов, а также функциональность синхронизации времени.
Эти инструменты регулярно обновляются VMware для совместимости с новыми версиями ядра Linux и самой VM-ware. Поэтому при обновлении дистрибутива Ubuntu или самой версии гипервизора может возникнуть несовместимость, как это наблюдается в вашем случае.
Пример
Ошибка, которую вы получаете, unknown field 'clear_inode' specified in initializer
, указывает на несовместимость структур данных, используемых в последних версиях ядра Linux по сравнению с более старыми версиями. Аналогично, ошибка implicit declaration of function 'init_MUTEX'
также является результатом изменений в ядре Linux, где старые функции более не поддерживаются или заменены новыми аналогами.
Наиболее очевидным решением этих проблем является использование open-vm-tools — альтернативной, поддерживаемой сообществом версии VMware Tools, которая зачастую имеет лучшее соответствие для более свежих версий ядра Linux и дистрибутивов Ubuntu. Этот пакет официально поддерживается в репозитории Ubuntu и активно обновляется для совместимости с последними версиями Ubuntu и Linux ядра.
Применение
Для устранения ваших проблем с компиляцией модулей VMware Tools рекомендуется выполнить следующие шаги:
-
Удалите текущие установки VMware Tools, чтобы избежать конфликтов:
sudo vmware-uninstall-tools.pl
-
Установите заголовки ядра и open-vm-tools. Это специализированное программное обеспечение поможет обеспечить совместимость с текущей версией ядра вашей системы:
sudo apt-get update sudo apt-get install linux-headers-virtual open-vm-dkms open-vm-tools
-
Если требуется, добавьте репозиторий VMware для получения последней версии open-vm-tools, специально оптимизированной для использования с VMware ESXi:
sudo add-apt-repository 'deb http://packages.vmware.com/tools/esx/4.1latest/ubuntu natty main restricted' wget http://packages.vmware.com/tools/VMWARE-PACKAGING-GPG-KEY.pub -q -O- | sudo apt-key add - sudo apt-get update
-
Установите vmware-open-vm-tools:
sudo apt-get install vmware-open-vm-tools
-
Компиляция модулей через module-assistant:
sudo apt-get install module-assistant sudo module-assistant prepare sudo module-assistant build vmware-open-vm-tools-kmod-source
-
Проверьте работу VMware Tools: перезагрузите виртуальную машину и убедитесь, что все необходимые модули загружаются без ошибок.
-
Обратите внимание на обновления: хотя на момент написания данного ответа VMware ESXi 5.0 исправил многие подобные ошибки в VMware Tools, следите за обновлениями от VMware и Ubuntu, так как часто проблемы подобного рода устраняются в последующих обновлениях.
Следуя этим шагам, ваша система должна достичь необходимого уровня совместимости между установленным дистрибутивом Ubuntu и версией гипервизора VMware ESXi. Это решения вам помогут не только исправить текущие ошибки, но и обеспечат поддержку новых обновлений ядра и системы в будущем.