VirtualBox - l'invité XP ne voit pas plusieurs cœurs / plusieurs processeurs

13

Environnement:

  • Système d'exploitation hôte: Win7 Pro 64 bits
  • Système d'exploitation invité: WinXP 32 bits
  • Version de VirtualBox: 4.1.4r74291
  • Processeur: Intel Core i7 2630QM avec virtualisation activée

Le problème:

J'ai besoin du système invité pour utiliser plusieurs cœurs. J'ai activé les options suivantes dans VirtualBox:

  • IO APIC (onglet carte mère)
  • PAE / NX (onglet processeur)
  • VT-x / AMD-V (accélération)
  • pagination imbriquée (accélération)

Toutes les autres options du sous-menu Système sont désactivées. Le curseur «processeurs» est défini sur 8.

Le problème est que le système invité fonctionne correctement, mais un seul processeur / cœur est visible.

lbednaszynski
la source

Réponses:

7

XP a 2 HAL différents qui sont utilisés pour les processeurs multi et mono. Si vous avez installé XP alors que l'environnement virtuel n'avait qu'un seul processeur, vous devrez peut-être modifier la couche HAL ou réinstaller.

Vous pouvez trouver des instructions sur la façon de modifier la couche HAL sur le site de support de Microsoft .

Vous devrez sélectionner l'option multiprocesseur ACPI.

Matthew Steeples
la source
bien le site Microsoft dit que WinXP devrait automatiquement changer la HAL - ce n'est pas le cas. Chose étrange, lorsque j'ai vérifié mon gestionnaire de périphériques, il y avait 8 processeurs, mais dans le gestionnaire de tâches, je ne pouvais que voir 1. J'ai donc réinstallé le système et tadam - tout va bien. Merci!
lbednaszynski
24

J'ai eu un problème similaire et je suis tombé dessus: http://www.nforcershq.com/forum/updating-the-hal-for-multiprocessor-support-t70331.html

J'ai téléchargé l' devconutilitaire de Microsoft et émis ces commandes:

  1. devcon sethwid @ROOT\ACPI_HAL\0000 := +acpiapic_mp !acpiapic_up
  2. devcon update c:\windows\inf\hal.inf acpiapic_mp

Ensuite, j'ai redémarré et maintenant XP peut voir les 4 cœurs.

Faites une sauvegarde de l'image avant de commencer au cas où le système ne démarrerait plus!

dawez
la source
4
Cela a bien fonctionné pour moi. J'ai obtenu ma VM Virtual Box pour enfin voir le 2ème CPU.
CadentOrange
2
Rapide, facile et fait sur WinXP SP3.
Fiasco Labs
1
Réponse courte et bonne, merci! A travaillé pour moi à deux reprises. Remarque: je n'ai pas pu démarrer Win XP après avoir fait cela jusqu'à ce que j'aie réellement configuré la machine virtuelle pour avoir plus d'un processeur. De plus, vous pouvez ajouter plus de CPU plus tard et ils seront détectés correctement.
jlh
Donc, si j'ai bien compris, après avoir fait ce hack, la VM ne fonctionnera plus avec 1 CPU, @jlh?
Sopalajo de Arrierez
3

Le problème principal (jeu de mots) est que Windows XP contient deux noyaux: monocœur et multicœur. Probablement, le système d'exploitation invité n'a détecté qu'un seul cœur lors de l'installation et votre invité Windows XP s'exécute sur le noyau et le noyau monocœur. Suivez les instructions ci-dessous pour activer le démarrage avec le noyau multicœur et le noyau.

Cela a fonctionné pour moi (VirtualBox XP Pro) ...

1) Allez dans c: \ windows (votre chemin d'installation), recherchez sp3.cab. Ouvrez ce fichier cab avec 7-zip (bien que l'explorateur puisse ouvrir le fichier en mode natif, s'il ne peut pas télécharger 7-zip depuis sourceforge).

2) a) Extract halmacpi.dll to c:\windows\system32

b) Extract ntkrnlmp.exe to c:\windows\system32

3) Modifiez c: \ boot.ini

Remarque: Vous devrez décocher la propriété en lecture seule afin de pouvoir enregistrer vos modifications. Revenez en lecture seule une fois terminé.

Copiez la ligne qui ressemble à ceci:

multi (0) disque (0) rdisk (0) partition (1) \ WINDOWS = "Microsoft Windows XP Professionnel" / fastdetect / NoExecute = OptIn

Donnez à l'entrée copiée l'aspect suivant:

multi (0) disque (0) rdisk (0) partition (1) \ WINDOWS = "Microsoft Windows XP MultiCore" / fastdetect / NoExecute = OptIn /kernel=ntkrnlmp.exe /hal=halmacpi.dll

Vous avez maintenant une option à double démarrage pour utiliser un ou plusieurs cœurs (TaskManager affichera deux graphiques de processeur si cela a réussi). Si le multicœur démarre et fonctionne correctement, vous pouvez supprimer l'entrée de noyau unique de boot.ini.

James
la source