Вопрос или проблема
Я недавно обновился до 24.04 LTS с 22.04 LTS. При попытке запустить некоторые машины VMWare, как я обычно ожидал, мне нужно было перекомпилировать vmmon и vmnet в ядро. Это не сработало, ссылаясь на журнал, содержащий множество ошибок, связанных с невозможностью найти стандартные заголовки C, такие как stdarg.h, stdio.h и т.д.
Я следовал каждой инструкции, которую мог найти для решения проблемы, от простой перестройки до загрузки исходников и перестройки из них (даже с замечательными репозиториями mkubecek). Я был осторожен с использованием репозитория vmware версии 16.2.5, так как это была последняя версия, на которой работал этот компьютер.
Сборка из исходников завершается с различными сообщениями, которые я действительно не знаю, как решить. Эти сообщения – большое количество “нет предыдущего прототипа для”, а затем приводится метод (например, VMNetUserLister_Create) и файл исходного кода на языке C (например, userif.c). Это заставляет меня думать, что что-то значительно отличается в требовании к C (glibc?? – я действительно не обращал на это особого внимания, так как не ожидал такой проблемы).
Мой компьютер – это Dell с двумя процессорами XEON по 12 ядер каждый, 64 ГБ оперативной памяти и 2 ТБ дискового пространства. Так что мне не хватает производительности.
Я могу только подумать, что либо что-то пошло не так при обновлении, либо в 24.04 что-то радикально отличается от 22.02 в отношении того, что нужно VMWare.
Я готов принять любой совет сейчас. Я не могу сломать дальше то, что уже сломано!
Ответ или решение
Обновление операционной системы Linux может привести к различным проблемам с совместимостью программного обеспечения и драйверов. Из вашего описания кажется, что после перехода на новую версию Ubuntu 24.04 LTS возникли трудности с работой VMWare, что обусловлено необходимостью перекомпиляции модулей vmmon и vmnet для текущего ядра. Однако процесс компиляции не прошёл успешно из-за отсутствия стандартных заголовочных файлов C, таких как stdarg.h и stdio.h, что может указывать на более серьёзные недочёты в системе или в процессе обновления. Разберём возможные решения и причины данной проблемы.
Теория: причины проблемы
С учётом описания проблемы кажется, что проблема заключается в том, что после обновления ядра и необходимых для его работы библиотек, VMWare не может найти заголовочные файлы, которые, как правило, устанавливаются в системе по умолчанию. Возможные причины могут включать:
-
Недостающие пакеты для разработки: Пакеты, содержащие заголовочные файлы для C-компилятора (например, build-essential, linux-headers-generic и т.п.), могут быть не установлены или удалены в процессе обновления.
-
Изменения в библиотеке glibc: Новая версия glibc или изменений в её API может требовать обновлений в исходном коде модулей VMWare для корректной компиляции.
-
Проблема с источниками и конфликт версий: Если исходный код для модулей VMWare не был оптимизирован для новой версии ядра, их старая версия может не компилироваться.
-
Общая проблема с системой после обновления: Возможно, некоторые конфигурации или библиотеки в системе стали несовместимы или были удалены.
Пример: решение проблемы на практике
Описав возможные причины проблемы, дальнейшие действия могут включать несколько шагов, чтобы локализовать и исправить проблему.
-
Проверьте установку необходимых пакетов для разработки. Убедитесь, что установлены пакеты build-essential и соответствующие заголовки ядра:
sudo apt update sudo apt install build-essential linux-headers-$(uname -r)
-
Убедитесь, что необходимые пути указаны. Проверьте, что пути к заголовочным файлам и библиотеки установлены правильно.
-
Используйте последний совместимый исходный код модулей. Убедитесь, что используете актуальные версии репозиториев. Mkubecek’а репозитории могут помочь, но проверьте, что настройки и зависимости под новую версию Ubuntu актуальны.
-
Проанализируйте повторяющиеся ошибки прототипов. Ошибки "no previous prototype for" могут возникать при отсутствии деклараций или несовпадении сигнатур функций. Это может требовать ручного вмешательства — исправления исходного кода или поиска патчей.
-
Перепроверка зависимости libc и glibc. Хотя код VMWare может быть несовместим с новой библиотекой, переустановка и переконфигурация может помочь:
sudo apt install --reinstall libc6-dev
Применение: рекомендации для вашей системы
Исходя из приведённого выше, следующая стратегия может быть применена на вашей машине:
-
Убедитесь в наличии всех пакетов разработки. Переустановите пакеты, поддерживающие компиляцию C-программ. Это обеспечит наличие всех необходимых заголовочных файлов.
-
Используйте правильные исходные файлы VMWare. Обращайте внимание на изменения в репозиториях, особенно в контексте вашей версии Ubuntu и её ядра.
-
Проверка конфигурации связанного ПО. Иногда ошибки с заголовками связаны с неправильной конфигурацией среды. Проверка путей системных переменных, таких как PATH и LD_LIBRARY_PATH, может быть полезной.
-
Будьте готовы к удалению и перевстановке ПО. Возможно, проще будет установить последнюю стабильную и официально поддерживаемую версию VMWare для вашей новой ОС.
Если после выполнения всех вышеперечисленных действий проблема сохраняется, рекомендуется обратиться к официальным форумам и сообществам Ubuntu или VMWare, возможно, другие пользователи уже столкнулись с подобной проблемой и могут предоставить актуальные патчи или советы.