Как стать автором
Обновить

Комментарии 32

Отличная работа, завтра проверю. Больше года назад слез с VB, который стал стабильно рушить рабочий десктоп в BSOD. По-гуглив проблему на форуме VB, понял, что никто не торопится исправить проблему. Хотя мне не актуально, но, так сказать, хочу тестером выступить.
Читаю и думаю — кто же мог так обстоятельно и ясно всё расписать, да ещё и извиниться в конце за недостаточность? Ну, не удивлён, старая школа даёт себя знать.
И льстя моя будет страшна? :-)
К сожалению, не устанавливается.
Скриншот ошибки
image

Не сталкивался с таким. Посмотрите, пожалуйста, в журнале событий, какие там встречаются проблемы (Панель управления — Администрирование — Просмотр событий, группа «Журналы Windows», подкатегории «Система», «Приложение» и «Установка»).

А, кстати, устанавливается ли официальный 5.0.14?
А, и ещё, попробуйте запустить инсталлятор с параметром --logging. Тогда во временном каталоге будет создан подкаталог VirtualBox с log-файлом, из которого, возможно, удастся вытащить какую-нибудь полезную информацию.
Эх, официальная устанавливается и до сих пор рушит систему в BSOD.
Попытка запустить ключем к успеху не привела — каталог с логами не создается. В журналах есть сообщение об ошибке, но без подробностей.
Тогда, боюсь, это вне моей компетенции. :-(
Собственно, улучшений у меня по сравнению с официальным пакетом ожидать в любом случае не приходилось, т. к. это просто пересборка, но почему установка может падать с такими странными симптомами — ни малейших идей нет.

Если есть желание, можете попробовать промониторить через ProcMon, что вообще происходит, какие ошибки вылезают при обращении к разным файлам и веткам реестра. Может быть, это поможет определить, что конкретно не понравилось инсталлятору.
У меня такая же ошибка. Из лога:

DIFXAPP: INFO: VBoxUSBMon.inf: checking signature with catalog 'C:\Program Files\Oracle\VirtualBox\drivers\USB\filter\VBoxUSBMon.cat'…
DIFXAPP: ERROR: Signature verification failed while checking integrity of driver package 'VBoxUSBMon.inf' ('C:\Program Files\Oracle\VirtualBox\drivers\USB\filter\VBoxUSBMon.inf'). (Error code 0x800B0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.)
DIFXAPP: INFO: Successfully removed '{B7D782D2-96DF-4775-A0E1-A76CF7B04B65}' from reference list of driver store entry ''
DIFXAPP: INFO: RETURN: DriverPackageInstallW (0x800B0100)
DIFXAPP: ERROR: encountered while installing driver package 'C:\Program Files\Oracle\VirtualBox\drivers\USB\filter\VBoxUSBMon.inf'
DIFXAPP: ERROR: InstallDriverPackages failed with error 0x800B0100
DIFXAPP: RETURN: InstallDriverPackages() 2148204800 (0x800B0100)
CustomAction MsiInstallDrivers returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 13:53:39: InstallFinalize. Return value 3.


Тестовый режим в Windows вклюен. Полный лог тут — pastebin.com/q2qFDUxH
Спасибо за лог.
Есть подозрение, что это связано с флагом обязательной проверки подписи, которую сборочные скрипты VB выставляют в бинарниках при наличии хоть какой-нибудь подписи (в частности, этот же флаг не даёт VB запускаться в 32-битной Windows из-за невалидной подписи, хотя той всегда было по барабану на сертификаты). Сейчас я пытаюсь определить, в каких случаях этот флаг необходим (MSDN говорит, что для драйверов он обязателен) и, соответственно, как надо подправить скрипты, чтобы он выставлялся, только когда реально нужен.

Пока что в качестве эксперимента я собрал неподписанный вариант. К сожалению, в 64-битке его невозможно установить в тестовом режиме, надо перезагружаться и в загрузочном меню выбирать Disable Driver Signature Enforcement.
Большое спасибо, обязательно попробую собрать.

Кстати, если брать винду с торрентов, конфликт на удивление может быть вызван, например длл-кой отвечающей за набор иконок рабочего стола, и тому подобными мелочами.
В некоторых случаях для запуска vbox, мне помог банальный sfc /scannow.

Да, есть и такие конфликты. Насколько я понимаю, это вызвано тем, что при модификации библиотек становится невалидной подпись, и харденинг блокирует загрузку таких системных библиотек, считая их зловредными.
Статья обновлена с учётом версии 5.0.20. Также добавлена инструкция по обходу проблемы с неустанавливающимся самоподписанным дистрибутивом.
Разобрался с переходом VB 5.1.x на Qt5, обновил статью.
Ещё одно обновление: исправлена проблема с нерабочими сетевыми функциями (проверка обновлений, скачивание extpack'а) из-за того, что cURL собирался без поддержки OpenSSL. Ну и ещё кой-чего по мелочи, см. апдейт в конце статьи.
Очередной апдейт для версии 5.1.10. Ключевое изменение — выполнен переход на OpenSSL 1.1.
А вот бы получить ссылку на закачку.
Ссылочка в конце поста.
Статья обновлена для VB 5.1.22. Также существенно поменялись процедуры сборки для последних версий некоторых библиотек.
Огромное спасибо за столь подробную статью! Без нее мучался бы неделю, наверное, а так ушло всего часов 5 :)
Только сейчас заметил один нюанс. Инсталлятор, который скачивается с официального сайта, имеет внутри себя две версии — х86 и х64. Однако согласно данной инструкции, на выходе имеет два отдельных билда инсталлятора под разную разрядность. Возможно, подскажете, в какую сторону копнуть, чтобы они были одним целым? VBOX_WITH_COMBINED_PACKAGE, как я вижу, у Вас включен, но эффекта не дает.
Сорри за долгую реакцию, был без инета.
По данной инструкции получается именно комбинированный установщик, EXE-файл, внутри которого упакованы два MSI-пакета (32- и 64-битный) плюс CAB-архив с файлами, общими для обеих битностей.

Когда мы собираем 64-битную версию (VirtualBox-5.1.22_OSE-r115126-MultiArch_amd64.msi), это лишь промежуточный этап. На следующем шаге идёт не только сборка 32-битного пакета, но и упаковка всего собравшегося в единый инсталлятор. Я просто намеренно пропустил шаг сборки 32-битного MSI, потому что он автоматически собирается по зависимостям. После окончания сборки достаточно скопировать себе итоговый файл VirtualBox-5.1.22_OSE-r115126-MultiArch.exe, а всё остальное можно удалять. Оба MSI-пакета (ранее собранный 64-битный и свежесобранный 32-битный) уже находятся внутри.
Да, действительно, я не обратил внимание, что в последнем скрипте сборки путь к инсталлятору указывается другой. Вместо этого просто в скрипте для сборке х64 исправил архитектуру, в результате получал только два отдельных msi.

Кстати, обновил у себя исходники до 5.1.26, единственное что изменилось — теперь обязательно почему-то в параметрах к «cscript configure.vbs» нужно еще дописывать "--with-openssl32=C:\Programs\OpenSSL\x32". В остальном без изменений.

Спасибо!
нужно еще дописывать "--with-openssl32=C:\Programs\OpenSSL\x32"
А это как раз поправили одну из штук, которую я до этого вынужден был вставлять ручками — переменные с суффиксом x86 в LocalConfig.kmk. Теперь конфигуратор сам их прописывает в соответствии с переданным путём. Там ещё 32-битный libcurl так же можно указывать, если не ошибаюсь.
Очередное обновление, версия 5.2.2.

Ключевое изменение: теперь для 32-битных VBoxRem (VirtualBox Recompiler) используется MinGW 4.5.4, а не 3.3.3. Это, теоретически, может вызвать проблемы при работе на 32-битных хостах (в первую очередь, с выключенной виртуализацией). Я немного потестировал в таком режиме, проблем не обнаружил, поэтому счёл возможным перейти на такую сборку как на основную.
Апдейт до версии 5.2.18 с попутным обновлением библиотек и всякой мелочёвки.
Я тут обнаружил, что в собранной мной версии не работает запись с экрана виртуальных машин: крутилятор в строке состояния крутится, а видеофайл не создаётся. Оказалось, что для OpenSource-версии эта функция явным образом отключена. Причин я так и не уяснил, но как включить обратно, разобрался. Статья обновлена с учётом этой информации, ну и, как обычно, актуализированы версии VB и библиотек.
Разобрался со сборкой новой линейки версий, инструкция обновлена до версии 6.0.2.

CaptainFlint, Могли бы вы проверить почту, указанную в контактах на вашем сайте? У нас есть предложение о сотрудничестве

Почта у меня support_at_flint-inc_dot_ru. А то была не почта, а джаббер-аккаунт, почтой на нём я не пользуюсь (о чём должен был прийти автоответ). Залез туда, прочёл письмо — учитывая обновление статьи, думаю, что предложение уже неактуально. :-)
Очередное обновление статьи. Основное добавление — информация о подписывании драйверов для Windows 10 (к сожалению, доступное немногим). Ну и попутная актуализация версий VB и разных библиотек.
Наконец-то нашёл время, чтобы актуализировать статью. Ключевое изменение — прекращение поддержки 32-битных хостовых систем в версиях 6.1.x. Как следствие, большая часть 32-битных библиотек больше не используется (хотя OpenSSL и cURL всё ещё нужны для сборки 32-битной клиентской библиотеки).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории