質問: virtualbox、特定のcpuをゲストに強制する方法 私はxpゲストを持っています。windows8ホスト。ゲストはホスト(i5 2500k)と透過的に同じプロセッサを表示します。しかし、ほとんどのインストーラはこのプロセッサを認識せず、失敗しますサポートされていないプロセッサの説明を続けます。これを古いプロセッサだとゲストをだます方法はありますか? vmwareにcpuマスキング機能があったことを正しく思い出せば、virtualboxにも同様の機能はありますか?
回答: 次に、必要な設定を推測するのではなく、ホストcpuを特定のcpuとして正確に偽装できる方法を示します。そのホストcpuでvirtualboxを実行しているマシンにアクセスする必要があるので、そのcpuidレジスタをダンプできます(モデルとしての実際のcpuのアーキテクチャにかなり類似しているアーキテクチャを選択することがおそらく最善です)。手元にない場合は、質問してみてください(たとえば、私はredditで成功しました)。 エミュレートしたいcpuから「モデル」ファイルを作成します。 vboxmanage list hostcpuids > i7_6600u ターゲットホストで、変更したいvm=が実行されていないことを確認してください。念のため、バックアップを取ることをお勧めします。 次のスクリプトを実行して、モデルファイル(i7_6600u here)をvboxの定義にロードしますvm(my_vm_name here): #!/bin/bash vm=my_vm_name model_file=i7_6600u egrep -e '^[[:digit:]abcdef]{8} ' $model_file | while read -r line; do leaf="0x`echo $line | cut -f1 -d' '`" # vbox doesn't like applying leaves between the below boundaries so skip those: if [[ $leaf -lt 0x0b || $leaf -gt 0x17 ]]; then echo "applying: $line" vboxmanage modifyvm $vm --cpuidset $line fi done これで終わりです。vmを実行して、マスカレードされたcpuを楽しむことができます(注:上記のスクリプトを実行する必要があるのは1回だけです)。 cpuマスカレードをロールバックする必要がある場合は、上記のループの各リーフに対してvboxmanage modifyvm $vm --cpuidremove $leafを使用できます(man vboxmanageはあなたの友達です)。これは、私にとって数か月間問題なく機能しており、kaby lake cpu(i7_7500u)を、vbox 5.1.22を実行するubuntu 17.04ホスト上のskylake cpu(i7_6600u)に見せかけています。上記の小さなbashスクリプトと同等のosを作成できれば、このアプローチはどのホストosでも機能するはずです。