問題は実はSolidworksに関するものではないですので、引き続きお読みください。
仮想化の全体的な考え方は、ハードウェアに依存しないことです。私たちの目の前で、ハイパーバイザーへの固定というまったく新しい依存関係レベルが作成されています。
私の知る限り、この問題の回避策を見つける方法を探すことは、Solidworks ライセンスおよび私の国の現地法に違反するものではありません。
クライアントと私は、KVM 仮想マシンで Solidworks 製品をアクティブ化したいと考えています。奇妙な理由により (Hyper-V と VMware は十分にテストされているはずです :)、Solidworks 2015 PDM の開発者は、自社の製品を Qemu-KVM でアクティブ化することを望んでいません (最後の 2014 バージョンは問題なく動作しました)。
http://www.solidworks.com/sw/support/11168_ENU_HTML.htm
使っています:
ご覧のとおり、これは Windows 2012 と Solidworks PDM がインストールされた KVM ベースの VM です。
質問: Qemu-KVM で VM を実行している場合、次のチェック以外に何をチェックできますか?
- VMのイーサネットアダプタのMACアドレス、
- デバイスドライバーラベル、
- CPUモデル、
- ACPI テーブル。
今後数時間以内に上記の事柄を排除するつもりですが、他に何かアイデアがあれば教えてください。
解決:
結果的に、次の 2 つのことが証明されました。
-cpu,kvm=off
マイケル・ハンプトンが正しく指摘したように、選択肢はある
CPUID 0x40000000 リーフを無効にします。
- ゲスト上の ACPI テーブル。
qemu コマンドラインパラメータの関連部分:
-cpu host,kvm=off -smbios type=0,vendor=LENOVO,version=FBKTB4AUS,date=07/01/2015,release=1.180 -smbios type=1,manufacturer=LENOVO,product=30AH001GPB,version=ThinkStation P300,serial=S4M88119,uuid=cecf333d-6603-e511-97d5-6c0b843f98ba,sku=LENOVO_MT_30AH,family=P300
Libvirtd 設定ファイルの構文:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
# Please notice there is xmlns definition in <domain> tag. Without it
# <qemu:commandline> and <qemu:arg> tags won't work.
<name>acm-server</name>
<uuid>d0e14081-b4a0-23b5-ae39-110a686b0e55</uuid>
<memory unit='KiB'>81920000</memory>
<currentMemory unit='KiB'>81920000</currentMemory>
<vcpu placement='static'>4</vcpu>
<os>
<type arch='x86_64' machine='pc-1.1'>hvm</type>
<boot dev='hd'/>
<bootmenu enable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
# Please notice there is no CPU definition on the top.
<qemu:commandline>
<qemu:arg value='-cpu'/>
<qemu:arg value='host,kvm=off'/>
<qemu:arg value='-smbios'/>
<qemu:arg value='type=0,vendor=LENOVO,version=FBKTB4AUS,date=07/01/2015,release=1.180'/>
<qemu:arg value='-smbios'/>
<qemu:arg value='type=1,manufacturer=LENOVO,product=30AH001GPB,version=ThinkStation P300,serial=S4M88119,uuid=cecf333d-6603-e511-97d5-6c0b843f98ba,sku=LENOVO_MT_30AH,family=P3'/>
</qemu:commandline>
</domain>
2017 年 4 月 21 日更新。DS Justice は、Qemu (この例では virtio を使用) ディスク モードも関連している可能性があると述べました。
答え1
Intel ハードウェア上で実行される現在のハイパーバイザーのほとんどは、CPUID リーフ 0x40000000 以降を使用して、ハイパーバイザーに関する情報をホストからゲストに渡します。
仮想化、ゼン、ヴイエムウェアそしてハイパーVすべてこの方法を使用します。
これは加えてCPUID リーフ 0x1 に設定されたハイパーバイザー機能フラグ。これは、マシンが仮想マシンであることを示します。
したがって、CPUID 命令を呼び出して、これらのハイパーバイザーのいずれかの下で実行されているかどうかを判断することができるプログラムにとっては簡単です。
KVMの最近のバージョンには、コマンドラインオプションCPUID 0x40000000 リーフを無効にするには、-cpu kvm=off
.
答え2
他の人が同じような状況にある場合に備えて、ここで私の経験も共有したいと思いました(VirtualBox VMにSolidWorksをインストールしようとしている場合)。
私が試みたセットアップ:
xubuntu 16.04 ホスト OS、VirtualBox、Windows 10、Solidworks 2015。上記と同じエラーが発生しました。
ソリューション:
私が最終的に見つけた解決策は、hidevm.bat
Solidsquad クラックに含まれるスクリプトを使用して、Solidworks が VM で実行されていないと思わせることでした。正規のライセンスを持っている場合でも、.bat ファイルを使用できます (そうであることを願っています)。.bat は、Windows をホスト OS としても使用して、VirtualBox VM 内で Solidworks を実行しているユーザーを対象としていますが、私のように Linux をホスト OS として実行しようとしている場合でも、.bat ファイルを開いて関連するコマンドを選択し、Linux 用に調整して実行できます。変更された関連コマンドは次のとおりです。
VMNAME=[whatever your VM name is]
rand9="abcdefghi" #any 9 character string
rand20="abdcefghijklmnopqrst" #any 20 character string
rand8="abcdefgh" #any 8 character string
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor" "American Megatrends Inc"
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion" "2.1.0"
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "ASUSTek Computer"
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" $rand9
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/ahci/0/Config/Port0/SerialNumber" $rand20
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/ahci/0/Config/Port0/FirmwareRevision" $rand8
VBoxManage setextradata $VMNAME "VBoxInternal/Devices/ahci/0/Config/Port0/ModelNumber" "SEAGATE ST3750525AS"
VMがEFIファームウェアを使用するように構成されている場合は、キーを にpcbios
置き換える必要があります。efi
9.12. BIOS DMI情報の設定。
答え3
KVM 上で Solidworks サーバーをアクティベートする正式な方法は、「SolidWorks のアクティベーション免除ライセンス」を申請することです。これは再販業者を通じて行いますが、Solidworks サポートを通じて直接行うこともできます。
Solidworks は、Solidworks License Manager が [サーバー管理] タブの [詳細オプション] を通じて読み込むライセンス ファイルを送信します。
過去 2 年間、Solidworks がライセンス ファイルを送信するのに 2 週間以上かかっていることを考えると、KVM をブラックリストに載せない方がよいでしょう。
Solidworks には、「VM KVM Qemu Libvirt に SNL サーバー サポートを提供する」というタイトルの「機能強化リクエスト」が開かれています。ER # 1-9482749288 私は、Solidworks ポータルにログインし、機能強化リクエスト リンクを見つけて、KVM と入力することでこれを見つけました。
この機能強化リクエストにコメントを残してください。KVM が正当な仮想化環境であると判断されることを願っています。
答え4
Windows/タスク MGR から VM を隠すのに成功した方法を共有しようと思いました (不要なものが少なくなり、読みやすくなります)。Solidworks をアクティブ化しようとしたわけではありませんが、このスレッドは VM で実行中のものを隠すことに関するものであり、そのように編集する必要があると思います。とにかく...
domain.xmlに以下を追加し、CPUセクションを完全に削除してください。
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
#Regaular Stuff
#No CPU Type Set
<features>
<acpi/>
<apic/>
<kvm>
<hidden state='on'/>
</kvm>
<vmport state='off'/>
</features>
#Add to Bottom of Domain.xml
</devices>
<qemu:commandline>
<qemu:arg value='-cpu'/>
<qemu:arg value='host,hv_time,kvm=off,hv_vendor_id=null,-hypervisor'/>
</qemu:commandline>
</domain>
VM をオフにしてからオンにしてテストしてください。