เบ›เปˆเบญเบเบ•เบปเบง emulator QEMU 4.1

เปเบ™เบฐเบ™เบณ เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ„เบ‡เบเบฒเบ™ QEMU 4.1. เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™ emulator, QEMU เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบตเบฎเบฒเบ”เปเบงเบซเบ™เบถเปˆเบ‡เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบตเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบกเบปเบ”, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ ARM เปƒเบ™ PC เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰ x86. เปƒเบ™เป‚เบซเบกเบ” virtualization เปƒเบ™ QEMU, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป‚เบ”เบ”เบ”เปˆเบฝเบงเปเบกเปˆเบ™เบขเบนเปˆเปƒเบเป‰เบเบฑเบšเบฅเบฐเบšเบปเบšเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบเบปเบ‡เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบš CPU เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบกเบ”เบนเบ™ Xen hypervisor เบซเบผเบท KVM.

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ‚เบทเป‰เบ™โ€‹เปƒเบ™โ€‹เป€เบšเบทเป‰เบญเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹เป‚เบ”เบ Fabrice Bellard เป€เบžเบทเปˆเบญโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™ Linux executable เบชเบฑเบ‡โ€‹เบฅเบงเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เป€เบงโ€‹เบ—เบต x86 เปƒเบ™โ€‹เบชเบฐโ€‹เบ–เบฒโ€‹เบ›เบฑเบ”โ€‹เบ•เบฐโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™ x86โ€‹. เปƒเบ™เป„เบฅเบเบฐเบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™ emulation เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบชเปเบฒเบฅเบฑเบš 14 เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบฎเบฒเบ”เปเบง, เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบฎเบฒเบ”เปเบง emulated เป„เบ”เป‰เป€เบเบตเบ™ 400. เปƒเบ™เบเบฒเบ™เบเบฐเบเบฝเบกเบชเบฐเบšเบฑเบš 4.1, เบซเบผเบฒเบเบเบงเปˆเบฒ 2000 เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบˆเบฒเบ 276 เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เบเบฐเปเบˆ เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบžเบตเปˆเบกเปƒเบ™ QEMU 4.1:

  • ะ’ ัะผัƒะปัั‚ะพั€ ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹ x86 ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ะผะพะดะตะปะตะน CPU Hygon Dhyana ะธ Intel SnowRidge. ะ”ะพะฑะฐะฒะปะตะฝะฐ ัะผัƒะปัั†ะธั ั€ะฐััˆะธั€ะตะฝะธั RDRAND (ะฐะฟะฟะฐั€ะฐั‚ะฝั‹ะน ะณะตะฝะตั€ะฐั‚ะพั€ ะฟัะตะฒะดะพัะปัƒั‡ะฐะนะฝั‹ั… ั‡ะธัะตะป). ะ”ะพะฑะฐะฒะปะตะฝั‹ ั„ะปะฐะณะธ
    md-clear ะธ mds-no ะดะปั ัƒะฟั€ะฐะฒะปะตะฝะธั ะทะฐั‰ะธั‚ะพะน ะพั‚ ะฐั‚ะฐะบ MDS (Microarchitectural Data Sampling) ะฝะฐ ะฟั€ะพั†ะตััะพั€ั‹ Intel. ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะพะฟั€ะตะดะตะปะตะฝะธั ั‚ะพะฟะพะปะพะณะธะน ะธะฝั‚ะตะณั€ะฐะปัŒะฝั‹ั… ัั…ะตะผ ะฟั€ะธ ะฟะพะผะพั‰ะธ ั„ะปะฐะณะฐ ยซ-smp โ€ฆ,dies=ยป. ะ ะตะฐะปะธะทะพะฒะฐะฝะพ ะฒะตั€ัะธะพะฝะธั€ะพะฒะฐะฝะธะต ะดะปั ะฒัะตั… ะผะพะดะตะปะตะน CPU x86;

  • ะ‘ะปะพั‡ะฝั‹ะน ะดั€ะฐะนะฒะตั€ SSH ะฟะตั€ะตะฒะตะดั‘ะฝ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั libssh2 เบชเบธเบ” libsh;
  • ะ’ ะดั€ะฐะนะฒะตั€ virtio-gpu (ะฒะธั€ั‚ัƒะฐะปัŒะฝั‹ะน GPU, ั€ะฐะทะฒะธะฒะฐะตะผั‹ะน ะฒ ั€ะฐะผะบะฐั… ะฟั€ะพะตะบั‚ะฐ Virgil) ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ะฒั‹ะฝะพัะฐ ะพะฟะตั€ะฐั†ะธะน ะพั‚ั€ะธัะพะฒะบะธ 2D/3D ะฒะพ ะฒะฝะตัˆะฝะธะน ะฟั€ะพั†ะตัั vhost-user (ะฝะฐะฟั€ะธะผะตั€, vhost-user-gpu);
  • ะ’ ัะผัƒะปัั‚ะพั€ ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹ ARM ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ั€ะฐััˆะธั€ะตะฝะธั ARMv8.5-RNG ะดะปั ะณะตะฝะตั€ะฐั†ะธะธ ะฟัะตะฒะดะพัะปัƒั‡ะฐะนะฝั‹ั… ั‡ะธัะตะป. ะ ะตะฐะปะธะทะพะฒะฐะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ัะผัƒะปัั†ะธะธ FPU ะดะปั ั‡ะธะฟะพะฒ ัะตะผะตะนัั‚ะฒะฐ Cortex-M ะธ ั€ะตัˆะตะฝั‹ ะฟั€ะพะฑะปะตะผั‹ ั ัะผัƒะปัั†ะธะตะน FPU ะดะปั Cortex-R5F. ะŸั€ะตะดะปะพะถะตะฝะฐ ะฝะพะฒะฐั ัะธัั‚ะตะผะฐ ะฝะฐัั‚ั€ะพะนะบะธ ะพะฟั†ะธะน ัะฑะพั€ะบะธ, ะพั„ะพั€ะผะปะตะฝะฝะฐั ะฒ ัั‚ะธะปะต Kconfig. ะ”ะปั SoC Exynos4210 ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ DMA-ะบะพะฝั‚ั€ะพะปะปะตั€ะพะฒ PL330;
  • ะ’ ัะผัƒะปัั‚ะพั€ะต ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹ MIPS ัƒะปัƒั‡ัˆะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ะธะฝัั‚ั€ัƒะบั†ะธะน MSA ASE ะฟั€ะธ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะธ ะฟะพั€ัะดะบะฐ ัะปะตะดะพะฒะฐะฝะธั ะฑะฐะนั‚ big-endian ะธ ะฟั€ะธะฒะตะดะตะฝะฐ ะฒ ัะพะพั‚ะฒะตั‚ัั‚ะฒะธะต ั ัั‚ะฐะปะพะฝะฝั‹ะผ ะพะฑะพั€ัƒะดะพะฒะฐะฝะธะตะผ ะพะฑั€ะฐะฑะพั‚ะบะฐ ัะปัƒั‡ะฐะตะฒ ะดะตะปะตะฝะธั ะฝะฐ ะฝะพะปัŒ. ะฃะฒะตะปะธั‡ะตะฝะฐ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ ัะผัƒะปัั†ะธะธ ะธะฝัั‚ั€ัƒะบั†ะธะน MSA ะดะปั ั†ะตะปะพั‡ะธัะปะตะฝะฝั‹ั… ะฒั‹ั‡ะธัะปะตะฝะธะน ะธ ะพะฟะตั€ะฐั†ะธะน ะฟะตั€ะตัั‚ะฐะฝะพะฒะบะธ;
  • ะ’ ัะผัƒะปัั‚ะพั€ะต ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹ PowerPC ะฟะพัะฒะธะปะฐััŒ ะฟะพะดะดะตั€ะถะบะฐ ะฟั€ะพะฑั€ะพัะฐ ะบ GPU NVIDIA V100/NVLink2 ะฟั€ะธ ะฟะพะผะพั‰ะธ VFIO. ะ”ะปั pseries ั€ะตะฐะปะธะทะพะฒะฐะฝะพ ัƒัะบะพั€ะตะฝะธะต ัะผัƒะปัั†ะธะธ ะบะพะฝั‚ั€ะพะปะปะตั€ะฐ ะฟั€ะตั€ั‹ะฒะฐะฝะธะน XIVE ะธ ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ะณะพั€ัั‡ะตะณะพ ะฟะพะดะบะปัŽั‡ะตะฝะธั PCI ะผะพัั‚ะพะฒ. ะ’ะฝะตัะตะฝั‹ ะพะฟั‚ะธะผะธะทะฐั†ะธะธ ะฒ ัะผัƒะปัั†ะธัŽ ะฒะตะบั‚ะพั€ะฝั‹ั… ะธะฝัั‚ั€ัƒะบั†ะธะน (Altivec/VSX);
  • ะ’ ัะผัƒะปัั‚ะพั€ ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹ RISC-V ะดะพะฑะฐะฒะปะตะฝะฐ ะฝะพะฒะฐั ะผะพะดะตะปัŒ ะพะฑะพั€ัƒะดะพะฒะฐะฝะธั โ€” ยซspikeยป. ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ISA 1.11.0. ะฃะปัƒั‡ัˆะตะฝ 32-ั€ะฐะทั€ัะดะฝั‹ะน ABI ัะธัั‚ะตะผะฝั‹ั… ะฒั‹ะทะพะฒะพะฒ, ั€ะฐััˆะธั€ะตะฝะฐ ะพะฑั€ะฐะฑะพั‚ะบะฐ ะฝะตะดะพะฟัƒัั‚ะธะผั‹ั… ะธะฝัั‚ั€ัƒะบั†ะธะน ะธ ัƒะปัƒั‡ัˆะตะฝ ะฒัั‚ั€ะพะตะฝะฝั‹ะน ะพั‚ะปะฐะดั‡ะธะบ. ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ั‚ะพะฟะพะปะพะณะธะธ CPU ะฒ device tree;
  • ะ’ ัะผัƒะปัั‚ะพั€ ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹ s390 ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ัะผัƒะปัั†ะธะธ ะฒัะตั… ะฒะตะบั‚ะพั€ะฝั‹ั… ะธะฝัั‚ั€ัƒะบั†ะธะน ะณั€ัƒะฟะฟั‹ ยซVector Facilityยป ะธ ะดะพะฑะฐะฒะปะตะฝั‹ ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝั‹ะต ัะปะตะผะตะฝั‚ั‹ ะดะปั ะฟะพะดะดะตั€ะถะบะธ ัะธัั‚ะตะผ gen15 (ะฒ ั‚ะพะผ ั‡ะธัะปะต ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ AP Queue Interruption Facility ะดะปั vfio-ap). ะ ะตะฐะปะธะทะพะฒะฐะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ BIOS ะดะปั ะทะฐะณั€ัƒะทะบะธ ั ECKD DASD, ะฟั€ะธะฒัะทะฐะฝะฝะพะณะพ ะบ ะณะพัั‚ะตะฒะพะน ัะธัั‚ะตะผะต ั‡ะตั€ะตะท vfio-ccw;
  • ะ’ ัะผัƒะปัั‚ะพั€ะต ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹ SPARC ะดะปั ัะธัั‚ะตะผ sun4m ั€ะตัˆะตะฝั‹ ะฟั€ะพะฑะปะตะผั‹ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ั„ะปะฐะณะฐ ยซ-vga noneยป ะดะปั OpenBIOS;
  • ะ’ ัะผัƒะปัั‚ะพั€ะต ะฟั€ะพั†ะตััะพั€ะพะฒ ัะตะผะตะนัั‚ะฒะฐ Tensilica Xtensa ั€ะตะฐะปะธะทะพะฒะฐะฝั‹ ะพะฟั†ะธะธ ะดะปั MPU (memory protection unit) ะธ ัะบัะบะปัŽะทะธะฒะฝะพะณะพ ะดะพัั‚ัƒะฟะฐ;
  • ะ’ ะบะพะผะฐะฝะดัƒ ยซqemu-img convertยป ะดะพะฑะฐะฒะปะตะฝะฐ ะพะฟั†ะธั ยซโ€”salvageยป ะดะปั ะพั‚ะบะปัŽั‡ะตะฝะธั ะฐะฒะฐั€ะธะนะฝะพะณะพ ะทะฐะฒะตั€ัˆะตะฝะธั ั€ะฐะฑะพั‚ั‹ ะฟั€ะพั†ะตััะฐ ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธั ะพะฑั€ะฐะทะฐ ะฒ ัะปัƒั‡ะฐะต ะฒะพะทะฝะธะบะฝะพะฒะตะฝะธั ะพัˆะธะฑะพะบ ะฒะฒะพะดะฐ/ะฒั‹ะฒะพะดะฐ (ะฝะฐะฟั€ะธะผะตั€, ะผะพะถะฝะพ ะฟั€ะธะผะตะฝัั‚ัŒ ะดะปั ะฒะพััั‚ะฐะฝะพะฒะปะตะฝะธั ั‡ะฐัั‚ะธั‡ะฝะพ ะฟะพะฒั€ะตะถะดั‘ะฝะฝั‹ั… ั„ะฐะนะปะพะฒ qcow2). ะ’ ะบะพะผะฐะฝะดะต
    ยซqemu-img rebaseยป ะพะฑะตัะฟะตั‡ะตะฝะฐ ั€ะฐะฑะพั‚ะฐ, ะบะพะณะดะฐ ะดะปั ะฒั…ะพะดะฝะพะณะพ ั„ะฐะนะปะฐ ะฟะพะบะฐ ะฝะต ัะพะทะดะฐะฝ ะฑะฐะทะพะฒั‹ะน (backing) ั„ะฐะนะป;

  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฟะตั€ะตะฝะฐะฟั€ะฐะฒะปะตะฝะธั ะฒั‹ะฒะพะดะฐ, ะพั€ะณะฐะฝะธะทะพะฒะฐะฝะฝะพะณะพ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ั‚ะตั…ะฝะพะปะพะณะธะธ ยซsemihostingยป (ะฟะพะทะฒะพะปัะตั‚ ัะผัƒะปะธั€ัƒะตะผะพะผัƒ ัƒัั‚ั€ะพะนัั‚ะฒัƒ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ stdout, stderr ะธ stdin ะดะปั ัะพะทะดะฐะฝะธั ั„ะฐะนะปะพะฒ ะฝะฐ ัั‚ะพั€ะพะฝะต ั…ะพัั‚ะฐ), ะฒ ะฑัะบะตะฝะด chardev (ยซ-semihosting-config enable=on,target=native,chardev=[ID]ยป);
  • ะ’ ะฑะปะพั‡ะฝะพะผ ะดั€ะฐะนะฒะตั€ะต VMDK ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ััƒะฑั„ะพั€ะผะฐั‚ะฐ seSparse ะฒ ั€ะตะถะธะผะต ั‚ะพะปัŒะบะพ ะดะปั ั‡ั‚ะตะฝะธั;
  • ะ’ ะดั€ะฐะนะฒะตั€ะต ัะผัƒะปัั†ะธะธ GPIO ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ GPIO-ะบะพะฝั‚ั€ะพะปะปะตั€ะฐ SiFive.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™