QEMU - QEMU

QEMU
Qemu logosu.svg
linux.png
Linux üzerinde bir süreç olarak çalışan QEMU içinde çalışan ücretsiz işletim sistemi ReactOS
Orijinal yazar(lar) Kumaş Bellard
Geliştirici(ler) QEMU ekibi:
Peter Maydell ve ark.
kararlı sürüm
6.1.0  Bunu Vikiveri'de düzenleyin / 24 Ağustos 2021 ; 48 gün önce ( 24 Ağustos 2021 )
depo
Yazılmış C
İşletim sistemi Linux , Microsoft Windows , macOS ve diğer bazı UNIX platformları
Tip Hipervizör , Emülatör
Lisans GPLv2
İnternet sitesi www .qemu .org Bunu Vikiveri'de düzenleyin

QEMU , ücretsiz ve açık kaynaklı bir hiper yöneticidir . Dinamik ikili çeviri yoluyla makinenin işlemcisini taklit eder ve makine için bir dizi farklı donanım ve cihaz modeli sağlayarak çeşitli konuk işletim sistemlerini çalıştırmasını sağlar . Sanal makineleri neredeyse yerel hızda çalıştırmak için Çekirdek Tabanlı Sanal Makine (KVM) ile birlikte çalışabilir . QEMU, bir mimari için derlenen uygulamaların diğerinde çalışmasına izin vererek, kullanıcı düzeyindeki işlemler için öykünme de yapabilir.

lisanslama

QEMU, Fabrice Bellard tarafından yazılmıştır ve özgür bir yazılımdır , çoğunlukla GNU Genel Kamu Lisansı (kısaca GPL) altında lisanslanmıştır . Çeşitli parçalar BSD lisansı , GNU Kısıtlı Genel Kamu Lisansı (LGPL) veya diğer GPL uyumlu lisanslar altında yayınlanır.

Çalışma modları

QEMU'nun birden fazla çalışma modu vardır:

Kullanıcı modu öykünmesi
Bu modda QEMU, farklı bir komut seti için derlenmiş tek bir Linux veya Darwin / macOS programını çalıştırır . Sistem çağrıları vardır thunked için endian ve 32/64 bit uyuşmazlıklar nedeniyle. Hızlı çapraz derleme ve çapraz hata ayıklama, kullanıcı modu öykünmesinin ana hedefleridir.
Sistem öykünmesi
Bu modda QEMU, çevre birimleri de dahil olmak üzere tam bir bilgisayar sistemini öykünür . Tek bir bilgisayarda birkaç sanal bilgisayarın sanal barındırmasını sağlamak için kullanılabilir. QEMU, Linux , Solaris , Microsoft Windows , DOS ve BSD dahil olmak üzere birçok konuk işletim sistemini önyükleyebilir ; x86 , MIPS , 32-bit ARMv7 , ARMv8 , PowerPC , SPARC , ETRAX CRIS ve MicroBlaze dahil olmak üzere çeşitli komut setlerinin öykünmesini destekler .
KVM Barındırma
Burada QEMU, KVM görüntülerinin kurulumu ve geçişi ile ilgilenir . Hala donanım öykünmesine dahil olur, ancak misafirin yürütülmesi, QEMU tarafından talep edildiği gibi KVM tarafından yapılır.
Xen Hosting
QEMU yalnızca donanım öykünmesine dahil olur; misafirin yürütülmesi Xen içinde yapılır ve QEMU'dan tamamen gizlenir.

Özellikleri

QEMU, çalışan tüm programlar ile sanal makinenin durumunu kaydedebilir ve geri yükleyebilir. Konuk işletim sistemlerinin QEMU içinde çalışması için yamaya ihtiyacı yoktur.

QEMU x86 dahil olmak üzere çeşitli mimarileri, bir öykünme destekler, MIPS64 , (yukarı Release 6) SPARC (sun4m ve sun4u), ARM (Entegratörü / CP ve çok yönlü / PB), SuperH , PowerPC ( Prep ve Power Macintosh ), ETRAX Cris , MicroBlaze ve RISC-V .

Sanal makine, kullanıcının sabit diskleri, CD-ROM sürücüleri, ağ kartları, ses arabirimleri ve USB aygıtları dahil olmak üzere birçok fiziksel ana bilgisayar donanımı türüyle arabirim oluşturabilir. USB aygıtları tamamen taklit edilebilir veya ana bilgisayarın USB aygıtları kullanılabilir, ancak bu yönetici ayrıcalıkları gerektirir ve tüm aygıtlarla çalışmaz.

Sanal disk görüntüleri, yalnızca konuk işletim sisteminin gerçekte kullandığı kadar disk alanı kaplayan özel bir biçimde ( qcow veya qcow2 ) saklanabilir . Bu şekilde, öykünülmüş bir 120 GB disk, ana bilgisayarda yalnızca birkaç yüz megabayt kaplayabilir. QCOW2 formatı ayrıca, başka bir (değiştirilmemiş) temel görüntü dosyasından farkı kaydeden bindirmeli görüntülerin oluşturulmasına da izin verir. Bu, öykünülmüş diskin içeriğini daha önceki bir duruma döndürme olanağı sağlar. Örneğin, bir temel görüntü, çalıştığı bilinen bir işletim sisteminin yeni bir yüklemesini içerebilir ve bindirme görüntüleri kullanılır. Konuk sistem kullanılamaz hale gelirse (virüs saldırısı, yanlışlıkla sistem imhası vb. yoluyla), kullanıcı kaplamayı silebilir ve daha önceki bir benzetilmiş disk görüntüsünü kullanabilir.

QEMU, ağ adresi çevirisi yaparak ana bilgisayar sisteminin bağlantısını paylaşan ağ kartlarına (farklı modellerin) öykünebilir, bu da konuğun ana bilgisayarla aynı ağı kullanmasına etkin bir şekilde izin verir. Sanal ağ kartları, diğer QEMU örneklerinin ağ kartlarına veya yerel TAP arabirimlerine de bağlanabilir. Ağ bağlantısı, QEMU tarafından kullanılan bir TUN/TAP arabirimini, ana bilgisayar işletim sisteminin köprüleme özelliklerini kullanarak ana bilgisayar işletim sistemi üzerinde sanal olmayan bir Ethernet arabirimi ile köprüleyerek de sağlanabilir.

QEMU, ana bilgisayar ve konuk sistemlerinin iletişim kurmasını sağlamak için çeşitli hizmetleri entegre eder; örneğin, entegre bir SMB sunucusu ve ağ bağlantı noktası yeniden yönlendirmesi (sanal makineye gelen bağlantılara izin vermek için). Ayrıca bir önyükleyici olmadan Linux çekirdeklerini önyükleyebilir.

QEMU, ana sistemdeki grafik çıktı yöntemlerinin varlığına bağlı değildir. Bunun yerine, bir kişinin entegre bir VNC sunucusu aracılığıyla konuk işletim sisteminin ekranına erişmesine izin verebilir . Ayrıca, uygulanabilir işletim sistemleriyle, herhangi bir ekran olmadan öykünülmüş bir seri hat kullanabilir.

SMP çalıştıran birden fazla CPU'yu simüle etmek mümkündür.

Hızı artırmak için ek çekirdek modülleri ( KQEMU gibi ) kullanılmadıkça veya ağ bağlantı modelinin belirli modları kullanılmadıkça, QEMU'nun çalışması için yönetici hakları gerekmez .

Küçük Kod Üreticisi

Tiny Code Generator (TCG), GCC'nin belirli bir sürümüne veya herhangi bir derleyiciye güvenmenin eksikliğini ortadan kaldırmayı , bunun yerine derleyiciyi (kod üreteci) QEMU tarafından çalışma zamanında gerçekleştirilen diğer görevlere dahil etmeyi amaçlar . Dolayısıyla tüm çeviri görevi iki bölümden oluşur: TCG işlemlerinde yeniden yazılan hedef kodun ( TB'ler ) temel blokları - bir tür makineden bağımsız ara notasyon ve ardından bu notasyon TCG tarafından ana bilgisayarın mimarisi için derlenir. Tam zamanında derleyici (JIT) modu için aralarında isteğe bağlı optimizasyon geçişleri gerçekleştirilir .

TCG, üzerinde çalıştığı her mimariyi desteklemek için yazılmış özel kod gerektirir, böylece JIT, TCG operasyonlarını neye çevireceğini bilir . Mimari için ayrılmış bir JIT kodu yoksa, TCG, TCG Yorumlayıcı (TCI) adı verilen yavaş yorumlayıcı moduna geri döner . Ayrıca, eski dyngen operasyonları yerine TCG operasyonlarını kullanmak için hedef kodun güncellenmesini gerektirir .

QEMU Sürüm 0.10.0 ile başlayarak , TCG, QEMU kararlı sürümüyle birlikte gelir. Çalışması için GCC 3.x'e dayanan dyngen'in yerini alır .

Gaz pedalı

Kqemu bir oldu Linux çekirdek modülü de yazdığı, Fabrice Bellard özellikle aynı işlemci mimarisine sahip platformlarda x86 veya x86-64 misafirler yutturma hızlandırdı. Bu, kullanıcı modu kodunu (ve isteğe bağlı olarak bazı çekirdek kodlarını) doğrudan ana bilgisayarın CPU'sunda çalıştırarak ve yalnızca çekirdek modu ve gerçek mod kodu için işlemci ve çevresel öykünmeyi kullanarak çalıştı . KQEMU, ana bilgisayar CPU'su donanım destekli sanallaştırmayı desteklemese bile birçok konuk işletim sisteminden kod yürütebilir . KQEMU başlangıçta ücretsiz olarak sunulan kapalı kaynaklı bir üründü , ancak 1.3.0pre10 sürümünden (Şubat 2007) başlayarak GNU Genel Kamu Lisansı altında yeniden lisanslandı . 0.12.0 ile başlayan QEMU sürümleri (Ağustos 2009 itibariyle) büyük belleği destekler ve bu da onları KQEMU ile uyumsuz hale getirir. QEMU'nun daha yeni sürümleri, KQEMU desteğini tamamen kaldırmıştır.

QVM86 , o zamanlar kapalı kaynaklı KQEMU için GNU GPLv2 lisanslı bir drop-in yedeğiydi. QVM86'nın geliştiricileri, Ocak 2007'de geliştirmeyi durdurdu.

Çekirdek Tabanlı Sanal Makine ( KVM ), KQEMU ve QVM86 desteğinin olmamasının ardından QEMU ile kullanım için Linux tabanlı donanım destekli sanallaştırma çözümü olarak çoğunlukla devraldı. QEMU, KVM'yi ARM ve MIPS gibi diğer mimarilerde de kullanabilir .

Intel'in Donanım Hızlandırılmış Yürütme Yöneticisi ( HAXM ), Intel VT kullanan NetBSD, Linux, Windows ve macOS üzerinde x86 tabanlı donanım destekli sanallaştırma için KVM'ye açık kaynaklı bir alternatiftir . 2013 itibariyle Intel, çoğunlukla Android geliştirme için QEMU ile kullanılmasını talep ediyor. 2.9.0 sürümünden başlayarak, resmi QEMU, hax adı altında HAXM desteği içerir .

QEMU ayrıca aşağıdaki hızlandırıcıları da destekler:

  • hvf , Apple'ın Hypervisor.frameworkIntel VT tabanlı.
  • whpx , Microsoft'un Intel VT veya AMD-V tabanlı Windows Hiper Yönetici Platformu.
  • tcg , QEMU'nun kendi Küçük Kod Üreticisi . Bu varsayılandır.

Desteklenen disk görüntü biçimleri

QEMU, aşağıdaki disk görüntüsü biçimlerini destekler:

Donanım destekli öykünme

MIPS uyumlu bir Loongson -3 işlemci 86 talimatları tercüme QEMU yardım 200 talimat ekler; bu yeni talimatlar , MIPS ardışık düzeninde x86/ CISC tarzı talimatları yürütme yükünü azaltır. Çin Bilimler Akademisi tarafından QEMU'da yapılan ek iyileştirmelerle , Loongson-3, dokuz kıyaslamadan x86 ikili dosyalarını çalıştırırken yerel ikili dosyaları yürütme performansında ortalama %70'lik bir performans elde ediyor. Haziran 2020 itibariyle, bu çatal için herhangi bir kaynak kodu yayınlanmadı, bu nedenle iddia bağımsız olarak doğrulanamıyor.

paralel öykünme

QEMU kullanan sanallaştırma çözümleri, birden çok sanal CPU'yu paralel olarak çalıştırabilir. Kullanıcı modu öykünmesi için QEMU, öykünülmüş dizileri ana bilgisayar dizilerine eşler. Tam sistem öykünmesi için QEMU, öykünülmüş her sanal CPU (vCPU) için bir ana bilgisayar iş parçacığı çalıştırabilir. Bu, konuğun şu anda ARM, Alpha, HP-PA, PowerPC, RISC-V, s390x, x86 ve Xtensa paralel sistem öykünmesini desteklemek üzere güncellenmiş olmasına bağlıdır. Aksi takdirde, her vCPU'yu sıralı bir şekilde yürüten tüm sanal CPUS'ları (vCPUS) öykünmek için tek bir iş parçacığı kullanılır.

Entegrasyon

Sanal Kutu

İlk olarak Ocak 2007'de piyasaya sürülen VirtualBox , QEMU'nun bazı sanal donanım cihazlarını kullandı ve QEMU'ya dayalı yerleşik bir dinamik yeniden derleyiciye sahipti . KQEMU'da olduğu gibi, VirtualBox neredeyse tüm konuk kodlarını ana bilgisayarda VMM (Sanal Makine Yöneticisi) aracılığıyla yerel olarak çalıştırır ve yeniden derleyiciyi yalnızca bir geri dönüş mekanizması olarak kullanır - örneğin, konuk kodu gerçek modda yürütüldüğünde . Ayrıca VirtualBox, yeniden derlemeyi en aza indirmek için yerleşik bir ayrıştırıcı kullanarak çok sayıda kod analizi ve yama yaptı. VirtualBox, belirli özellikler dışında ücretsiz ve açık kaynaklıdır ( GPL altında mevcuttur ).

Xen-HVM

Bir sanal makine monitörü olan Xen , Intel VT-x veya AMD-V donanım x86 sanallaştırma uzantılarını ve ARM Cortex-A7 ve Cortex-A15 sanallaştırma uzantısını kullanarak HVM (donanım sanal makinesi) modunda çalışabilir . Bu, paravirtualized cihazlar yerine, konuşmak için gerçek cihaz sürücülerini kullanmak için gerçek bir sanal donanım setinin domU'ya maruz kaldığı anlamına gelir.

QEMU birkaç bileşen içerir: CPU öykünücüleri, öykünülmüş aygıtlar, genel aygıtlar, makine açıklamaları, kullanıcı arabirimi ve bir hata ayıklayıcı. QEMU'daki öykünülmüş aygıtlar ve genel aygıtlar, G/Ç sanallaştırması için aygıt modellerini oluşturur. Bir PIIX3 IDE (bazı ilkel PIIX4 yetenekleriyle), Cirrus Logic veya düz VGA öykünmeli video, RTL8139 veya E1000 ağ öykünmesi ve ACPI desteği içerirler. APIC desteği Xen tarafından sağlanmaktadır.

Xen-HVM, VM'lere G/Ç sanallaştırması sağlamak için QEMU projesine dayalı cihaz öykünmesine sahiptir. Donanım, dom0'da arka uç olarak çalışan bir QEMU "cihaz modeli" arka plan programı aracılığıyla öykünür. Diğer QEMU çalıştırma modlarından (dinamik çeviri veya KVM) farklı olarak, sanal CPU'lar tamamen hipervizör tarafından yönetilir; bu, QEMU bellek eşlemeli G/Ç erişimlerini taklit ederken onları durdurmayla ilgilenir.

KVM

KVM (Kernel-based Virtual Machine), QEMU'nun x86, PowerPC ve S/390 misafirleri için sanallaştırma sunabildiği çeşitli işlemcilerin donanım sanallaştırma özelliklerine bir kullanıcı alanı programının erişmesine izin veren bir FreeBSD ve Linux çekirdek modülüdür . Hedef mimari, ana bilgisayar mimarisiyle aynı olduğunda, QEMU, hızlandırma gibi KVM'nin belirli özelliklerinden yararlanabilir.

Win4Lin Pro Masaüstü

2005'in başlarında Win4Lin , QEMU ve KQEMU'nun 'ayarlanmış' bir sürümüne dayanan Win4Lin Pro Desktop'ı tanıttı ve Windows'un NT sürümlerini barındırıyor. Haziran 2006'da Win4Lin, aynı kod tabanına dayalı Win4Lin Virtual Desktop Server'ı piyasaya sürdü. Win4Lin Virtual Desktop Server, bir Linux sunucusundan ince istemcilere Microsoft Windows oturumları sunar.

Eylül 2006'da Win4Lin , ürünün FreeBSD ve PC-BSD bağlantı noktası olan Win4BSD Pro Desktop'ın piyasaya sürülmesiyle şirket adının Virtual Bridges olarak değiştirildiğini duyurdu . Solaris desteği, Mayıs 2007'de Win4Solaris Pro Desktop ve Win4Solaris Virtual Desktop Server'ın piyasaya sürülmesiyle takip edildi.

seriICE

SerialICE, bir ana sisteme seri bağlantı yoluyla gerçek donanıma erişirken QEMU içinde sistem ürün yazılımını çalıştıran QEMU tabanlı bir ürün yazılımı hata ayıklama aracıdır. Bu, devre içi donanım emülatörleri (ICE) için ucuz bir yedek olarak kullanılabilir .

WinUAE

WinUAE için piyasaya destek CyberStorm PPC ve Blizzard 603e panoları sürümü 3.0.0 QEMU PPC çekirdeğini kullanarak.

tek boynuzlu at

Unicorn, QEMU'nun "TCG" CPU öykünücüsüne dayalı bir CPU öykünme çerçevesidir. QEMU'dan farklı olarak, Unicorn yalnızca CPU'ya odaklanır : herhangi bir çevre biriminin öykünmesi sağlanmaz ve ham ikili kod (yürütülebilir bir dosyanın veya bir sistem görüntüsünün bağlamı dışında) doğrudan çalıştırılabilir. Unicorn iş parçacığı için güvenlidir ve birden çok bağlama ve enstrümantasyon arabirimine sahiptir.

Öykünülmüş donanım platformları

x86

CPU'nun (aynı zamanda yapılandırılabilir ve (3 Mart 2018 itibariyle) Sandy Bridge , Ivy Bridge , Haswell , Broadwell ve Skylake dahil olmak üzere bir dizi Intel CPU modelini taklit edebilen) yanı sıra, aşağıdaki cihazlar taklit edilir:

BIOS QEMU sürümü 0.12 başlayarak kullandığı uygulamasıdır SeaBIOS . VGA BIOS uygulaması Plex86 / gelir Bochs . UEFI QEMU için firmware OVMF olduğunu.

PowerPC

PowerMac

QEMU, aşağıdaki PowerMac çevre birimlerini öykünür :

  • UniNorth PCI köprüsü
  • VESA Bochs Uzantılarını eşleyen PCI-VGA uyumlu grafik kartı
  • Sabit disk ve CD-ROM destekli iki PMAC-IDE-Arayüzü.
  • NE2000 PCI bağdaştırıcısı
  • Uçucu olmayan RAM
  • ADB klavye ve fare ile VIA-CUDA .

Bellenim olarak OpenBIOS kullanılır.

HAZIRLIK

QEMU, aşağıdaki PREP çevre birimlerini öykünür :

  • PCI köprüsü
  • VESA Bochs Uzantıları ile PCI VGA uyumlu grafik kartı
  • Sabit disk ve CD-ROM destekli iki IDE arabirimi
  • Disket sürücü
  • NE2000 ağ bağdaştırıcısı
  • seri arayüz
  • PREP kalıcı RAM
  • PC uyumlu klavye ve fare

PREP Hedefte, Açık Hack'Ware , bir Açık Firmware uyumlu bir BIOS kullanılır.

IBM Sistemi p

QEMU, aşağıdaki çevre birimleriyle paravirtual sPAPR arayüzünü taklit edebilir:

  • Sanal cihazlara, VGA uyumlu grafiklere, USB'ye vb. erişim için PCI köprüsü.
  • Sanal G/Ç ağ bağdaştırıcısı, SCSI denetleyicisi ve seri arabirim
  • sPAPR kalıcı RAM

sPAPR hedefinde, SLOF adı verilen başka bir Açık Ürün Yazılımı uyumlu BIOS kullanılır.

KOL

ARM32

QEMU, Fedora 8'in ARM portuna açıldı

QEMU , NEON uzantısıyla ARMv7 komut setini (ve ARMv5TEJ'e kadar) öykünür . Integrator/CP board, Versatile baseboard, RealView Emulation baseboard, XScale tabanlı PDA'lar, Palm Tungsten|E PDA, Nokia N800 ve Nokia N810 İnternet tabletleri vb. gibi tüm sistemleri taklit eder . QEMU ayrıca Android SDK'nın bir parçası olan Android emülatörüne de güç sağlar. (en güncel Android uygulamaları ARM tabanlıdır). Bada SDK'larının 2.0.0 sürümünden itibaren Samsung, öykünülmüş 'Wave' cihazlarında geliştirmeye yardımcı olmak için QEMU'yu seçti.

1.5.0 ve 1.6.0'da Samsung Exynos 4210 (çift çekirdekli Cortex a9) ve Versatile Express ARM Cortex-A9 ARM Cortex-A15 öykünür. 1.6.0'da, ARMv8 (AARCH64) mimarisinin 32-bit yönergeleri öykünür, ancak 64-bit yönergeler desteklenmez.

Xilinx Cortex A9 tabanlı Zynq SoC, aşağıdaki unsurlarla modellenmiştir:

  • Zynq-7000 ARM Cortex-A9 CPU
  • Zynq-7000 ARM Cortex-A9 MPCore
  • Üçlü Zamanlayıcı Sayacı
  • DDR Bellek Denetleyicisi
  • DMA Denetleyicisi (PL330)
  • Statik Bellek Denetleyicisi (NAND/NOR Flash)
  • SD/SDIO Çevre Birimi Denetleyicisi (SDHCI)
  • Zynq Gigabit Ethernet Denetleyici
  • USB Denetleyici (EHCI - Yalnızca ana bilgisayar desteği)
  • Zynq UART Denetleyici
  • SPI ve QSPI Kontrolörleri
  • I2C Denetleyici

ARM64

SPARC

QEMU, hem 32 hem de 64 bit SPARC mimarilerini destekler.

JavaStation'daki (sun4m-Architecture) ürün yazılımı 0.8.1 Proll sürümü olduğunda , 0.8.2 sürümünde kullanılan bir PROM yedeği OpenBIOS ile değiştirildi .

SPARC32

QEMU, aşağıdaki sun4m/sun4c/sun4d çevre birimlerini öykünür :

  • IOMMU veya IO-UNIT'ler
  • TCX Çerçeve arabelleği (grafik kartı)
  • Mızrak (Am7990) Ethernet
  • Uçucu olmayan RAM M48T02/M48T08
  • Bağımlı G/Ç: zamanlayıcılar, kesinti denetleyicileri, Zilog seri bağlantı noktaları, klavye ve güç/sıfırlama mantığı
  • Sabit disk ve CD-ROM desteğine sahip ESP SCSI denetleyicisi
  • Disket sürücü (SS-600MP'de değil)
  • CS4231 ses aygıtı (yalnızca SS-5'te, henüz çalışmıyor)

SPARC64

Aşağıdaki çevre birimleriyle Sun4u (UltraSPARC PC benzeri makine), Sun4v (T1 PC benzeri makine) veya genel Niagara (T1) makinesini taklit etme :

  • UltraSparc III APB PCI Köprüsü
  • VESA Bochs Uzantıları ile PCI VGA uyumlu kart
  • PS/2 fare ve klavye
  • Uçucu olmayan RAM M48T59
  • PC uyumlu seri bağlantı noktaları
  • Sabit disk ve CD-ROM destekli 2 PCI IDE arabirimi
  • Disket

MikroBlaze

Desteklenen çevre birimleri:

  • MMU'lu / MMU'suz MicroBlaze , dahil
  • AXI Zamanlayıcı ve Kesinti denetleyici çevre birimleri
  • AXI Harici Bellek Denetleyicisi
  • AXI DMA Kontrolörü
  • Xilinx AXI Ethernet
  • AXI Ethernet Lite
  • AXI UART 16650 ve UARTLite
  • AXI SPI Denetleyici

kafesMico32

Desteklenen çevre birimleri: Gönderen Milkymist SoC

  • UART
  • VGA
  • Hafıza kartı
  • Ethernet
  • pfu
  • zamanlayıcı

KRİZ

OpenRISC

Diğerleri

Aşağıdaki hedefleri destekleyen harici ağaçlar mevcuttur:

Ayrıca bakınız

Referanslar

Dış bağlantılar