AESNI, RDRAND 및 RDSEED 기능이 없습니까?

AESNI, RDRAND 및 RDSEED 기능이 없습니까?

Core-i5 5200U가 장착된 컴퓨터가 있습니다. 5세대 프로세서이므로 AESNI, RDRAND 및 RDSEED가 있습니다. 제가 이 기계를 구입한 이유는 바로 이것입니다.

머신에서 Ubuntu Server 14.04.03을 실행 중입니다. 우분투는 KVM과 libvirt를 제공하고 있습니다. 게스트 중 하나는 Debian 8.2이고 Debian은 다음을 제공합니다.X32 지원. X32는 X86 및 X64와 다릅니다. 또한 참조데비안 x32 포트데비안 위키에서.

내가 grep 할 때dmesgDebian 게스트에서 아키텍처가 활성화된 것을 볼 수 있습니다.

$ 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에서 테스트하고 싶은 세 가지 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

libvirt/qemu가 VM에 사용하는 CPU "모델"을 지정해야 합니다.

가장 간단한 방법은 "호스트" 모델을 사용하는 것입니다. 이 모델은 호스트에서 VM으로 모든 libvirt/qemu 지원 플래그를 노출합니다.

libvirt XML 스탠자에서:

<cpu mode='host-model'/>

전체 문서는 여기:https://libvirt.org/formatdomain.html#elementsCPU

관련 정보