Discussion:
VirtualBox: CpuIdTree/CpuIdLeaf-Konfiguration
(zu alt für eine Antwort)
Olaf Dietrich
2021-09-06 09:42:50 UTC
Permalink
Kann mir jemand erklären (oder einen dazu passenden Link geben), was
der Sinn dieser Zeilen in einer Konfigurationsdatei zu einer virtuellen
Maschine ist:

<CpuIdTree>
<CpuIdLeaf id="1" eax="1764" ebx="371197952" ecx="2143216631" edx="3219913727"/>
</CpuIdTree>

Klar ist, dass mit der CPUID einzelne CPU-Typen spezifiziert werden
können, aber wie genau wirkt sich das in der vbox-Konfigurationsdatei
aus? Und welche CPU wird hier spezifiziert?


Hintergrund der Frage: Ich habe als Teil eines größeren
Software-Produkts eine virtuelle Maschine mitsamt vbox-Datei vorliegen,
in der die 3 Zeilen von oben auftauchen.

Leider startet die virtuelle Maschine (basierend auf einem Debian-Linux)
nicht auf meinem etwas betagten Rechner (Win 10-Host); recht früh im
Boot-Prozess tauchen Fehlermeldungen mit "invalid opcode" und "illegal
instruction" auf; die virtuelle Maschine rebootet dann automatisch
und landet so in einer endlosen Reboot-Schleife.

Wenn ich die 3 Zeilen von oben aus der vbox-Konfiguration löschen, dann
bootet alles wunschgemäß - ich würde aber gerne verstehen, warum. (Und
ob ich mit unerwünschten Nebenwirkungen rechnen muss.)

Das Host-System (Win 10) läuft auf einem ca. 12 Jahre alten Intel Core2
Quad CPU Q9550. Virtualbox-Versionen habe ich von 6.0.4 bis 6.1.x
getestet; da scheint es keine Unterschiede geben.


(Ach ja: Gibt es eine entsprechende Gruppe unter comp.* oder sonstwo in
den Big-Eight-Newsgroups? Ich konnte nichts Passendes finden.)


Danke,
Olaf
Sven Hartge
2021-09-06 11:20:02 UTC
Permalink
Post by Olaf Dietrich
Kann mir jemand erklären (oder einen dazu passenden Link geben), was
der Sinn dieser Zeilen in einer Konfigurationsdatei zu einer virtuellen
<CpuIdTree>
<CpuIdLeaf id="1" eax="1764" ebx="371197952" ecx="2143216631" edx="3219913727"/>
</CpuIdTree>
Klar ist, dass mit der CPUID einzelne CPU-Typen spezifiziert werden
können, aber wie genau wirkt sich das in der vbox-Konfigurationsdatei
aus? Und welche CPU wird hier spezifiziert?
Die Doku von VirtualBox sagt dazu nur:

Currently supported index values for cpuid:
Standard CPUID leaves: 0 - 0x1f
Extended CPUID leaves: 0x80000000 - 0x8000001f
VIA CPUID leaves: 0xc0000000 - 0xc000000f

See the Intel, AMD and VIA programmer's manuals for detailed information
about the CPUID instruction and its leaves.

Mehr Infos dazu auch hier: https://superuser.com/a/774596
Post by Olaf Dietrich
Hintergrund der Frage: Ich habe als Teil eines größeren
Software-Produkts eine virtuelle Maschine mitsamt vbox-Datei vorliegen,
in der die 3 Zeilen von oben auftauchen.
Leider startet die virtuelle Maschine (basierend auf einem Debian-Linux)
nicht auf meinem etwas betagten Rechner (Win 10-Host); recht früh im
Boot-Prozess tauchen Fehlermeldungen mit "invalid opcode" und "illegal
instruction" auf; die virtuelle Maschine rebootet dann automatisch
und landet so in einer endlosen Reboot-Schleife.
Wenn ich die 3 Zeilen von oben aus der vbox-Konfiguration löschen, dann
bootet alles wunschgemäß - ich würde aber gerne verstehen, warum. (Und
ob ich mit unerwünschten Nebenwirkungen rechnen muss.)
Ich vermute, das auf der Quell-Maschine eine deutlich neuere CPU
vorliegt und die Einstellungen hier eine ältere CPU vorgaukeln.

Leider ist die ältere CPU aber wiederum neuer wie dein betagter Host
und daher treten dann hier Fehler auf, weil CPU-Befehle benutzt werden,
die deine CPU nicht kennt.

Du solltst den Ersteller der VM fragen, warum das gemacht wurde.
Vielliecht braucht eines der Programme eine besondere CPU, weil sonst
die Lizenz nicht mehr passt?


--
Sigmentation fault. Core dumped.
Olaf Dietrich
2021-09-07 07:55:43 UTC
Permalink
Post by Sven Hartge
Post by Olaf Dietrich
<CpuIdTree>
<CpuIdLeaf id="1" eax="1764" ebx="371197952" ecx="2143216631" edx="3219913727"/>
</CpuIdTree>
Klar ist, dass mit der CPUID einzelne CPU-Typen spezifiziert werden
können, aber wie genau wirkt sich das in der vbox-Konfigurationsdatei
aus? Und welche CPU wird hier spezifiziert?
Ich habe inzwischen selbst noch einmal gesucht; 1764 = 0x6e4 scheint
ein alter Intel Core Duo T2400/T2500 zu sein (ca. 2006)
<https://www.cpu-world.com/cgi-bin/CPUID.pl>
Post by Sven Hartge
Post by Olaf Dietrich
Leider startet die virtuelle Maschine (basierend auf einem Debian-Linux)
nicht auf meinem etwas betagten Rechner (Win 10-Host); recht früh im
Boot-Prozess tauchen Fehlermeldungen mit "invalid opcode" und "illegal
instruction" auf; die virtuelle Maschine rebootet dann automatisch
und landet so in einer endlosen Reboot-Schleife.
Wenn ich die 3 Zeilen von oben aus der vbox-Konfiguration löschen, dann
bootet alles wunschgemäß - ich würde aber gerne verstehen, warum. (Und
ob ich mit unerwünschten Nebenwirkungen rechnen muss.)
Ich vermute, das auf der Quell-Maschine eine deutlich neuere CPU
vorliegt und die Einstellungen hier eine ältere CPU vorgaukeln.
Leider ist die ältere CPU aber wiederum neuer wie dein betagter Host
und daher treten dann hier Fehler auf, weil CPU-Befehle benutzt werden,
die deine CPU nicht kennt.
Das wäre die Art von Erklärung, die mir eingeleuchtet hätte, aber
wenn cpu-world recht hat, dann weist eax="1764" auf eine noch ältere
(32bit) CPU hin (Core Duo T2400 von ca. 2006) als die (64bit) Host-CPU
(Intel Core2 Quad Q9550 von ca. 2008).

Ich konnte auch keine capabilities (Intel "advanced technologies")
finden, die der Core Duo hat, der Core2 Quad aber nicht.

Ich verstehe daher weiterhin nicht, warum es zu den Fehlern beim
Booten und der Reboot-Schleife kommt.
Post by Sven Hartge
Du solltst den Ersteller der VM fragen, warum das gemacht wurde.
Ja, vielleicht kann ich auf diesem Weg etwas herausfinden.

Danke,
Olaf

Lesen Sie weiter auf narkive:
Loading...