что делать если процессор не поддерживает виртуализацию
Как настроить виртуализацию на персональном компьютере
У рядового пользователя ПК при слове «виртуализация» на ум наверняка придет некий футуристический процесс, связанный с погружением в виртуальную реальность или разработкой альтернативных цифровых миров. На деле же все, разумеется, намного прозаичнее. Виртуализация, говоря простым языком, это создание на персональном компьютере еще одной виртуальной рабочей среды, где можно запускать разнообразные процессы. Среда обособлена от основных служб и вспомогательных компонентов операционной системы, поэтому процессы, которые в ней происходят, никак не отражаются на производительности компьютера. Функционал этой технологии, таким образом, получается огромным: с ее помощью можно эмулировать сразу несколько рабочих сред, каждая из которых будет занята своей задачей.
Как понять, поддерживает ли процессор технологию виртуализации?
Определите модель процессора, который установлен в вашем персональном компьютере. Для этого зайдите в диспетчер задач (вызвать его можно, одновременно зажав клавиши Cntrl+Alt+Delete — всем хорошо знакомая и во многих случаях просто незаменимая связка), перейдите во вкладку «Производительность» и найдите там пункт «ЦП (центральный процессор». Справа от динамических показаний будет написана модель вашего процессора.
Альтернативный вариант: зайдите в панель управления (клик правой клавишей мыши по кнопке «Пуск»), перейдите во вкладку «Система и безопасность» и найдите пункт «Система». Название процессора будет указано в правом нижнем углу под общими сведениями.
После того, как вы определите модель процессора, скачайте специальную утилиту для диагностики его возможностей. Обратите внимание: для разных моделей необходимо использовать разные программы. Для процессоров Intel — Intel Processor Identification Utility, для AMD — AMD-V. Скачивайте утилиты только с официальных сайтов компаний-производителей, в противном случае велика вероятность занести на компьютер вредоносное ПО.
Как войти в BIOS на ПК?
Чтобы настроить виртуализацию, необходимо войти в раздел системных настроек — BIOS. Сделать это можно как при помощи специальных «горячих клавиш», так и непосредственно из рабочей среды компьютера.
В первом случае перезапустите устройство и в момент, когда на экране появится логотип компании-производителя, нажмите нужную клавишу. Обратите внимание: у разных моделей горячие клавиши тоже разные, ими могут быть F8, F12, F2, Delete и так далее. Подробный список горячих клавиш для каждой модели можно без труда отыскать в интернете.
Во втором случае откройте панель управления, найдите вкладку «Обновление и безопасность», а затем «Восстановление». Выберите пункт «Особые варианты загрузки», дождитесь, пока компьютер выполнит перезагрузку и в появившемся окне щелкните по строке «Диагностика» — «Дополнительные параметры» — «Параметры встроенного ПО UEFI». Компьютер снова перезапустится, после чего перед вами откроется окно с необходимыми настройками.
Как включить виртуализацию на процессоре Intel
Зайдя в BIOS, найдите строку Intel Virtualization Technology. Смените значение параметра на Enable, сохраните внесенные изменения (для этого нужно нажать на Y и на F10) и перезапустите компьютер.
Как включить виртуализацию на процессоре AMD
Первые шаги остаются прежними: определяем модель процессора и заходим в BIOS. После этого ищем строку SVM Mode и точно так же, как в предыдущем пункте, меняем ее значение на Enable. Сохраняем все сделанные изменения, выходим из системных настроек, перезапускаем компьютер.
Как включить виртуализацию в Windows 10
Чтобы запустить собственное средство виртуализации операционной системы Windows 10, первым делом вызовите командную строку (клавиши WIN+R). Наберите в открывшемся окне слово control, после чего нажмите клавишу Enter.
На экране появится панель управления системой. Далее перейдите во вкладку под названием «Программы и компоненты».
Из нее перейдите во вкладку «Включение и выключение компонентов Windows».
Найдите утилиту под названием Hyper-V, раскройте связанное с ним контекстное меню и расставьте галочки напротив всех имеющихся элементов, чтобы их активировать.
После этого компьютер проведет поиск необходимых компонентов, загрузит и настроит их, если потребуется.
Как включить виртуализацию в Windows 7
Cпособ 1. Провести настройку через BIOS. Подробная инструкция представлена выше.
Способ 2. Скачать специальный программный пакет с официального сайта Microsoft. Обратите внимание — загруженные утилиты будут работать только в том случае, если ваш процессор поддерживает виртуализацию.
Способ 3. Обновить операционную систему до Windows 8 и более старших версий.
Заключение
Виртуализация — прогрессивная современная технология, которая позволяет существенно расширить возможности вашего персонального компьютера. Ее активация и настройка может вызвать небольшие затруднения у неопытных пользователей ПК, но эффективность и производительность, которые вы получите взамен, с лихвой искупают все неудобства.
Включаем виртуализацию в BIOS
Виртуализация может понадобиться тем пользователям, которые работают с различными эмуляторами и/или виртуальными машинами. И те и те вполне могут работать без включения данного параметра, однако если вам требуется высокая производительность во время использования эмулятора, то его придётся включить.
Важное предупреждение
Изначально желательно убедиться, есть ли у вашего компьютера поддержка виртуализации. Если её нет, то вы рискуете просто зря потратить время, пытаясь произвести активацию через BIOS. Многие популярные эмуляторы и виртуальные машины предупреждают пользователя о том, что его компьютер поддерживает виртуализацию и если подключить этот параметр, то система будет работать значительно быстрее.
Если у вас не появилось такого сообщения при первом запуске какого-нибудь эмулятора/виртуальной машины, то это может значить следующее:
Включение виртуализации на процессоре Intel
Воспользовавшись этой пошаговой инструкцией, вы сможете активировать виртуализацию (актуальна только для компьютеров, работающих на процессоре Intel):
Включение виртуализации на процессоре AMD
Пошаговая инструкция выглядит в этом случае похожим образом:
Включить виртуализацию на компьютере несложно, для этого нужно лишь следовать пошаговой инструкции. Однако если в BIOS нет возможности включить эту функцию, то не стоит пытаться это сделать при помощи сторонних программ, так как это не даст никакого результата, но при этом может ухудшить работу компьютера.
Помимо этой статьи, на сайте еще 12422 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Сообщение об ошибке виртуализации с аппаратной программой в режиме Windows XP в виртуальном компьютере с Windows на компьютере с Windows 7
Проблемы
Виртуальный компьютер с Windows и режим Windows XP устанавливаются на компьютер под управлением Windows 7. При попытке запустить или настроить режим Windows XP на виртуальном компьютере с Windows вы получаете одно из следующих сообщений об ошибке:
Обратите внимание, что при попытке запустить или настроить любую другую виртуальную машину в виртуальном компьютере с Windows может появиться одно из следующих сообщений об ошибке.
Не удается запустить виртуальный компьютер с Windows, так как виртуализация с аппаратной программой отключена
Это сообщение об ошибке указывает на то, что функция виртуализации с поддержкой оборудования (HAV) не включена на вашем компьютере.
Не удается запустить процесс виртуальных компьютеров с Windows. Дополнительные сведения можно посмотреть в журнале системных событий
Это сообщение об ошибке указывает на то, что процессор не поддерживает функцию HAV.
Не удается запустить виртуальный компьютер с Windows, так как этот компьютер не поддерживает виртуализацию с поддержкой оборудования
Это сообщение об ошибке вы получаете при попытке запустить или настроить виртуальную машину, которая не работает в режиме Windows XP. Это сообщение об ошибке указывает на то, что процессор не поддерживает функцию HAV.
Причина
Виртуальный КОМПЬЮТЕР Windows и режим Windows XP поддерживаются только на компьютерах, процессоры которых поддерживают функцию HAV. Поэтому, если процессор не поддерживает функцию HAV или эта функция отключена, вы не сможете запускать виртуальные машины на виртуальном компьютере с Windows.
Решение
Важно, это обновление поддерживает только виртуальные машины Windows XP Пакет обновления 3.
Обратите внимание, что это обновление входит в пакет виртуального ПК с Windows для систем с Windows 7 Пакет обновления 1: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=3702Для решения этой проблемы выполните следующие
С помощью средства обнаружения виртуализации, поддерживаемого оборудованием Майкрософт, определите, поддерживает ли процессор функцию HAV. Чтобы скачать это средство, посетите следующий веб-сайт Корпорации Майкрософт:
Если процессор поддерживает функцию HAV, но эта функция не включена, средство обнаружения виртуализации с поддержкой оборудования корпорации Майкрософт отображает следующее сообщение об ошибке:Чтобы включить эту функцию в
ФУНКЦИИ БИЗ, выполните инструкции на следующем веб-сайте корпорации
Майкрософт:
Если процессор не поддерживает функцию HAV, средство обнаружения виртуализации, поддерживаемое оборудованием Корпорации Майкрософт, выведет следующее сообщение об ошибке:Важно, рекомендуем установить это обновление только в том случае, если процессор не поддерживает
Известная проблема после установки этого обновления может оказаться невозможной скопировать и вкопировать файлы между Windows 7 и Windows XP Mode (или любой другой
виртуальной машиной). Чтобы обойти эту проблему, скопируйте и вкопируйте общие диски Windows 7, к ним можно получить доступ с виртуальной машины. Для этого выполните следующие действия:
Убедитесь, что вы включаете функции интеграции в виртуальной машине. Дополнительные сведения о том, как включить эти функции, можно найти на следующем веб-сайте корпорации Майкрософт:
На виртуальной машине откройте проводник и скопируйте или вкопируйте файлы между диском виртуальной машины и общим диском Windows 7.
Обратите внимание, что общий диск Windows 7 отображается в как буква диска>на имени >.
Сведения об обновлении
Получение обновления
В Центре загрузки Майкрософт доступны для скачивания следующие файлы:
Все поддерживаемые 32-разрядные (x86) версии Windows 7
скачайте пакет обновления.
Все поддерживаемые 64-разрядные (x64) версии Windows 7
скачайте пакет обновления.
Дополнительные сведения о загрузке файлов поддержки корпорации Майкрософт см. в следующей статье базы знаний Майкрософт:
119591 Как получить файлы поддержки Майкрософт от веб-служб, которые корпорация Майкрософт проверяла этот файл
на вирусы. Корпорация Майкрософт использует самые последние на момент публикации файла версии антивирусного программного обеспечения. Файл хранится на защищенных серверах, что предотвращает его несанкционированное изменение.
Предварительные условия
Чтобы применить это обновление, необходимо использовать Windows 7 наряду с виртуальным компьютером с Windows.
Сведения о внесении изменений в реестр
Чтобы использовать обновление из этого пакета, не требуется вносить изменения в реестр.
Требование перезагрузки
После установки этого обновления может потребоваться перезагрузить компьютер.
Сведения о замене обновлений
Это обновление не заменяет ранее выпущенное обновление.
Сведения о файлах
Глобальная версия этого исправления устанавливает файлы с атрибутами, которые указаны в приведенных ниже таблицах. Даты и время для файлов указаны в формате UTC. Даты и время для этих файлов на локальном компьютере отображаются с учетом часового пояса и перехода на летнее время. Кроме того, даты и время могут изменяться при выполнении определенных операций с файлами.
Заметки о файлах Windows 7
Файлы, которые относятся к определенному продукту, вехе (RTM, SP n)и ветви обслуживания (LDR, GDR), можно определить, изучив номера версий файлов, как показано в следующей таблице:
Как включить виртуализацию на компьютере или ноутбуке с Windows 10, 8.1 или Windows 7
Виртуализация позволяет пользователям запускать некоторые программы, и даже операционные системы в виртуальной машине, а не ставить их на жесткий диск. Изначальной возможностью пользовались тестировщики, которые работали с новыми программными продуктами. С ее помощью они защищали свою операционную систему от повреждения или вирусов. Сейчас у каждого пятого пользователя стоят эмуляторы для виртуализации рабочей среды Android или принадлежащей к другим операционным системам. Если вы решили использовать защищенную рабочую среду в своем компьютере, то необходимо знать, как включить виртуализацию в Windows.
Что такое виртуализация?
Термин «виртуализация» сегодня определенно в моде — его постоянно употребляют люди, хоть немного знакомые с компьютерной средой. Но далеко не всем известно его значение, и далеко не все представляют себе истинный потенциал этой продвинутой технологии.
Виртуализация, выражаясь самым простым языком, это компьютер в компьютере. Ее использование позволяет вам создавать виртуальную рабочую среду — своего рода изолированную «песочницу», процессы в которой никак не будут затрагивать ресурсы вашей собственной рабочей машины. При помощи виртуализации можно, к примеру, запускать сразу несколько версий одной операционной системы — удобно для тех, кто ценит ретро-игры или часто пользуется устаревшими, но полезными и функциональными приложениями, несовместимыми и актуальной версией Windows.
Дополнительный плюс — процессы, как мы уже отмечали чуть ранее, в этой «песочнице» протекают обособленно, а значит, вероятность занести на компьютер вирус или другое вредоносное ПО стремится к нулю.
Стоит, впрочем, отметить, что практически у любой современной технологии есть свои нюансы и «подводные камни». В нашем случае к ним можно отнести возможности процессоров — далеко не все из них способны работать с виртуализацией.
Вопросы и ответы можно прочитать по ссылке.
Включение технологии аппаратной виртуализации
Виртуальные машины используются для тестирования операционных систем, тестовых программ в среде песочницы (Sandbox) и для экспериментов с системными функциями, не беспокоясь о каких-либо последствиях. Есть часть популярных программ, например, VirtualBox, которые могут работать без этой функции, но тогда не сможем рассчитывать на слишком хорошую производительность. Включение аппаратной виртуализации сделает действия виртуальных машин гораздо мощнее.
Технологии аппаратного ускорения, встроенные в процессоры AMD и Intel, известны как «AMD-V» и «Intel VT-X». Во многих случаях виртуализация по умолчанию отключена. При попытке включить виртуальную машину функция выбрасывает предупреждение об ошибке, информирующее пользователя о том, что для работы программного обеспечения требуется аппаратное ускорение, которое в текущий момент отключено.
Функцию виртуализации можно включить или отключить по желанию и все, что нужно сделать, — это получить доступ в BIOS или UEFI.
Как понять, поддерживает ли мой процессор виртуализацию?
Сделать это собственными средствами операционной системы невозможно, единственный вариант — установка сторонних утилит. Но для начала нужно определиться с тем, какой вообще процессор установлен в вашем компьютере или ноутбуке.
Шаг 1
Запустите диспетчер задач. «Классический» способ — одновременно зажать клавиши Ctrl + Alt + Delete. Также в десятой версии Windows диспетчер можно открыть через панель управления — для этого щелкните правой кнопкой мыши по значку «Пуск» и в появившемся меню выберите соответствующий пункт.
Шаг 2
В диспетчере задач перейдите во вкладку «Производительность» и кликните по строчке «ЦП (центральный процессор»). В правой верхней части открывшегося окна будет указана модель вашего процессора.
Шаг 3
Для процессоров модели Intel: скачайте с официального сайта компании-производителя утилиту под названием Intel Processor Identification Utility. Установите ее и запустите. В открывшемся окне найдите вкладку CPU Technologies. Если напротив модели вашего процессора указано слово «да» или просто написано название конкретной технологии, поздравляем — ваш компьютер поддерживает визуализацию.
Для процессоров модели AMD вся процедура происходит аналогичным образом — с тем лишь исключением, что программа для определения конфигурации называется AMD-V. Скачивать ее, разумеется, тоже нужно с сайта производителя — компании AMD.
Системные требования
Перед установкой любого софта необходимо убедиться, что ваш аппарат его потянет. Иными словами, соответствует ли железо вашего ПК или ноутбука минимальным системным требованиям. Для того чтобы программа работала стабильно, быстро, без зависаний и тормозов, периодических вылетов и долгой загрузки, желательно чтобы компьютер соответствовал рекомендуемым системным требованиям, которые требуют гораздо большей мощности железа нежели минимальные.
Запуск движка виртуализации
Для запуска BlueStacks необходимы следующие минимальные системные требования:
Помимо этого, вы должны обладать правами администратора (на работе в офисе установить не получится, увы) и иметь свежие драйвера чипсета и видеокарты. Если же ваш аппарат не соответствует всем перечисленным требованиям, то в процессе установки и последующего запуска будут происходить те или иные ошибки.
Как войти в системные настройки BIOS?
Чтобы это сделать, придется немного покопаться в системных настройках. Впрочем, эта процедура вовсе не так сложна, как может показаться поначалу. Затруднения могут возникнуть только на этапе входа в BIOS. Все дело в том, что у разных моделей персональных компьютеров и ноутбуков свои «ключи» — «горячие клавиши», которые нужно нажать, чтобы войти в нужный раздел. Но в общих чертах процедура схожа: чтобы попасть в BIOS, вам нужно перезапустить компьютер, и в тот момент, когда на экране появится фирменный логотип, нажать нужную кнопку. У изделий фирмы Acer это F8, у Asus — F12 и так далее.
Альтернативный вариант — открыть параметры компьютера, выбрать пункт «Обновление и безопасность», а затем перейти во вкладку «Восстановление». На этой вкладке нужно будет щелкнуть по строчке «Особые варианты загрузки». Компьютер перезапустится, после чего появится синий экран, где нужно будет выбрать пункт «Диагностика» + «Дополнительные параметры» — «Параметры встроенного ПО UEFI». За этим последует еще одна перезагрузка, после которой вы наконец попадете в нужный раздел с настройками.
Итак, мы успешно вошли в BIOS. Что дальше?
Несмотря на определенные сложно с активацией и настройкой, виртуализация — вещь несомненно полезная. Возможность иметь еще один (а то и не один – все зависит от возможностей процессора) компьютер, куда можно «сбрасывать» лишние задачи, чтобы не загружать ими операционную память и не тратить ресурсы, наверняка обрадует как рядовых, так и продвинутых пользователей ПК. Так что если вы еще не испытали на себе все прелести этой модной сейчас технологии — непременно займитесь этим в ближайшее время. А наша инструкция вам поможет.
Настраиваем виртуализацию на процессоре Intel
Шаг 1
Переходим во вкладку Advanced. Там находим радел под названием CPU Configuration, а в нем — отдельную строчку под названием Intel Virtualization Technology.
Шаг 2
По умолчанию напротив указанной строчки должен стоять параметр «Disabled ». Если состояние параметра отображается как «Enable», значит, виртуализация уже работает, и вы можете смело и без ограничений ей пользоваться. Если нет, значение параметра следует поменять вручную, после чего перезапустить компьютер.
Причины
Следует отметить, что для Bluestacks характерны одинаковые проблемы вне зависимости от версии ОС или самой программы. Основной причиной неисправности можно отметить неполное соответствие системных требований или случайные сбои в работе приложения.
Ошибка Bluestacks «не запускается движок виртуализации» (оригинальный текст сообщения) возникает на 99% загрузки программы. В этом и сложность на слабых компьютерах. Можно выделить такие причины этого сбоя:
Включаем виртуализацию в операционной системе Windows 10
В десятой версии самой популярной операционной системы есть опция, позволяющая включать виртуализацию и без долгих манипуляций с настройками BIOS.
Шаг 1
Вызываем командную строку одновременным нажатием клавиш WIN и R. В появившемся окне пишем слово control и нажимаем Enter.
Шаг 2
Если все было сделано правильно, сразу после нажатия вводной клавиши перед нами откроется панель управления ОС. В ней нужно последовательно отыскать пункты «Программы и компоненты» и «Включение и отключение компонентов Windows».
В первых же строчках появившегося списка вы увидите пункт Hyper-V – это и есть необходимая нам утилита. «Раскройте» ее, нажав на значок в виде плюса, и проставьте галочки во всех свободных окошках.
После этого сохраните сделанные изменения и выйдите из панели управления.
Если все было сделано правильно, Hyper-V сразу же по окончании манипуляций будет доступна в меню программ.
Перезагрузка Bluestacks
Когда движок не запускается, это будет выглядеть примерно так:
Прогресс загрузки просто стоит на месте, и всё.
Самое простое – попробовать просто перезагрузить движок. Для этого в самом интерфейсе эмулятора предусмотрен пункт меню.
Если это не помогает, тогда можно применить универсальный способ борьбы с любыми неполадками Windows: перезагрузить весь компьютер.
Ломаем BIOS: включение поддержки виртуализации VT-x на нетбуке Acer Aspire One
В данной статье мы расскажем вам пошагово о том, как допилить напильником свой нетбук или ноутбук, в котором по какому-то недоразумению выключен и залочен в таком состоянии бит 2 в MSR 0x3A — попросту говоря, у вас есть в процессоре поддержка виртуализации, но она заблокирована биосом. ПРЕДУПРЕЖДЕНИЕ: всё, описанное в этой статье, рассчитано на то, что вы знаете, что делаете. Всё на свой страх и риск! Если не уверены — не пытайтесь повторить это дома.
Итак, в чем же проблема?
Проблема, которую мы будем решать, для конечного пользователя компьютера выглядит так: При использовании гипервизора второго типа (например, VirtualBox)
Вот такое сообщение вы можете видеть при попытке запуска виртуалки с числом процессоров, большим чем 1:
Аналогичное сообщение об ошибке вы также получаете, если собираетесь запускать 64-битную виртуальную машину (например, Debian amd64) с 32-разнядной хост ОС, например WinXP.
Можно ли вылечить это?
На этот вопрос можно ответить, проверив некоторые биты в некоторых словах состояния процессора. Самый простой способ убедиться, что в вашем случае проблема лечится — это посмотреть на то, что показывает программа SecurAble. В моем случае это выглядело так:
Итак, если у вас программа показывает такую же картинку, как показанная выше, то вы можете вылечить эту проблему. Однако нюанс заключается в том, что это установить нужный бит в регистре процессора можно только в БИОСе, поскольку вредный БИОС вашего ноутбука его выставляет в ноль, потом включает блокирующий бит и изменение этого бита более невозможно (до перезагрузки компа, где БИОС во время POST опять его сбросит и залочит).
Биос на нетбуке Acer Aspire производства Insyde, настройки его очень скудны и по F2 естественно мы не можем зайти в программу редактирования настроек БИОСа и включить виртуализацию там. Это было бы слишком просто.
Поэтому, мы будем дизассемблировать БИОС и менять его код, чтобы у нас бит был выставлен в 1. Если готовы, то читаем далее.
Что нужно знать до начала работы
Итак, некоторая техническая информация — чтобы понимать, что мы делаем и зачем.
Современные процессоры, по крайней мере многие из них, имеют поддержку виртуализации. За нее отвечает бит №5 в слове ECX при вызове команды CPUID с параметром EAX=01H. Именно этот способ проверки — единственно верный, поскольку, как показывает практика, сайт Intel врет, например, для моего процессора Intel Atom N570. По этой ссылке написано:
Intel® Virtualization Technology (VT-x) No Однако мы-то знаем, что это неправда. Для тех, кто на «ты» с программированием на ассемблере, не составит труда выяснить это, написав нечто вроде MOV EAX, 1 CPUID и проверив потом 5-й бит регистра ECX. Мне же было лень этим заниматься, поэтому я скачал опенсорсовую программу CPUID Explorer, запустил ее и посмотрел результат. К слову, CPU-Z тут непригодна — она дает результат слишком «юзер френдли» — нам же нужно было узнать точное значение бита. Вот как это выглядело в моем случае:
В кружочек обведен интересующий нас бит VMX. Он выставлен в 1, он есть, несмотря на то, что говорит нам сайт Intel. Документация по командам процессора на стр. 215 говорит нам про команду CPUID, что Bit #5 VMX Virtual Machine Extensions. A value of 1 indicates that the processor supports this technology
Но это еще не все. Чтобы гипервизоры второго типа смогли пользоваться командами поддержки виртуализации (VMX), необходимо явным образом разрешить эти инструкции в MSR (специальном регистре процессора) номер 0x3A. Вот что говорит нам документация по этому регистру на стр. 237: регистр 3Ah: IA32_FEATURE_CONTROL Бит 0: lock bit — если он выставлен, то дальнейшие модификации этого регистра не допускаются, до следующей перезагрузки. Бит 1: VMX в SMX — safer mode extensions. Работа функций виртуализации в SMX допускается только тогда, когда процессор поддерживает SMX — это указывается в соседнем слева, 6-м бите в ECX при вызове команды CPUID.01H — на картинке выше этот бит равен нулю, наш процессор Atm N570 не поддерживает SMX — поэтому и в MSR 0x3A бит №1 должен быть нулевым. Бит 2: VMX не в SMX — это, собственно, и есть бит, отвечающий за поддержку виртуализации. Он соответствует обведенному в кружочек биту в CPUID и именно он должен быть выставлен в 1.
Как проверить содержимое MSR 0x3A
Чтобы убедиться, что мы все про наш компьютер поняли верно, нужно посмотреть, что на самом деле у нас хранится в MSR 0x3A. Для этого я использовал пакет msr-tools в Debian (реальном, не виртуальном. В виртуальном результат неверный). Вот так вы сможете проверить значение этого бита: — ребутаемся в Debian, потом: # apt-get install msr-tools # modprobe msr # rdmsr 0x3A 9
Девять. Девять это 00001001. Как видим, наш BIOS использует недокументированный бит №3 в специальном слове регистра 0x3A — по документации, этот бит Reserved. Но это не суть. Суть в том, что у нас включен lock bit и выключен наш VMX бит №2 — так что все верно, программа SecurAble не врет и у нас действительно поддержка виртуализации отключена на уровне BIOS, хотя и поддерживается процессором.
Почему эту проблему нужно решать
Дело в том, что при отключенной поддержке виртуализации (VMX) в процессорном слове 0x3A ваши виртуальные машины в VirtualBox работают в режиме паравиртуализации. Они, не имея возможности перевести гипервизор в VMX Root и виртуальную машину в VMX Non-root operation, вынуждены делать трансляцию процессорных инструкций НА ЛЕТУ. Проблему представляют 17 инструкций процессора, которые не «VM-safe», т.е. они используют единственные на весь компьютер регистры или блоки данных (таблицы) в процессоре. Эти команды: SGDT, SIDT, SLDT, SMSW, PUSHF/POPF, LAR, LSL, VERR/VERW, CALL, JMP, INT n, INTO, RET, STR и даже банальная MOV! Все эти инструкции изменяются на лету, чтобы виртуальная машина выполнила их в безопасном для системы виде. Подробнее про эту проблему описано тут (англ.). Из-за этого страдает быстродействие виртуальной машины.
Что нам потребуется
Для этой задачи нам потребуются следующие вещи:
Для начала, очень важно знать, что если что-то пойдет не так, то как восстановить компьютер. Для моего ноутбука с биосом InsydeH20 существует недокументированная процедура восстановления биоса:
И вуаля, материнская плата сама (как — загадка) выкачает с USB HDD новый биос и прошьет его за 1 минуту, потом ноут ребутнется.
Я проверил этот способ, залив таким образом стандартный биос с сайта производителя (другой версии, чем стоял у меня до этого) — действительно, работает, версия биоса обновилась. Таким же способом я решил в итоге заливать в систему и прохаченный биос.
Итак, начинаем: Распаковываем биос из SFX-архива, скачанного с сайта производителя. Сам иос будет иметь имя файла что-то вроде ZE6.fd и иметь размер 2 мегабайта ровно. Далее нам необходимо распаковать БИОС, поскольку он сжат. Для этого используется программа PhoenixTool.exe. В первое поле в ее окошке мы указываем этот сжатый биос, и программа сама его декомпиляет на, в моем случае, целых 609 исходных файлов, имеющих имена в формате GUID.ext. Часть из этих файлов — конфигурационные, а часть — двоичные, но все с расширением ROM. Некоторые двоичные файлы содержат программы со стандартным виндовским PE заголовком.
Наша задача — среди этих 609 файлов найти файл, содержащий нужную нам инструкцию
Такой код нашелся только в одном файле с именем 62D171CB-78CD-4480-8678-C6A2A797A8DE.MOD, и выглядел этот код так (после некоторой моей работы по переименованию функций в более понятные, и добавлении пары комментов):
LOCK_VMX proc near push esi push 3Ah call ReadMSR pop ecx mov ecx, eax xor esi, esi and ecx, 1 or ecx, esi pop esi jnz short exitprc ; if(ReadMSR() & 1) goto exitprc; push edx or eax, 1 ; Set lock bit (bit #0) push eax push 3Ah call WriteMSR add esp, 0Ch exitprc: retn LOCK_VMX endp
По определению, код, который лочит регистр, делает это один раз. Потому это самое удачное место для того, чтобы сделать наш хак: меняем цифру 1 на цифру 5 в инструкции:
or eax, 1 Это приведет к тому, что одновременно с выставлением lock bit мы выставляем бит VMX (бит #2). Заметим тут, что мы не имеем права выставлять бит #1, поскольку набор инструкций SMX у нас в процессоре не поддерживается (это говорит CPUID.1H:ECX bit 6.
Менять будем не совсем в файле *.ROM, а в оплетке *.MOD, которая содержит этот файл. Для этого нужно в программе PhoenixTool.exe, которая у нас уже открыта и биос в нее уже загружен, нажать на кнопку Structure, и инайти ветку с нашим именем файла:
Нажимаем кнопку Extract, получаем файл *.MOD (который состоит из заголовка + тела файла *.ROM), и правим наш бит именно в этом файле MOD. Смотрим в IDA, какой двоичный код соответствует окрестности инструкции, которую мы меняем, и в HEX редакторе открываем файл, ищем это место в коде, и меняем всего 1 байт с 01 на 05. Сохраняем модифицированный файл *.MOD. Потом в PhoenixTool нажимаем Replace, выбираем модифицированный MOD, и нажимаем Exit. Всё. Программа сама пересобрала биос и упаковала его для нас, при этом назвала его тем же именем, что и было (старый файл сохранен с расширением OLD).
Всё. Теперь заливаем единственный файл с новым биосом на USB HDD (можно и на USB флешку), и выполняем описанную выше процедуру аварийного восстановления биоса. Она прошьет комп этом новым биосом и всё будет готово.
Вот как теперь выглядит вывод программы SecurAble:
Теперь VirtualBox запускает виртуалки с 4 ядрами (а не с одним, как было раньше). Теперь я из-под своей основной 32-разряной операционной системы могу запускать 64-битные операционки в виртуалках. И, что самое главное, теперь виртуалки на самом деле виртуализованные (гипервизор использует инструкции VMX), а не паравиртуализованные.
P.S. В биосах других производителей (не Insyde) есть возможность править не сам BIOS, а только его настройки, извлекаемые программой SYMCMOS.EXE. Там процесс такой же, за исключением того, что в дизассемблированном биосе находится номер настройки, которая используется для запрещения или разрешения VMX, и потом эта настройка правится непосредственно в CMOS биоса. В моем же биосе таких настроек нет, или программа symcmos их не находит, поэтому такой путь допиливания напильником не подходит в моем случае. Путь непосредственного хака биоса выглядит надежнее: мы таким образом просто игнорируем какие бы то ни было настройки биоса, просто выставляем бит VMX и лочим регистр 0x3A после этого.
Счастье есть Спасибо, что дочитали до конца.