Ich habe eine Maschine mit einem Core-i5 5200U. Es ist ein Prozessor der 5. Generation, also mit AESNI, RDRAND und RDSEED. Das ist der Grund, warum ich die Maschine gekauft habe.
Auf dem Computer läuft Ubuntu Server 14.04.03. Ubuntu stellt KVM und libvirt bereit. Einer der Gäste ist Debian 8.2, und Debian bietet X32-Unterstützung . X32 unterscheidet sich von X86 und X64. siehe auch Debian x32-Port im Debian-Wiki.
Wenn ich dmesg
nach dem Debian-Gast greife, sehe ich, dass die Architektur aktiviert ist:
$ 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
Zwei der drei nativen CPU-Funktionen sind in den Funktionen auf dem Ubuntu-Host aufgeführt, was etwas überraschend ist, da ich AES vor den anderen sehen würde:
$ virsh capabilities | egrep "(aes|rdrand|rdseed)"
<feature name='rdseed'/>
<feature name='rdrand'/>
Wenn ich jedoch /proc/cpuinfo
unter dem Debian-Gast bin , fehlen die drei CPU-Funktionen, die ich unter X32 testen möchte:
$ 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
...
Ich habe geprüft, ob Libvirt den Host-Prozessor als ein anderes Modell als die Hardware-Dokumentation identifiziert , aber mir ist nicht klar, was ich tun soll, um die Anweisungen zu aktivieren, die ich unter der Architektur zu testen versuche.
Wie kann ich AESNI, RDRAND und RDSEED auf der CPU in der Debian-VM aktivieren?
Hier ist das Skript, mit dem ich die VM erstellt habe:
$ 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