Устанавливаем XP Mode под VirtualBox

image

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

Все остальное внутри инсайда

Tagged with:
 

59 Responses to Устанавливаем XP Mode под VirtualBox

  1. Neop:

    Сразу хочу заметить, что в Microsoft на вопрос «А легально ли использовать другую среду виртуализации?» ответили, что с точки зрения EULA ничего не нарушается, но поддержку они, разумеется, предоставлять не будут. После чего я приступил к изысканиям.

    Сначала мой выбор пал на VMWare Player. Поддержка XP Mode в нем присутствует из коробки, стоит либо воспользоваться встроенным мастером импорта уже установленного XP Mode, либо дописать определенную строку в конфиг виртуальной машины и установить XP Mode с нуля. Однако, впоследствии он не понравился как «тяжеловесностью» (3 дополнительных службы, 5 дополнительных процессов в сумме), так и отсутствием возможности создания снэпшотов. Последняя фича для меня крайне важна, поскольку позволяет тестировать различное ПО с большой легкостью, откат до изначального состояния производится буквально за секунды.

    После чего я начал рассматривать вариант с использованием VirtualBox. В целом, несмотря на опенсорсность, — это достаточно стабильная, продуманная и производительная среда виртуализации, которую разрабатывают люди с большими амбициями. Ну и, опять же, снэпшоты, в том числе и древовидные :–)

    Однако была проблема с активацией. Заключалась она в том, что в XP Mode используется SLIC–активация, частью которой является специальная строка в BIOS, считывая которую Windows осознает, что работает в правильном окружении. Как оказалось в процессе поиска информации по XP Mode, родными средствами VirtualBox (конфиги, GUI) изменить именно те строки, которые нам нужны для активации, не получится.

    К счастью, после где–то недели периодического гугления, на одном из форумов попалась подсказка. В посте говорится, что в файле VBoxDD2.dll, который «отвечает за BIOS», нужно заменить определенную последовательность байт другой последовательностью. Той самой, которая и является строкой, зашитой в виртуальный BIOS Virtual PC, а также VMWare Player (при использовании специальной строки в конфигурационном файле, о котором я писал выше).

    Вот как выглядит эта строка HEX–значений на примере разных версий

    3.1. C40im3C400E9D801E9D501B81300508B460A50FF 7604E8FF7im3C406B83F0250FF76FEE8CC7im3C40430E4508B460A4050FF76

    3.2. C40im3C400E9D801E9D501B81300508B460A50FF 7604E8557im3C406B83F0250FF76FEE8227im3C40430E4508B460A4050FF76

    Как видите, от выпуска к выпуску значения могут меняться, но паттерны остаются те же самые, что дает нам возможность искать по первым 10–12 HEX–значениям и делать соответствующие замены.

    Так вот, эту строку нужно с помощью HEX–редактора (лично я использую HxDen) заменить на 57696E646F77735F5669727475616C5Fim505F46 3931363144im4537464343313144444246414133 3639im353644im39353933
    что в ASCII означает Windows_Virtual_XP_F9161D8E7FCC11DDBFAA3 6im56D89593.

    Вот как это выглядит в HEX–редакторе на примере VirtualBox 3.2im

    image

    до

    image

    после

    После этих замен я вышел на разработчиков VirtualBox (viva la open source, ага), чтобы спросить, насколько легально моддить/патчить бинарники, идущие в комплекте PUEL–дистрибутива; разговор получился следующий (я — vbx):

    Hi. Is it legal to patch VBoxDD2.dll file for my own purposes (XP Mode SLIC Activation) in terms of VBox License Agreement?
    Microsoft said I’m free to use any virtualization system in any way with XP Mode. The only thing is that they won’t support it
    Patch how? Why does it need patching?
    Because it does not contain a necessary string for XP Mode so that the latest can be sucessfully activated
    What kind of a string?
    DMI String Type 11
    OEM STRING
    Windows_Virtual_XP_F9161D8E7FCC11DDBFAA3 6im56D89593
    And it can’t be configured using manual DMI string configuration (vm.xml–file)
    Hmm, I thought it was configurable via setextradata… but maybe not.
    It is not 🙁
    Maybe you should submit a patch to us to make it configurable 🙂
    That’s why I ask about the legality of manual binary patching
    I’m not a developer, just found the hex code over the Internet
    VBoxDD2 is LGPL’ed code…
    So, am I free to modify it?
    It should be legal to rebuild it from source even…
    I won’t redistribute it in any kind. Just for my own purposes.
    It is more a question of fairness, actually 🙂
    vbox 3.2.0 sources have support for DMI type 11, but afaict it’s disabled. I suspect it’s a table size issue or some such.

    Конкретного ответа я так и не получил, но было достаточно того, что «it should be legal to rebuild it from source». Что ж, будем считать, что с каждым релизом я качаю исходники VBox и пересобираю их, меняя нужную мне строку. :–)

    Итак, после вышеупомянутых изменений виртуализированная в VirtualBox Windows XP чувствует себя «как дома», работает очень шустро, имеется поддержка USB–виртуализации и даже экспериментальная поддержка 3D–ускорения. К тому же, метод лицензионно чист и я не нарушаю условий лицензионных соглашений как XP Mode, так и VirtualBox.

    Ну вот вроде бы и все, если будут какие–то вопросы — задавайте.

    Бонус–трек: уже готовый пропатченный dll–файл для VirtualBox 3.2im x64

  2. Taow:

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

  3. EKon:

    C ним будет хуже интеграция… я так понимаю. Нет?

  4. EKon:

    Мне кажется, но я не уверен, что это не XP в чистом виде, а там что–то доработано под виртуалку. Кто знает наверняка — так ли это, будьте добры, просветите.

  5. Taow:

    это обычный образ XP, ничего хуже не будет.

  6. AvOff:

    обычный образ там, можно снять свой самостоятельно и скачать кряк

  7. Neop:

    Ну, это же нелегально 🙂 Стояла задача использовать оригинальные образы, дистрибутивы и инструменты и заставить это все дело заработать.

  8. EKon:

    Насчет «тормозной» MS/Connectix Virtual PC. Может, Virtual Box и не «тормозной», не знаю, но попытка работать с ним где–то год назад вылилась в такую гамму глюков, что лично я забил на него всерьёз и надолго.

  9. Suona:

    Спасибо, дружище!

  10. Suona:

    Это файл, как я понимаю, подходит ТОЛЬКО для 3.2im, а вот вышла 3.2.10 и заново его нужно править? Можно ли написать какой–то патчер для этого?

  11. Neop:

    Замени в ссылке 3.2im на 3.2.10, я для себя загружаю DLL–ки начиная с версии 3.2.2 «на всякий случай».

    А с патчером мне уже вроде взялись помочь. Из того, что я знаю, вопрос там сейчас стоит в том, делать ли лаунчер с динамическим пропатчиванием нужных данных в памяти, что дает нам стабильно рабочее решение на много релизов вперед (тут есть проблема — VirtualBox создает отдельный процесс для каждой VM и задача становится не такой тривиальной, как хотелось бы, но решение есть), либо по–быстрому сделать патчер файла, но универсальный. К минусам второго варианта можно отнести необходимость постоянного перепатчинга с выходом нового релиза, что хоть и сокращает время по сравнению с ручным методом, но все равно отдает велосипедизмом.

    Когда чего–нибудь из этого будет готово, я обязательно отмечусь в теме.

  12. Suona:

    Спасибо, чувак, буду ждать новостей.

  13. Kiok:

    Вроде бы все установил, в том числе Windows XP. Но как запихнуть туда файлы, хранящиеся в папках Windows 7?

    И еще вопрос: куда установилась Windows XP и как ее снести в будущем?

  14. Suona:

    Установить guest additions и настроить shared folders. Можно их как сетевые диски подключить.

  15. Suona:

    Ты имеешь в виду, где файл образа находится?

  16. ToOS:

    а обязательно иметь поддержк упроцессора?

  17. ToOS:

    всмысле технологию виртуализации

  18. XoS:

    А почему дефолтная строка является неправильной для активации?
    Почему не использовать дистрибутивы без активации (VL)?
    Лицензия для гостевой операционки есть? 😉

  19. HcOS:

    да. Основная суть этой штуки в том, что виртуалка не полностью эмулирует все действия процессора, а исполнят команды на реальном процессоре, за счет чего значительно увеличивается скорость исполнения команд. Если нет аппаратной поддержки, то выполнить команды не получится.

  20. HcOS:

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

  21. XoS:

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

  22. Kiok:

    Глючит страшно и сейчас. USB устройства через раз подключаются, виснит.

    В общем, моя попытка реанимировать старый сканер превратилась в ад.

  23. Kiok:

    Кажется, нашел. Папка.VirtualBox?

  24. Kiok:

    Постой. Кажется, эта фигня уже установлена.

    А можно в таком случае по порядку объяснить, как этот чертов диск подключить? Ну или дать ссылу на русскоязычный мануал.

  25. Suona:

    Network –> vboxsrv или \\vboxsrv\

  26. Neop:

    Потому что такую привязку сделали в MS в целях борьбы с пиратством. Как по мне, это самый разумный способ, не раздавать же всем подряд пользователям VL– или Retail–ключи под виртуальную Windows. При этом, VMWare умеет редактировать данную строку, а VBox — еще нет, приходится выкручиваться.

    Потому что дорого стоит.

    Разумеется, я использовал дистрибутив, загруженный с microsoft.com, хост–система также лицензионная. Данный момент подчеркнут в этом комментарии.

  27. Neop:

    Да вот как раз и нет, более того, в VMWare до какого–то времени это рекламировали как преимущество их продукта. Говорю «до какого–то времени» потому что MS выпустила хотфикс, позволяющий запускать XP Mode на ПК без поддержки аппаратной виртуализации.

  28. Neop:

    Это не «активация аппаратной виртуализации», это внесение недостающего кусочка паззла в систему активации XP Mode — SLP

    Operating systems that use SLP 1.0 check for a particular text string in a computer’s BIOS upon booting.
    Подробнее: //en.wikipedia.org/wiki/System_Lock …

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

    image

    Если я, конечно, правильно вас понял.

  29. XoS:

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

    Ну они скорее не дорого стоят, а идут по подпискам и корпоративным продуктам. Тут хзхз, сам себе отвечаю.

    Дистрибутив я и сам могу скачать. Лицензия отдельная есть? 😉

  30. Neop:

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

    Я имел в виду с позиции добросовестного конечного домашнего пользователя.

    Лицензия на дистрибутив XP Mode прилагается к дистрибутиву, скачиваемому с сайта Microsoft. Право на использование XP Mode, отраженное в лицензии на XP Mode, должно подкрепляться наличием лицензии на Windows 7 Максимальная, Профессиональная и еще какая–то, уже не помню. «Максимальная» лицензия у меня есть.

  31. XoS:

    Но без активации винда не дает себя использовать. Те юридически все ок, но фактически не получается?

    Те лицензия на семерку включает в себя икспи? Хорошо, буду знать 🙂

  32. Neop:

    Да, фактически нужно допиливать, но MS не имеет ничего против этого. Я лишь довожу мою виртуализированную копию Windows XP до состояния, в котором ее можно использовать в штатном режиме. В случае с VMWare это за меня сделал производитель ПО. А в случае с VirtualBox — не хочу повторяться, там красненьким вверху написано.

    Я там в предыдущем ответе немного поправил, лицензия на XP Mode подразумевает наличие определенных лицензионных копий Windows 7.
    Если прямо отвечать на ваш вопрос, то да, лицензия на Windows 7 Максимальная и некоторые другие редакции «включает» в себя лицензию на Windows XP, запущенную в специальном виртуализированном окружении. То есть, на XP Mode. Вообще, об этом лучше почитать в EULA, где все расписано вполне доступным языком.

    P.S. А вот это ваше «Хорошо, буду знать :)» нужно понимать как сарказм?

  33. BHol:

    у меня категорически не хотят ставиться дрова на видеокарту, в установленную вин хпв виртуал бокс. хотел поиграть в фаллаут третий, но он пишет, что видеокарта не определена 🙁

  34. Suona:

    Третий Фол в виртуалке? Ты не ищешь лёгких путей, это точно. С минимальными настройками графики?

  35. BHol:

    ну вроде система не слабая, 4 ядра, 4 гига, 1 гиг видюха…не?

  36. BHol:

    на семерке вылетает с зависанием компа 🙁

  37. Suona:

    А хостовая система какая?

  38. BHol:

    валит, валит же…
    🙂 что за хостовая система?

  39. Suona:

    Та, которую ты запускаешь в виртуалке — гостевая. Та, на которой запускаешь виртуалку — хостовая. Я пытаюсь понять, нафига тебе Фол в виртуалке. У тебя Линукс?

  40. BHol:

    писал ниже, у меня семерка.
    фол 3 и фол вегас вылетаю после пары минут игры

  41. Suona:

    У меня семёрка. Ничего не вылетает. Виртуалкой ты проблету не решишь никак, производительности не хватит.

  42. BHol:

    где качал?

  43. Suona:

    Ты классно вопросы задаёшь. В Стиме, с сайта Microsoft, с сайта VirtualBox — выбирай на вкус.

  44. BHol:

    т.е. у тебя лицензионный Фалл?!

  45. Suona:

    Ага. Вот две, нет, три полезные ссылки. 1, 2, 3.

  46. aow:

    надо очень хорошо постараться, чтобы уронить семёрку

  47. Suona:

    Думаю, проблемы у товарища либо с видяхой, либо с БП. Делаю ставку на второе.

  48. BHol:

    стабильно раз в сутки зависает с перезагрузкой

    Сигнатура проблемы
    Имя проблемного события: BlueScreen
    Версия ОС: 6.1.7600.2.0.0.256.48
    Код языка: 1049

    Дополнительные сведения о проблеме
    124
    00000000
    853CD8FC
    00000000
    00000000
    OS 6_1_7600
    Service 0_0
    256_1

    после чего система работает без проблем, все игры работали отлично, кроме свежего Фола 🙁

  49. aow:

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

  50. Neop:

    Скорее всего Fallout видит совершенно странную для него видеокарту и отказывается запускаться. В таком случае можно попробовать запустить его через 3D–Analyze.
    Второй причиной может быть то, что Вы не установили поддержку 3D–ускорения. Ее нужно устанавливать через Guest Additions в безопасном режиме (они достаточно костыльно подменяют библиотеки Direct3D, а виндовый WFP не дает им это делать в обычном режиме).

  51. Suona:

    Вышла 4–я версия. Что делать будем? :–)

  52. Neop:

    Я бы порекомендовал не обновляться, если нужна работоспособная Windows XP. Как только будет решение, отпишусь.

  53. Neop:

    Опытным путем нашел нужный адрес. Забирай для 4.0 x64.

    P.S. Кстати, нашел в исходниках флаг, отвечающий за включение поддержки OEM Strings в VBox, но он пока не включен по умолчанию. Остается лишь ждать :–)

  54. Suona:

    Какие у нас новости? Патчера какого–то не появилось?

  55. Hcor:

    фиг знает, мне четвёрка показалась какой–то тормозной. и они, судя по всему, так и не исправили баг #4392, так что для виндовых 32–битных гестов продолжаю использовать вмвару.

  56. barmaglot17:

    Я нашел решение проблемы активации XP Mode в 4-й версии VirtualBox здесь:
    http://www.vmlite.com/index.php?option=com_kunena&Itemid=158&func=view&catid=9&id=6706&limit=6&limitstart=12#8420

    Перевожу на русский:
    Для активации XP Mode под VirtualBox можно использовать в виртуальной машине «правильный» файл BIOS-а вместо BIOS-а VirtualBox. Для этого скачиваем файл с BIOS-ом:
    http://www.vmlite.com/images/fbfiles/files/pcbios.zip
    Распаковываем. Устанавливается файл BIOS-а через командную строку. Например, можно создать в той же папке, что и распакованный pcbios.bin, cmd-файл следующего содержания:

    «C:\Program Files\Oracle\VirtualBox\VBoxManage.exe» setextradata «Windows XP Mode» «VBoxInternal/Devices/pcbios/0/Config/BiosRom» «.\pcbios.bin»

    здесь «Windows XP Mode» — имя виртуальной машины в VirtualBox. Запускаем cmd-файл (на всякий случай от имени администратора:). Все, при запуске виртуальной машины «Windows XP Mode» обнаруживаем, что она не требует активацию.

    • barmaglot17:

      Еще добавлю, что файл pcbios.bin после такой установки должен оставаться на прежнем месте иначе VirtualBox не сможет запустить виртуальную машину :).

    • barmaglot17:

      И опять я поторопился. Вместо «.\pcbios.bin» нужно писать полный путь к файлу.

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

Ваш e-mail не будет опубликован.