Не удается запустить VMware на RHEL 8 после подписания vmmon и vmnet.

Вопрос или проблема

После установки RHEL 8 с необходимыми библиотеками и подписанными vmmon и vmnet, затем импорта mok, я все еще не могу запустить виртуальную машину в VMWare Workstation (то же самое касается и VMWare Player). Вот как я подписываю vmmon и vmnet:

openssl req -new -x509 -newkey rsa:2048 -keyout VMWare.priv -outform DEF -out VMWare.der -nodes -days 36500 -subj "/CN=VMware/"

/usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./VMWare.priv ./VMWare.der $(modinfo -n vmmon)
/usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./VMWare.priv ./VMWare.der $(modinfo -n vmnet)

mokutil --import VMWare.der

Я успешно импортирую VMWare.der при перезагрузке, но все еще получаю следующую ошибку:

Не удалось открыть /dev/vmmon: Нет такого файла или каталога. Пожалуйста, убедитесь, что модуль ядра `vmmon` загружен.

Спасибо

Грэм Харрис

Обновление 1:

Я вернулся на RHEL 7.8, обновил и подписал файлы VMMON и VMNET, получил “Can’t read private key”, импортировал MOK и установка была повреждена.

Обновление 2: На экране загрузки система сообщает

Red Hat Enterprise Linux Server (3.10.0-1127.e17.x86_64) 7.8 (Maipo)

Если я обновлюсь до последней версии, система не сможет пройти экран заставки UEFI.

Обновление 2

Переключился обратно на RHEL 8, и после импорта MOK я запускаю mokutil -l и ключ не найден.

Однако недавний поиск нашел эту статью на git Молчаливое провал MOK регистрации #105

Краткое описание проблемы:

При записи в MokList с помощью EFI_VARIABLE_APPEND_WRITE, некоторые ноутбуки HP могут просто вернуть EFI_SUCCESS без записи содержимого во флеш-память, так что у нас нет способа определить, был ли обновлен MokList или нет. Теперь мы всегда сначала читаем MokList и переписываем его с новым содержимым.

После многих попыток (даже после изучения исходного кода MOKUTIL) я отключил безопасную загрузку в настройках загрузки UEFI на компьютере, и VMWare заработал. Это конфигурация, которая позволяет мне запускать VMWare на RHEL 8. Использование режима BIOS для загрузки все равно требует подписания драйверов, однако отключение безопасного режима для UEFI boot mode vmmon и vmnet не нуждаются в подписке.

Для тех, кто хочет узнать информацию о BIOS, вот она, для получения этой информации я использовал sudo dmidecode :

# dmidecode 3.2
Получение данных SMBIOS из sysfs.
SMBIOS 2.7 присутствует.
---%<-------------

Информация о BIOS
    Поставщик: Dell Inc.
    Версия: A05
    Дата выпуска: 26.07.2012
    Адрес: 0x00000
    Размер во время выполнения: 64 кБ
    Размер ПЗУ: 8 МБ
    Характеристики:
        PCI поддерживается
        BIOS можно обновить
        Доступно затенение BIOS
        Загрузка с CD поддерживается
        Доступен выбор загрузки
        BIOS ПЗУ установлено в разъем
        Поддерживается EDD
        Поддерживаются услуги для 5.25"/1.2 MB флоппи (int 13h)
        Поддерживаются услуги для 3.5"/720 кБ флоппи (int 13h)
        Поддерживаются услуги для 3.5"/2.88 MB флоппи (int 13h)
        Услуга Print Screen поддерживается (int 5h)
        Поддерживаются услуги клавиатуры 8042 (int 9h)
        Поддерживаются услуги серийного порта (int 14h)
        Поддерживаются услуги принтера (int 17h)
        ACPI поддерживается
        Поддерживается USB наследие
        Поддерживается спецификация загрузки BIOS
        Поддерживается распространение целевого контента
        UEFI поддерживается
    Ревизия BIOS: 4.6

    ---%<-------------

Я использую Fedora 36, и мне удалось запустить виртуальную машину VMware без необходимости отключать безопасную загрузку.

Я следовал инструкциям из этой статьи базы знаний VMware.

Тем не менее, я не смог выполнить шаг 2, потому что у меня нет /usr/src/linux-headers, так как я установил “Development Tools” и “Development Libraries”, как предложено в этом ответе.

Вместо этого я пролистал вниз до раздела Related Information из этой статьи базы знаний VMware и подписал файлы ядра в /usr/src/kernels/.

Для шага импорта открытого ключа mokutil мне потребовались привилегии суперпользователя. Обратите внимание, что этот шаг включает в себя создание нового пароля.

И самое главное, чтобы на экране загрузки UEFI появилась экран регистрации MOK, мне нужно было использовать команду reboot из моего терминала вместо перезагрузки компьютера из меню “Пуск”. Я следовал инструкциям на консоли UEFI, которая запрашивала новый пароль, который я создал, когда импортировал открытый ключ в список MOK системы. Эти шаги в итоге побудили меня снова перезагрузить мой компьютер, что я и сделал.

И вуаля! Теперь я могу запустить мою Kali VM на VMware.

.

Ответ или решение

Запуск VMware на RHEL 8 может столкнуться с определёнными трудностями из-за требований безопасности, в частности, связанных с поддержкой secure boot и подписания модулей ядра. Рассмотрим подробно, как можно решить эту проблему и заставить VMware работать на платформе RHEL 8.

Теория

Основная проблема, с которой вы сталкиваетесь, заключается в невозможности загрузить модули vmmon и vmnet, необходимые для работы VMware Workstation или VMware Player. Это может происходить по таким причинам, как:

  1. Secure Boot: Эта функция проверяет целостность и подлинность загружаемых драйверов и модулей. Если модули не подписаны доверенной подписью, они не загружаются, что вы наблюдаете в виде ошибки "Could not open /dev/vmmon: No such file or directory".

  2. Ошибка при импорте MOK: Если ключ для подписи модулей не добавляется в MOKList, Secure Boot не позволит загрузить неподписанные модули.

  3. Несоответствие версий ядра: В случаем смены ядра (например, после обновления системы), может потребоваться заново подписать модули.

Пример

Давайте пройдем через шаги, которые вы уже предприняли, и идентифицируем, где могла произойти ошибка:

  1. Вы создали пару ключей с помощью OpenSSL и подписали модули через sign-file.

    openssl req -new -x509 -newkey rsa:2048 -keyout VMWare.priv -outform DER -out VMWare.der -nodes -days 36500 -subj "/CN=VMware/"
    /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./VMWare.priv ./VMWare.der $(modinfo -n vmmon)
    /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ./VMWare.priv ./VMWare.der $(modinfo -n vmnet)
  2. Далее вы осуществили импорт сертификата в MOK с помощью mokutil:

    mokutil --import VMWare.der
  3. На этапе перезагрузки вас, вероятно, должен был встретить экран MOK Enrollment, где вы ввели бы созданный пароль для подтверждения импорта.

Применение

Чтобы решить вашу проблему, рассмотрите выполнение следующих шагов:

  1. Проверка загрузки MOK: После импорта MOK и перезагрузки, экран для загрузки ключей может появиться только при условии перезагрузки через терминал с использованием команды reboot, а не через GUI. Убедитесь, что вы следуете этой практике для подтверждения импорта ключей.

  2. Проблемы на платформах HP: Примечание из найденной вами статьи о проблемах с EFI на некоторых устройствах HP может быть актуально:

    • Попробуйте обновить прошивку вашего устройства, если ваша система является HP.
    • Воспользуйтесь ручным подтверждением успеха импорта ключа с помощью mokutil -l после перезагрузки.
  3. Обходные пути:

    • Временное отключение Secure Boot: Если импорт ключей не удаётся, временно отключите Secure Boot в настройках UEFI. После этого модули должны загружаться нормально, что вы и упомянули как работающее решение.
  4. Подпись для нового ядра: При обновлении ядра перенастройте и снова подпишите модули, убедившись, что используете последние версии инструментов ядра.

  5. BIOS/UEFI обновление: Обновите BIOS и UEFI до их последних версий. Некоторые производители регулярно выпускают обновления, решающие подобные проблемы.

  6. Обратите внимание на подход к Fedora: Обратите внимание на успешный опыт использования Fedora, где обновлённые статьи и документация помогли обойти проблему. Возможно, некоторые решения и библиотеки, используемые там, могут быть перенесены на RHEL 8.

Если все перечисленные шаги не помогают, можно рассмотреть использование других инструментов виртуализации, таких как KVM или VirtualBox, которые могут не требовать столь глубокой интеграции с UEFI. Возможно, они предоставят более гибкий способ работы в вашем окружении.

Конечно, при выполнении всех операций с параметрами загрузки следует соблюдать осторожность и регулярно создавать резервные копии важных данных на случай непредвиденных сбоев системы.

Оцените материал
Добавить комментарий

Капча загружается...