24 сентября 2012 в 01:44

Ломаем BIOS: включение поддержки виртуализации VT-x на нетбуке Acer Aspire One

В данной статье мы расскажем вам пошагово о том, как допилить напильником свой нетбук или ноутбук, в котором по какому-то недоразумению выключен и залочен в таком состоянии бит 2 в MSR 0x3A — попросту говоря, у вас есть в процессоре поддержка виртуализации, но она заблокирована биосом.

ПРЕДУПРЕЖДЕНИЕ: всё, описанное в этой статье, рассчитано на то, что вы знаете, что делаете. Всё на свой страх и риск! Если не уверены — не пытайтесь повторить это дома.

Итак, в чем же проблема?


Проблема, которую мы будем решать, для конечного пользователя компьютера выглядит так: При использовании гипервизора второго типа (например, VirtualBox)
  • вы не можете запускать виртуалки с более, чем одним процессором
  • вы не можете запускать 64-битные гостевые операционные системы внутри 32-битной хост ОС.


Вот такое сообщение вы можете видеть при попытке запуска виртуалки с числом процессоров, большим чем 1:
image

Аналогичное сообщение об ошибке вы также получаете, если собираетесь запускать 64-битную виртуальную машину (например, Debian amd64) с 32-разнядной хост ОС, например WinXP.

Можно ли вылечить это?


На этот вопрос можно ответить, проверив некоторые биты в некоторых словах состояния процессора. Самый простой способ убедиться, что в вашем случае проблема лечится — это посмотреть на то, что показывает программа SecurAble. В моем случае это выглядело так:
image

Итак, если у вас программа показывает такую же картинку, как показанная выше, то вы можете вылечить эту проблему. Однако нюанс заключается в том, что это установить нужный бит в регистре процессора можно только в БИОСе, поскольку вредный БИОС вашего ноутбука его выставляет в ноль, потом включает блокирующий бит и изменение этого бита более невозможно (до перезагрузки компа, где БИОС во время 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 тут непригодна — она дает результат слишком «юзер френдли» — нам же нужно было узнать точное значение бита. Вот как это выглядело в моем случае:
image
В кружочек обведен интересующий нас бит 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! Все эти инструкции изменяются на лету, чтобы виртуальная машина выполнила их в безопасном для системы виде. Подробнее про эту проблему описано тут (англ.). Из-за этого страдает быстродействие виртуальной машины.

Что нам потребуется


Для этой задачи нам потребуются следующие вещи:
  • оригинальный BIOS для нашего нетбука с сайта производителя.
  • IDA
  • phoenixtool210.zip (гугл знает, где скачать)
  • HHD Hex Editor Neo или любой другой HEX Editor
  • FAR Manager :)
  • nasm — для дизассемблирования
  • Знание о том, как залить BIOS аварийным способом


Для начала, очень важно знать, что если что-то пойдет не так, то как восстановить компьютер. Для моего ноутбука с биосом InsydeH20 существует недокументированная процедура восстановления биоса:
  • отформатить USB HDD в FAT16 с партицией мегов на 100 (FAT32 не понимает)
  • залить туда один файл со сжатым биосом (ZE6.fd в моем случае)
  • выключить ноут, потом вынуть все USB устройства и аккумулятор
  • вынуть шнур питания
  • подключить USB HDD
  • нажать и удерживать Esc+Fn
  • воткнуть питание и через 5 сек нажать кнопку включения питания
  • отпустить кнопки клавиатуры

И вуаля, материнская плата сама (как — загадка) выкачает с USB HDD новый биос и прошьет его за 1 минуту, потом ноут ребутнется.

Я проверил этот способ, залив таким образом стандартный биос с сайта производителя (другой версии, чем стоял у меня до этого) — действительно, работает, версия биоса обновилась.
Таким же способом я решил в итоге заливать в систему и прохаченный биос.

Итак, начинаем:
Распаковываем биос из SFX-архива, скачанного с сайта производителя. Сам иос будет иметь имя файла что-то вроде ZE6.fd и иметь размер 2 мегабайта ровно.
Далее нам необходимо распаковать БИОС, поскольку он сжат. Для этого используется программа PhoenixTool.exe. В первое поле в ее окошке мы указываем этот сжатый биос, и программа сама его декомпиляет на, в моем случае, целых 609 исходных файлов, имеющих имена в формате GUID.ext. Часть из этих файлов — конфигурационные, а часть — двоичные, но все с расширением ROM. Некоторые двоичные файлы содержат программы со стандартным виндовским PE заголовком.

Наша задача — среди этих 609 файлов найти файл, содержащий нужную нам инструкцию
WRMSR

оказалось, что искать команду MOV EAX, 3AH перед командой WRMSR бессмысленно — в моем биосе WRMSR оформлена как отдельная функция и принимает параметры через стек. Поэтому я делал это так (мне показалось то проще, чам в IDA): установил на Linux пакет nasm, который включает в себя ndisasm. Потом дизассемблировал все файлы *.ROM командой
ndisasm -b 32 file.rom > file.asm

И потом простым поиском нашел команду wrmsr в них — таких файлов оказалось 29. Потом пришлось каждый из ни загружать в IDA и искать там нужный код, который лочит регистр 3AH.

Такой код нашелся только в одном файле с именем 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, и инайти ветку с нашим именем файла:
image
Нажимаем кнопку Extract, получаем файл *.MOD (который состоит из заголовка + тела файла *.ROM), и правим наш бит именно в этом файле MOD. Смотрим в IDA, какой двоичный код соответствует окрестности инструкции, которую мы меняем, и в HEX редакторе открываем файл, ищем это место в коде, и меняем всего 1 байт с 01 на 05. Сохраняем модифицированный файл *.MOD. Потом в PhoenixTool нажимаем Replace, выбираем модифицированный MOD, и нажимаем Exit. Всё. Программа сама пересобрала биос и упаковала его для нас, при этом назвала его тем же именем, что и было (старый файл сохранен с расширением OLD).

Всё. Теперь заливаем единственный файл с новым биосом на USB HDD (можно и на USB флешку), и выполняем описанную выше процедуру аварийного восстановления биоса. Она прошьет комп этом новым биосом и всё будет готово.

Вот как теперь выглядит вывод программы SecurAble:
image

Теперь VirtualBox запускает виртуалки с 4 ядрами (а не с одним, как было раньше). Теперь я из-под своей основной 32-разряной операционной системы могу запускать 64-битные операционки в виртуалках.
И, что самое главное, теперь виртуалки на самом деле виртуализованные (гипервизор использует инструкции VMX), а не паравиртуализованные.

P.S. В биосах других производителей (не Insyde) есть возможность править не сам BIOS, а только его настройки, извлекаемые программой SYMCMOS.EXE. Там процесс такой же, за исключением того, что в дизассемблированном биосе находится номер настройки, которая используется для запрещения или разрешения VMX, и потом эта настройка правится непосредственно в CMOS биоса. В моем же биосе таких настроек нет, или программа symcmos их не находит, поэтому такой путь допиливания напильником не подходит в моем случае. Путь непосредственного хака биоса выглядит надежнее: мы таким образом просто игнорируем какие бы то ни было настройки биоса, просто выставляем бит VMX и лочим регистр 0x3A после этого.

Счастье есть :) Спасибо, что дочитали до конца.
+121
83973
332
danx 15,5

Комментарии (56)

0
BupycNet #
У меня Atom N450 есть ли вероятность, что он держит виртуализацию? rdmsr 0x3A выдал у меня 0. Если ли аналог SecurAble для Linux? Ну или посмотреть как нибудь. А то у вас в статье надо прыгать туда сюда, нет определенности. Сам я асм не знаю, но 64 бит на 32 очень надо запустить. Просто жизненно необходимо. По учебе надо вин сервер 2008 запустить.
0
ArtRoman #
Вин сервер есть и 32-битный. А вот вин сервер 2008 R2 уже только 64. Это сильно разные версии сервера.
А если на машину поставить 64-битный хост, возможность виртуализации 64-битного клиента становится доступной?
0
danx #
Да, одинаковые разрядности — это единственное, что остается для тех систем, где нет или задизблен VMX. А вот хакинтош к примеру только 64-битный, и до сегодняшнего дня мне приходилось перегружаться из 32-битной винды в него. А счас можно внутри виртуалки пускать.
0
merlin-vrn #
Не всегда. На 64-битной машине без VMX/SVM тот же виртуалбокс, запущенный из 64-битной ОС, согласится запускать только 32-битных гостей. Разумеется, в режиме эмуляции, что ещё и медленно.

Это связано с особенностью устройства памяти в long mode.
0
danx #
# apt-get install wine
# wine securable.exe

Проверил — работает через Wine. А вот то, что rdmsr возвращает 0, то не нормально. У меня кстати стал возвращать d после того, как я биос прохачил. 0xD то как раз 1101, т.е. включен 2-й бит.
0
BupycNet #
habrastorage.org/storage2/061/158/4ad/0611584adbc60b43c4e939bf3444eedc.jpg как я понимаю шансы есть? У меня Samsung N150 Plus
Для тех кто будет искать в гугле: виртуализация N450 Кстати думаю на N270 тоже вполне заведется. А это ОЧЕНЬ большое количество нетбуков. Не подскажите куда мне копать, как я понимаю, у меня можно как то изменить настройки биоса из системы, чем вы пытались это делать под линуксом?
+1
danx #
Если SecurAble говорит NO, то шансов, к сожалению, практически нет. Это значит, что виртуализация (VMX) не то чтобы залочена, ее вообще нет в процессоре. Обратите внимание на скриншот SecurAble в начале поста: там написано Locked — вот в этом случае шансы есть.
Для контрольной проверки — запустите CPUID Explorer на том процессоре, посмотрим, есть ли там VMX бит — скриншот тоже в теме есть с местом, куда смотреть.
0
xandr0s #
я так понимаю — нет… samsung n150
0
Wendor #
Intel® Virtualization Technology (VT-x) No
ark.intel.com/products/42503
0
Wendor #
Поспешил, простите.
+16
jov #
Действительно интересная и полезная информация, на фоне бесконечного обзора смартфонов. Спасибо!
+2
spmbt #
Спасибо за информацию: недавно задавал очень похожий вопрос; в интернете информации нет — habrahabr.ru/qa/23122/. Ваша детализация, возможно, приблизит решение (там только для 4-ядерного AMD, но та же проблема с VirtualBox).
0
Hayz #
Отличная статья, спасибо!
Интересно узнать где вы нашли недокументированную информацию по восстановлению БИОС?
Есть ли нечто похожее для ноутбуков Асус?
+1
danx #
Нашел в интернете :) та страница заслуживает того, чтобы на нее сослаться, да.
forums.mydigitallife.info/threads/13095-Undocumented-INSYDE-BIOS-recovery-method-Use-andy-s-tool-to-obtain-possible-names
Вторым вариантом аварийной перепрошивки биоса был выпаять его из материнской платы и припаять к USB-программатору, но мне помог первый способ ;)

Про асусы не знаю. Аварийная перепрошивка может быть другая, а сам биос можно модифицировать по той же схеме. Попробуйте найти биос для своего ноута и загрузить его в программу PhoenixTools, если она поймет его, то значит все должно получиться :)
+1
ValdikSS #
Делал практически тоже самое, но для phoenix. У вас же insyde, это развитие phoenix. Вы, кстати, ЭТО не пробовали? Эта штука патчит память прямо во время работы ОС.
+1
danx #
На моем BIOS программа SYMCMOS не работает, ни 32, ни 35 версия. Поэтому делал прямой модификацией биоса.

v. 643710-032
D:\>SYMCMOS.EXE -v2 -L
Write literal report to file: LITERAL.TXT
Cannot find BCPNV

v. 643710-035
D:\>SYMCMOS.EXE -v2 -L
Write literal report to file: LITERAL.TXT

combineFiles (0h, COMBINE.ROM)…
initPdmEntry…
search '$PDM'… not Found!
pdmEntry = NULL!
0
ValdikSS #
Тогда, вероятно, вам будет интересен способ через EFI или питоновские скрипты для автоматизации патчинга
0
mark_ablov #
Немного не понял, почему бы не делать wrmsr с правильными значениями при старте винды, без патча биоса?
0
Xitsa #
(На уровне догадки):
Скорее всего бит Lock отвечает за блокировку изменения свойств и сбрасывается только в момент включения, а после программно изменить свойства нельзя.
+1
Vass #
Потому что Bios помимо бита лока виртуализации выставляет еще бит лока регистра в котором хранится бит лока виртуализации, т. е. после загрузки биоса никто не может менять этот регистр.
0
zed91 #
В чем проблема изменить бит лока регистра?
+3
danx #
Читайте документацию Intel. Если кратко — то, если лок выставлен, то изменить бит лока, а также любой другой бит в этом регистре, НЕЛЬЗЯ, это вызовет general protection fault. Этот бит можно выставить только один раз, после этого содержимое этого регистра read only до следующей перегрузки процессора.
Выставляет этот бит BIOS, потому я правил именно биос, чтобы он выставлял в т.ч. и нужный нам бит №2:
or eax, 5
+1
zed91 #
Спасибо за пояснение.
–1
achekalin #
Atom-ы традиционно ставят туда, где хочется поэкономить. Посему таким машинкам достаются и диски не ахти, и памяти немного — но ведь это не обязательно должно быть так :)

Мне кажется, что, собрав бокс из подобного проца (отличные и цена, и экономичность, и, в общем-то, производительность) и SSD-диска, можно получить неплохую машинку для хостинга. Сколько таких боксиков влезет в 42U, не скажу, но, если поизвращаться, то немало, мне кажется. А там и до идеи выгодного хостинга недалеко, поднять там облако какое, скажем — тем более что за 100 руб в месяц многие бы взяли машину с более-менее вменяемым по скорости диском, не всем же нужны конфигурации на 12 ядер и пару Тб диска.

Одна проблема — Atom-ы зарезаны и по объему поддерживаемой памяти. 64 Гб, скажем, никак не сумеют, а как бы было здорово, для хоста поддержки облака…
0
achekalin #
По поводу анонимных минусов могу сказать так — даже у N2800 лимиты памяти — 4 Гб в 1 канале, чего мало для серьезного использования, однако для мелких дел (в т.ч. и для хостинга маленьких машинок) подойдет вполне. SSD серьезно ускорит работу такой системы. Собрать свое «облако» тоже не проблема. Вопрос — за сколько такой сервис можно продавать, и за сколько будут брать?
0
merlin-vrn #
Атомы прежде всего зарезаны по исполнительному ядру. Оно там очень-очень простое, как у Pentium Pro, только чуть доработанное — поэтому они и мало потребляют, поэтому и такие медленные.
Видимо, из тех же времён происходит и ограничение в памяти — в те времена на 32-битных машинах только-только появился PAE и стало можно адресовать 64 Гб памяти.
0
achekalin #
Ну как простое — тогда-то хватало инструкций для жизни?

То, что Intel не стал заморачиваться с поддержкой большого объема памяти — частью понятно технически, частью маркетингового. Это примерное как малоафишируемое сравнение Xeon и топовых i7 — не всегда Xeon выгоден, как выясняется, если говорить об однопроцессорном сервере.

С другой стороны, аренда слабой вирт. машины может стать экономически выгодным вариантом для многих. Кто-то держит seed-бокс, кому-то нужна машинка со статикой под openvpn и чтобы ходить с нее на другие сервера, кто-то просто держит крошечный веб-сервер. Мать под Атом стоит недорого, как не особо дороги и nettop-ы. Берем сарай с питанием и инетом, ставим стойки серверов, поднимаем ПО — а далее дело маркетологов :) Кстати, со всеми шансами найти на рынке местечко!
+1
merlin-vrn #
так для предоставления слабых машин в аренду необязательно приобретать слабый же и процессор. Можно купить сильный процессор и выдавать в аренду сразу много слабых виртуальных машин
0
achekalin #
Согласен. Вопрос в цене. Может, кто-то умудрится по случаю прикупить много нетбуков, у которых процы уже умеют виртуализацию (из атомов таких не сказать чтобы все — скорее, меньшинство), а цена еще будет сильно гуманной — тогда экономически (и энергетически, что тоже даст экономию в деньгах) выгодно будет возиться.
+1
Omega #
вот это труд! Спасибо. Однозначно — в избранное.
0
Nomad1 #
Интересно, а подобным методом можно выключить намертво Hyper Threading на Atom N230?
0
AusTiN #
А зачем?
0
Nomad1 #
чтобы однопоточное приложение могло полноценно работать, а ограничиваться 50% и так слабого процессора.
0
mayorovp #
Если второе «какбыядро» простаивает, то 50% при включенном Hyper Threading практически эквивалентны 100% при отключенном.
0
Nomad1 #
1. пруф?
2. софт, к сожалению, HT от честной 2-ядерности тоже не отличает и творит чудеса вроде выделения в 2 раза большего количества потоков (ну да, на каждое ведь ядро!), деления рабочего цикла на 2 потока и пр.

Я, конечно, на 1000% не уверен, что это даст прирост, потому надо проводить тесты, а без выключения HT это будет тяжело.
Более того, тут есть одна загадка:
www.thg.ru/cpu/intel_atom_230_test/print.html
Я видел эту страницу несколько лет назад и тоже не мог понять, как отключение HT давало деградацию в челочисленных тестах? На лицо какая-то особенность (или ошибка в тестах/биосе/руках тестеров?), которую можно подтвердить только экспериментально.
0
mayorovp #
1. Вот вы сами практически пруф и привели.
2. Софт делает правильно. Для того, чтобы поймать спад производительности от технологии HT, надо сильно постараться, а вот шанс к ускорению есть.
0
Nomad1 #
1. Это совершенно разные вещи. Вы утверждали, что при включенном HT однопоточная программа получает всю мощность процессора, пусть и визуально мы видим 50% загрузки. Утверждение имеет право на жизнь, но нужно доказательство.
2. Неправда Ваша. О каком шансе к ускорению речь, если ThreadPool вместо 25 потоков использует 50 на одном и том же железе с теми же настройками? Один поток для расчета физики/рендера/математики всегда будет продуктивнее двух, если они выполняются не двумя разными процессорами или ядрами. Под HT на одном процессоре надо специально софт адаптировать, но этим многие брезгуют, да и процессоров таких немного.
+2
mayorovp #
Дело в том, что при отключенной поддержке виртуализации (VMX) в процессорном слове 0x3A ваши виртуальные машины в VirtualBox работают в режиме паравиртуализации. Они, не имея возможности перевести гипервизор в VMX Root и виртуальную машину в VMX Non-root operation, вынуждены делать трансляцию процессорных инструкций НА ЛЕТУ.


Данный способ называется интерпретацией, а не паравиртуализацией. Паравиртуализация — это когда ядро гостевой ОС выполняется в режиме пользователя, не используя привилегированных команд.
0
danx #
Возможно. Я использовал термин из очень вменяемой статьи, ссылку на которую я привел в этом посте. Вот, цитата:
One approach to getting around the issues caused by the seventeen problematic x86 instructions is to avoid them all together by re-writing critical portions of the OS kernel to know when it's running in a virtual machine and call out to the hypervisor when necessary. This is a process known as para-virtualization.
+1
danx #
Кстати да, вы правы. В той же доке написано:
Without access to the OS kernel source, another approach to getting around the issues caused by the seventeen problematic instructions is to implement dynamic binary translation. Dynamic binary translation involves trapping the seventeen problematic instructions and converting the source binary to a target binary program.

Т.е. то, чем занимается VirtualBox в отсутствие бита VMX в регистре 3AH называется, на самом деле, динамической трансляцией двоичного кода (=интерпретация). Транслирует 17 проблематичных инструкций в другой вид, безопасный для системы.
0
BugMaker #
Запускал программу с полной уверенностью, что у меня все хорошо будет. Раз на атомах бывает, то на i3 точно есть. Тем более, что Интел уверяет в том, что действительно есть! И что я вижу:

Чего-то нифига не понятно, кто украл мой VT-x!
0
alexevil #
Может в БИОСе отключено? Хотя конечно странно, что в CPUID возвращается ноль…
0
BugMaker #
Кажется, разобрался. У меня Hiper-V установлен. Похоже, что он эту фигню и показывает. Не было бы вируализации, он бы и не установился даже, как мне кажется. Хотя в деле я его еще не пробовал.
+1
The_Kf #
Пробовали-пробовали. Вы думаете, вы не в «виртуалке» сейчас работаете?)
0
BugMaker #
Ну я уж и не знаю деталей технологии, честно говоря. Но то, что после его установки VT-X исчезает, это факт. Возможно, при установку Hyper-V основная система действительно в виртуалке запускается, наряду с остальными, виртуальными. Как я понял, они вообще в фоне запускаться и работать могут, и на них можно через RDP заходить. Круто, ничего не скажешь. Надо будет все таки побороть лень, и на практике разобраться в вопросе.
0
BugMaker #
Да, похоже, вы правы. Для интересующихся — статья по теме cpuid в hyper-v
0
danx #
Бинго! Я вспомнил — у меня, действительно, Windows Server 2012 не устанавливался на нетбук ранее. Ни в какую. Видимо, проблема была в том, что он хотел бит VMX, который был задизэблен. Теперь должен установиться.
+1
danx #
Проверено: Windows Server 2012 Datacenter Edition теперь успешно установился на мой нетбук Acer Aspire. Полет нормальный.
0
mihmig #
Скажите а можно с помощью утилиты SYMCMOS.EXE сделать следующее:
мне нужно отключить противный писк при подключении/отключении зарядки на моём Lenovo E43
У других ноутов Lenovo в BIOS есть пункт отключения а у моего нет. Но скорее всего настройка -то есть. Производитель вряд-ли выпустит новую версию биоса для снятой с производства модели, поэтому интересует такая возможность.
А также редактирование white-листа wifi-оборудования.
0
amarao #
Всё хорошо, только по виртуализации некоторая путаница. Режим, когда unsafe instruction меняют на ходу называется binary rewriting, а не паравиртуализация.
0
mayorovp #
Об этом уже написали: habrahabr.ru/post/152056/#comment_5164091
0
NeoCode #
Хочу попробовать, образ биоса подготовил, смущает только то что при перепаковке биоса слишком файлы отличаются старый от нового. Казалось бы, поменяли всего один байт… Размер тот же, а вот отличий внутри при двоичном сравнении старого с новым очень много.
+1
danx #
У меня тоже различий было много: команда fc ze6.fd.old ze6.fd > diff.txt выдает дифф файл на 17кб.
Это нормально, поскольку биос не просто перепакованный, он еще сжат архиватором, поэтому и разница при двоичном сравнении. Если вы делали все правильно, то все получится. Успехов :)
ЗЫ у меня полет нормальный.
+1
danx #
Вот биос — исходгный и поправленный мной:
www.dropbox.com/sh/5yfhbn2j8a2hxd7/lszgbO1m6j?m
0
NeoCode #
Наконец-то добрался до этого, перепрошил — все отлично! Еще раз спасибо! Посмотрим как там хакинтош заработает:)
+2
danx #
Хакинтош, кстати, с наскоку не заработает. Если мы про последний, Mountain Lion 10.8.3.
Дело в том, что в нем нет ядра, которое запускается на атоме. Разработчики хакинтоша прямо и недвусмысленно об этом говорят, что поддерживать атом не будут, не в этой жизни.
Пруф: tonymacx64.blogspot.ru/2012/10/iatkos-ml-mountain-lion-108-delayed.html#_
Другие образы, не iATKOS, тоже не запустятся, по той же причине. Кстати ошибка Unknown4 of GetVar ровно об этом.

Но выход есть: пару недель назад ядро мака сломали и подточили его — теперь оно работает на атоме:
www.osx86.net/view/3726-atom_kernel_10.8.3.html
Над скачать это ядро, заменить его в инсталлере Mountain Lion, потом, после установки, заменить его в установленной версии. И только после этого хаикнтош в VirtualBox запустится на этом нетбуке на Атоме. Проверено — как раз именно этим счас занимаюсь :)
Думаю может статью тут написать про это :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.