Вы могли выполнить его в chroot, монтируя специальные версии /tmp
и такая внутренняя часть. Возможно, systemd помогает, и особенно systemd-nspawn (1), который смотрит точно так же, как то, что Вы хотите.
, по крайней мере, с пакетом Fedora 20 QEMU-IMG
(1.6.2, 10.FC20) не использует AES-NI для AES Crypto.
можно проверить так:
имеет ли у ЦП AES-NI?
$ GreeP AES / ProC / CPUINFO -I -I -I -I -I
Например, мой Intel Core 7 имеет это расширение.
Установите необходимые пакеты отладки:
# DEBUGINFO Установите QEMU-IMG
Run QEMU-IMG
в отладчике:
$ GDB --Args QEMU-IMG Convertvert Convert-Encryption -o qcow2 disk1.img enc1.qcow2
Установите точку перерыва в хорошо известной функции шифрования QEMU, которая не оптимизирована для AES-NI:
(GDB) b aes_encrypt
Точка останова 1 на 0x794B0: файл util / aes.c, линия 881.
Запустите программу:
(GDB) R
Начальная программа: / USR / BIN / QEMU-IMG Convert Convert-Encryption -o qcow2 disk1.img enc1.qcow2
В моем тестировании он там остановится:
Breakpoint 1, AES_encrypt (in=0x7ffff7fabd60 "...", key=0x555555c1b510) at util/aes.c:881
881 const AES_KEY *key) {
(gdb) n
889 assert(in && out && key);
(gdb) n
881 const AES_KEY *key) {
(gdb) n
889 assert(in && out && key);
(gdb) n
896 s0 = GETU32(in ) ^ rk[0];
(gdb) n
897 s1 = GETU32(in + 4) ^ rk[1];
означает, что, действительно, инструкции Intel AES не используются.
Моя первая мысль заключалась в том, что QEMU-IMG
, возможно, просто использует Pibcrypto
, так что AES-NI автоматически используется, когда доступно. QEMU-IMG
Даже ссылки против Libcrypto (CF LDD $ (которые QEMU-IMG)
) - но не используют его для AES Crypto. Хм.
Я полученным местоположением точки останова через GreaPing исходный код QEMU. На Fedora вы можете получить это так:
$ fedpkg clone -a qemu
$ cd qemu
$ fedpkg source
$ tar xfv qemu-2.2.0-rc1.tar.bz2
$ cd qemu-2.2.0-rc1
Примечание: GDB
может быть выведен через команду Q
UIT.
Хотелось бы поделиться этим потоком о поддержке AES-NI в процессоре Westmere в версии 1.7.10.4 QEMU:
http://lists.gnu.org/archive/html/qemu-devel/2013-03/msg05374.html
Функциональность рассмотрена и принята в поток кода.
Далее имеется еще один поток, связанный с тем, почему в 2.2:
https://www.redhat.com/archives/libvirt-users/2015-February/msg00007.html
Поток, похоже, указывает на то, что существует способ включения этой функции, но с возможными негативными последствиями из-за несовместимости с libvirt и обнаружением CPU. Лично я бы хотел увидеть эту возможность снова.