동일한 아키텍처를 사용한 qemu-static 사용 사례

동일한 아키텍처를 사용한 qemu-static 사용 사례

방금 Ubuntu 패키지의 64비트 amd 버전에 qemu-user-static바이너리가 포함되어 있다는 것을 발견했습니다 /usr/bin/qemu-x86_64-static.

일반적으로 qemu-user-static다른 아키텍처를 에뮬레이트하는 데 사용되므로 amd64 에뮬레이터에서 amd64를 빌드하고 배포하는 이유를 찾으려고 노력했습니다.

Times는 이것이 단순한 래퍼 그 이상이며 amd64의 armhf 에뮬레이션보다 여전히 빠르다는 것을 dd보여줍니다 . qemu-x86_64-static디버깅, 샌드박싱 및/또는 보안에 사용 사례가 있을까요?

국가의:

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도 포함되어 있습니다.)

관련 정보