相同架构的 qemu-static 用例

相同架构的 qemu-static 用例

我刚刚发现 64 位 amd 版本的 Ubuntu 软件包qemu-user-static包含二进制文件/usr/bin/qemu-x86_64-static.

通常,qemu-user-static用于模拟另一种架构,因此我尝试找到他们在 amd64 模拟器上构建和部署 amd64 的原因。

时代dd表明,它qemu-x86_64-static不仅仅是一个包装器,而且仍然比 amd64 上的 armhf 仿真更快。也许在调试、沙箱和/或安全方面有用例?

本国的:

me:~$ time /bin/dd if=/dev/zero of=/dev/null count=100000
100000+0 records in
100000+0 records out
51200000 bytes (51 MB) copied, 0.0694854 s, 737 MB/s
real    0m0.075s
user    0m0.017s
sys 0m0.058s

模拟:

me:~$ time qemu-x86_64-static /bin/dd if=/dev/zero of=/dev/null count=100000
100000+0 records in
100000+0 records out
51200000 bytes (51 MB) copied, 0.175123 s, 292 MB/s
real    0m0.198s
user    0m0.121s
sys 0m0.076s

一切都是amd64:

me:~$ uname -a
Linux 3.13.0-65-generic #105-Ubuntu SMP Mon Sep 21 18:50:58 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

me:~$ file /bin/dd
/bin/dd: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=83e959307f50e08b797447bd3f673b1f0e7c2386, stripped

me:~$ file /usr/bin/qemu-x86_64-static
/usr/bin/qemu-x86_64-static: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=8fb7501ac002a3f2cee4c07c77b9e7232d6c501e, stripped

答案1

qemu-x86_64-static 也存在于为 ARM 架构编译的 qemu-user-static 包中。如果您需要在 ARM 环境上运行 x86 编译的应用程序,它非常有用。我认为 qemu 的相同代码库是为所有架构编译的,无需过滤。这就是为什么它也出现在 X86 qemu-user-static 包中。附带说明一下,ARM 上的 qemu-user-static 包还包含 qemu-arm-static ;)

相关内容