3 votes

Impossible de modifier les données du disque dur dans VirtualBox

En utilisant Windows 10, j'ai une machine virtuelle Virtualbox exécutant linux scientifix. J'ai maintenant besoin d'émuler un disque dur "réel", et comme me l'ont appris google, les forums et superuser, cela peut être réalisé comme suit:

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"

....qui sont les commandes exactement comme je les ai saisies.

Cependant, la sortie de hdparm -I /dev/sda liste toujours le "VBOX HARDDISK" par défaut avec ses données associées.

Choses que j'ai essayées:

  • Vérification double du contrôleur de disque. Il est défini sur PIIX4. J'ai également essayé de setextradata pour piix3, juste au cas où, mais le résultat ne change pas.
  • Comme vboxmanage offre très peu en termes de verbosité, j'ai décidé de bousculer ma commande, pour voir s'il y avait un moyen de repérer les erreurs évidentes:
    • Tapant incorrectement le nom de la machine: "TestInstallaoeu". Renvoie une erreur, indiquant que le nom de la machine que j'ai tapé à l'origine est correct
    • Faute de frappe du paramètre à modifier: "VBoxInternal/Bogus/Parameter" "BogusData". Cela ne produit pas d'erreur, indiquant qu'il pourrait y avoir une faute de frappe dans ma commande (bien que je ne puisse pas en voir une).
  • J'ai essayé à la fois avec et sans mettre les commandes entre guillemets doubles comme ci-dessus, mais il ne semble pas y avoir de différence, car il n'y a de toute façon pas d'espaces blancs.

Je ne sais pas comment procéder. Tout ce que j'ai lu indique que cela devrait fonctionner tel quel, mais mes expériences vont à l'encontre de cela.


EDIT 1:

Données supplémentaires comme demandé (partiellement).

  • Version de Virtualbox: 5.1.4 r110228
  • Système hôte: Windows 10
  • Système invité: Scientific Linux 6.7 (noyau 2.6.32)

Aucun des fichiers de métadonnées dans le répertoire de la machine virtuelle ne semble contenir les données que j'ai saisies. J'ai vérifié à la fois le fichier .vbox et le fichier .vbox-prev.

L'entrée .vbox pour le disque dur:

L'entrée .vbox pour le contrôleur de stockage:

Une chose que j'ai remarquée dans le fichier est qu'il reste des vestiges de la commande erronée que j'ai entrée:

...donc au moins certaines de mes commandes fonctionnent comme prévu.

Le .vbox dans son intégralité peut être vu ici: Lien Pastebin


NB: Je viens de remarquer que dans une tentative d'anonymisation des données, j'ai mal écrit le nom de la machine et du disque dans ce post et le lien Pastebin. Lors de la lecture de toutes les références à "TestDisk" et "Testinstall", gardez à l'esprit qu'il s'agit de libellés de remplacement qui sont en réalité des noms identiques. "Testinstall" et "TestDisk" sont donc interchangeables dans ce cas.


Edit 2: Après avoir essayé diverses combinaisons, j'ai maintenant trouvé un ensemble de commandes qui sont en fait incluses dans le fichier .vbox. Il est très probable qu'une faute de frappe m'a empêché de le faire avant. Les commandes étaient:

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"

Cependant, la sortie de hdparm -I /dev/sda indique toujours que le disque est de modèle "VBOX HARDDISK". En d'autres termes, le problème reste le même.

0voto

MariusMatutiae Points 45233

Je crois que vous avez mal compris le sens de l'option setextradata/getextradata. Selon le manuel de VBox,

Ces commandes vous permettent de joindre et de récupérer des données de chaîne à une machine virtuelle ou à une configuration VirtualBox (en spécifiant global au lieu d'un nom de machine virtuelle).

Le cas d'utilisation présenté est le suivant :

# VBoxManage setextradata Fedora5 installdate 2006.01.01
# VBoxManage getextradata Fedora5 installdate
    Interface de Gestion en Ligne de Commande VirtualBox Version 5.1.6
    (C) 2005-2016 Oracle Corporation
    Tous droits réservés.

    Valeur : 2006.01.01

Ici, installdate est un mot-clé associé à la chaîne suivante, 2006.0.1.01; en invoquant le mot-clé, la chaîne associée est retournée. En d'autres termes, setextradata/getextradata est une manière de graver dans la VM un certain type de données dont la récupération pourrait être utile à l'avenir.

Cela n'a rien à voir avec émuler un "vrai" disque dur. À ma connaissance, il n'y a pas une telle option dans VBox; si vous pensez le contraire, pouvez-vous fournir des références?

D'après ce que vous écrivez, les commandes que vous mentionnez ont été prises de quelqu'un qui a attaché à sa VM des étiquettes détaillant les propriétés du disque dur sur lequel la VM tournait. En suivant la syntaxe donnée par le manuel, les chaînes "ISD000081", "83CJ0015", "INTEL SSD1602CW" ont été assignées à une VM appelée TestInstall, sous les (longs) mots-clés représentés par les chemins de fichiers. Si vous avez une VM appelée TestInstall, alors ces chaînes seront disponibles en interrogeant la VM avec les commandes données ci-dessus, par exemple

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

devrait retourner la chaîne

 "ISD000081"

Vous pouvez essayer cela pour vérifier si ce que je vous ai dit est correct, ou vous pouvez simplement ouvrir le fichier xml qui décrit la VM généralement appelée TestInstall.vbox, et vous y trouverez une nouvelle ligne comme ceci,

ce qui montre encore comment les commandes setextradata/getextradata sont utilisées.

-1voto

LSerni Points 8163

Scénario

Je crois que vous avez un logiciel sur la machine virtuelle qui vérifie s'il s'exécute sur un disque dur spécifique, et le fait en lisant sa marque et son modèle. Ainsi, le logiciel s'exécutera sur la machine réelle mais refusera de le faire sur la machine virtualisée.

De manière équivalente, vous ne voulez pas que le logiciel se rende compte qu'il s'exécute sur une machine virtuelle, et le logiciel recherche des indices tels que le disque dur portant une marque d'usine "VBOX".

Si ce scénario est correct, alors votre approche est également correcte - faites en sorte que VirtualBox rapporte les mêmes informations que la machine réelle. Cela se fait en utilisant une branche spéciale de l'arbre de propriétés ExtraData.

Si ce n'est pas correct, et que vous souhaitez émuler une autre propriété, peut-être même physique du disque dur (temps de recherche, latence, ou autre chose), alors la réponse de @MariusMatutiae est la bonne - ce que vous faites n'est pas la bonne façon de le faire, et cela ne fonctionnera tout simplement pas.

Cela fonctionne !

Vous utilisez probablement une syntaxe incorrecte de VBoxManage, ou peut-être vous référez-vous au mauvais contrôleur (par exemple, vous n'utilisez pas PIIX4 mais, disons AHCI). Vous pouvez toujours définir des données supplémentaires pour PIIX4 même en utilisant AHCI ou PIIX3, sauf que bien sûr elles n'affecteront pas la machine.

Je viens d'essayer sur l'une de mes VM, qui utilise un disque dur AHCI (tout sur une ligne) :

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

et j'ai obtenu (j'ai seulement changé le numéro de modèle, mais je n'ai aucune raison de croire que les deux autres clés ne fonctionneraient pas)

/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

Mise à jour

Il y a un script Python complet sur github, "antivmdetection", qui permet de personnaliser une machine VirtualBox pour qu'elle ressemble étroitement à une autre. Vous pouvez exécuter le script sur une machine pour enregistrer les données et il générera un script pour modifier une VM... ou vous pouvez consulter le code source et récupérer les commandes à partir de là. Remarquez qu'il y a plus d'une commande pour définir la marque et le modèle du disque en fonction du contrôleur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X