3

Используя Windows 10, у меня есть virtualbox под управлением Scientifix Linux. Теперь мне нужно эмулировать "настоящий" жесткий диск, и, как научили меня Google, форумы и суперпользователь, это можно сделать так:

C:\Program Files\Oracle\VirtualBox>vboxmanage setextradata "Testinstall" "VBoxInternal/Devices/piix4ide/0/Config/PrimaryMaster/FirmwareRevision" "ISD000081"

C:\Program Files\Oracle\VirtualBox>vboxmanage setextradata "Testinstall" "VBoxInternal/Devices/piix4ide/0/Config/PrimaryMaster/SerialNumber" "83CJ0015"

C:\Program Files\Oracle\VirtualBox>vboxmanage setextradata "Testinstall" "VBoxInternal/Devices/piix4ide/0/Config/PrimaryMaster/ModelNumber" "INTEL SSD1602CW"

.... которые являются командами в точности так, как я их ввел.

Тем не менее, вывод hdparm -I /dev/sda прежнему перечисляет запас "VBOX HARDDISK" со связанными данными.

Вещи, которые я пробовал:

  • Дважды проверьте контроллер диска. Это установлено в PIIX4. Я также пытался на setextradata для piix3, на всякий случай, но результат не меняется.
  • Поскольку vboxmanage предлагает очень мало с точки зрения многословия, я решил объединить мою команду, чтобы посмотреть, есть ли какие-либо способы обнаружения очевидных ошибок:
    • Неправильный ввод имени машины: "TestInstallaoeu". Выдает ошибку, указывающую, что имя машины, которое я первоначально набрал, является правильным
    • Неверный ввод параметра для изменения: "VBoxInternal/Bogus/Parameter" "BogusData" . Это не приводит к ошибке, указывающей на то, что в моей команде может быть опечатка (даже если я не могу ее обнаружить).
  • Я пробовал как с, так и без обертывания команд в двойных кавычках, как указано выше, но, похоже, это не имеет значения, так как пробелов в любом случае нет.

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


РЕДАКТИРОВАТЬ 1:

Дополнительные данные по запросу (частично).

  • Версия Virtualbox: 5.1.4 r110228
  • Хост ОС: Windows 10
  • Гостевая ОС: Scientific Linux 6.7 (ядро 2.6.32)

Кажется, что ни один из метаданных в каталоге виртуальной машины не содержит введенных мной данных. Проверял как файл .vbox файл .vbox-prev .

Запись .vbox для жесткого диска:

  <HardDisks>
    <HardDisk uuid="{808541e0-6629-47cd-96b3-7ff6021d9dcc}" location="TestDisk.vdi" format="VDI" type="Normal"/>
  </HardDisks>

Запись .vbox для контроллера хранилища:

<StorageController name="IDE" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true">
        <AttachedDevice passthrough="false" type="DVD" hotpluggable="false" port="1" device="0"/>
        <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
          <Image uuid="{808541e0-6629-47cd-96b3-7ff6021d9dcc}"/>
        </AttachedDevice>
      </StorageController>

Одна вещь, которую я заметил в файле, состоит в том, что есть остатки от фиктивной команды, которую я ввел:

<ExtraDataItem name="VboxInternal/Bogus/Parameter" value="asdf"/>

... так что, по крайней мере, некоторые из моих команд работают так, как задумано.

.vbox в полном объеме можно увидеть здесь: ссылка на Pastebin


NB: Я только что заметил, что, пытаясь анонимизировать данные, я фальсифицировал имя машины и имя диска в этом посте, а также связанную пастину. Читая любые ссылки на "TestDisk" и "Testinstall", имейте в виду, что это метки замены, которые в действительности являются идентичными именами. "Testinstall" и "TestDisk" поэтому взаимозаменяемы в этом случае.


Редактировать 2: после попытки различных комбинаций, я теперь нашел набор команд, которые фактически делают это в файле .vbox . Скорее всего, опечатка помешала мне сделать это раньше. Команды были:

C:\Program Files\Oracle\VirtualBox>vboxmanage setextradata Testinstall "VboxInternal/Devices/piix4ide/0/Config/PrimaryMaster/ModelNumber" "INTEL SSD1602CW"

C:\Program Files\Oracle\VirtualBox>vboxmanage setextradata Testinstall "VboxInternal/Devices/piix4ide/0/Config/PrimaryMaster/FirmwareRevision" "1602CW.1.3"

C:\Program Files\Oracle\VirtualBox>vboxmanage setextradata Testinstall "VboxInternal/Devices/piix4ide/0/Config/PrimaryMaster/SerialNumber" "1602CW1800200926"

Тем не менее, вывод hdparm -I /dev/sda прежнему говорит о том, что диск имеет модель "VBOX HARDDISK". Другими словами, проблема остается той же.

2 ответа2

0

Я полагаю, вы неправильно поняли значение параметра setextradata/getextradata . Согласно Руководству VBox,

Эти команды позволяют присоединять и извлекать строковые данные на виртуальную машину или в конфигурацию VirtualBox (указав вместо имени виртуальной машины глобальное).

Представленный вариант использования следующий:

# VBoxManage setextradata Fedora5 installdate 2006.01.01
# VBoxManage getextradata Fedora5 installdate
    VirtualBox Command Line Management Interface Version 5.1.6
    (C) 2005-2016 Oracle Corporation
    All rights reserved.

    Value: 2006.01.01

Здесь installdate - это ключевое слово, связанное со следующей строкой, 2006.0.1.01 ; вызов ключевого слова возвращает связанную строку. Другими словами, setextradata/getextradata - это способ burning в виртуальную машину неких данных, поиск которых может быть полезен в будущем.

Это не имеет ничего общего с эмуляцией "настоящего" жесткого диска. AFAIK, такой опции нет в VBox; если вы думаете иначе, не могли бы вы предоставить некоторые ссылки?

Из того, что вы пишете, упомянутые вами команды были взяты от кого-то, кто прикрепил к своей ВМ некоторые ярлыки, подробно описывающие свойства жесткого диска, на котором работала ВМ. В соответствии с синтаксисом, приведенным в руководстве, строки "ISD000081", "83CJ0015", "INTEL SSD1602CW" были назначены виртуальной машине с именем TestInstall под ключевыми словами (long), представленными путями к файлам. Если у вас есть виртуальная машина с именем TestInstall, то эти строки будут доступны, если запросить виртуальную машину, например, с помощью приведенных выше команд.

vboxmanage getextradata "Testinstall" "VBoxInternal/Devices/piix4ide/0/Config/PrimaryMaster/FirmwareRevision"

должен вернуть строку

 "ISD000081"

Вы можете попробовать это, чтобы проверить, правильно ли то, что я сказал вам, или вы можете просто открыть файл XML, который описывает виртуальную машину, обычно называемую TestInstall.vbox, и вы найдете новую строку, подобную этой,

<ExtraDataItem name="keyword" value="character_string"/>

который снова показывает, для чего используются команды setextradata/getextradata .

-1

сценарий

Я полагаю, что у вас есть какое-то программное обеспечение на ВМ, которое проверяет, работает ли оно на определенном жестком диске, и делает это, читая его марку и модель. Таким образом, программное обеспечение будет работать на реальной машине, но откажется делать это на виртуальной машине.

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

Если этот сценарий верен, то ваш подход также верен - пусть VirtualBox сообщит ту же информацию о реальной машине. Это делается с помощью специальной ветви дерева свойств ExtraData.

Если это не правильно, и вы хотите подражать некоторым другим, возможно, даже физическим свойствам жесткого диска (время поиска, задержка или что-то еще), то ответ @ MariusMatutiae правильный - то, что вы делаете, не способ сделать это, и он просто не будет работать.

Оно работает!

Возможно, вы используете неправильный синтаксис VBoxManage или, возможно, имеете в виду неверный контроллер (например, вы используете не PIIX4, а, скажем, AHCI). Вы можете установить дополнительные данные PIIX4 даже при использовании AHCI или PIIX3, за исключением того, что они, конечно, не будут влиять на машину.

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

D:\Programmi\Oracle\VirtualBox>vboxmanage setextradata
    "Aladdin-Clone" "VBoxInternal/Devices/ahci/0/Config/Port0/ModelNumber" 
    "HITACHI HTD723216L9SA61"

и я получил (я только изменил номер модели, но у меня нет оснований полагать, что другие два ключа не будут работать)

/dev/sda:

ATA device, with non-removable media
        Model Number:       HITACHI HTD723216L9SA61
        Serial Number:      VB35affeb2-744b8198
        Firmware Revision:  1.0
Standards:
        Used: ATA/ATAPI-6 published, ANSI INCITS 361-2002
        Supported: 6 5 4

Обновить

На github есть полный скрипт Python « antivmdetection », который позволяет настроить машину VirtualBox так, чтобы она была похожа на другую. Вы можете запустить скрипт на машине, чтобы сохранить данные, и он сгенерирует скрипт для изменения виртуальной машины ... или вы можете посмотреть на исходный код и отменить команды оттуда. Обратите внимание, что существует более одной команды для установки марки и модели привода в зависимости от контроллера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .