web-dev-qa-db-ja.com

AESNI、RDRAND、RDSEEDの機能がありませんか?

Core-i55200Uを搭載したマシンを持っています。その第5世代プロセッサであるため、AESNI、RDRAND、およびRDSEEDを備えています。それが私がその機械を買った理由です。

マシンはUbuntuサーバー14.04.03を実行しています。 UbuntuはKVMおよびlibvirtを提供しています。ゲストの1つはDebian8.2であり、Debianは X32サポート を提供します。X32はX86およびX64とは異なります。 Debianwikiの Debian x32ポート を参照してください。

Debianゲストでgrepdmesgすると、アーキテクチャが有効になっていることがわかります:

$ dmesg | grep -i x32
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-AMD64 root=UUID=69773d98-b9fa-4695-8392-92759d8e6094 ro syscall.x32=y syscall.x32=y quiet
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-AMD64 root=UUID=69773d98-b9fa-4695-8392-92759d8e6094 ro syscall.x32=y syscall.x32=y quiet
[    0.328179] Enabled x32 syscalls

3つのネイティブCPU機能のうち2つは、Ubuntuホストの機能にリストされています。これは、他の機能よりも先にAESが表示されることを期待しているため、驚くべきことです。

$ virsh capabilities | egrep "(aes|rdrand|rdseed)"
      <feature name='rdseed'/>
      <feature name='rdrand'/>

しかし、私が猫を飼うとき/proc/cpuinfoDebianゲストの下で、X32でテストしたい3つのCPU機能がありません:

$ cat /proc/cpuinfo 
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 6
model name  : QEMU Virtual CPU version 2.0.0
...
flags       : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx
              fxsr sse sse2 syscall nx lm rep_good nopl pni vmx cx16 x2apic popcnt
              hypervisor lahf_lm abm tpr_shadow vnmi flexpriority ept
...

Libvirtがホストプロセッサをハードウェアドキュメントとは異なるモデルとして識別していることを確認しました ですが、アーキテクチャでテストしようとしている命令を有効にするために何をすべきかわかりません。

Debian VMのCPUでAESNI、RDRAND、およびRDSEEDを有効にするにはどうすればよいですか?


VMの作成に使用したスクリプトは次のとおりです。

$ cat mk-vm.sh
#!/bin/bash

NAME=Debian_8_x64
ISO_PATH=/opt/libvirt/images/debian-8.2.0-AMD64-netinst.iso
DISK_PATH="/opt/libvirt/machines/$NAME/$NAME.img"

mkdir -p "/opt/libvirt/machines/$NAME"

virt-install \
  --connect qemu:///system \
  --virt-type kvm \
  --name "$NAME" \
  --ram 2048 \
  --disk path=$DISK_PATH,size=8 \
  --vnc \
  --cdrom $ISO_PATH \
  --livecd \
  --network network=Host-bridge \
  --os-type linux
1
jww

Libvirt/qemuがVMに使用するCPU「モデル」を指定する必要があります。

最も簡単な方法は、「ホスト」モデルを使用することです。これにより、libvirt/qemuでサポートされているすべてのフラグがホストからVMに公開されます。

Libvirt XMLスタンザの場合:

<cpu mode='Host-model'/>

完全なドキュメントはこちら: https://libvirt.org/formatdomain.html#elementsCP

3
Cédric Dufour