QEMU QEMU merupakan singkatan dari Quick Emulator yaitu emulator tidak berbayar dan open-source yang melakukan virtualisasi perangkat keras.
QEMU adalah mesin virtual monitor yang dihosting, mengemulasi prosesor mesin melalui terjemahan biner dinamis dan menyediakan satu set perangkat keras dan model perangkat yang berbeda untuk mesin, dapat menjalankan berbagai sistem operasi tamu. Hal ini juga dapat digunakan dengan KVM untuk menjalankan mesin virtual dengan kecepatan mendekati aslinya (dengan mengambil keuntungan dari ekstensi perangkat keras seperti IntelVT. QEMU juga dapat melakukan emulasi untuk proses tingkat pengguna, memungkinkan aplikasi dikompilasi untuk satu arsitektur untuk dijalankan pada yang lain.
QEMU ditulis oleh Fabrice Bellard dan merupakan perangkat lunak gratis, terutama berlisensi di bawah GNU General Public License (GPL untuk pendek). Berbagai bagian dirilis di bawah lisensi BSD, Lisensi Publik Umum GNU GNU (LGPL) atau lisensi lain yang kompatibel dengan GPL.
QEMU memiliki beberapa mode operasi yaitu:
Emulasi mode pengguna Dalam mode ini, QEMU menjalankan program Linux atau Darwin / macOS tunggal yang dikompilasi untuk rangkaian instruksi yang berbeda. Panggilan sistem di-thunked untuk endianness dan untuk 32/64 bit mismatches. Kompilasi silang yang cepat dan cross-debugging adalah target utama untuk emulasi mode pengguna.
Emulasi sistem Dalam mode ini QEMU mengemulasi sistem komputer lengkap, termasuk periferal. Ini dapat digunakan untuk menyediakan hosting virtual dari beberapa komputer virtual pada satu komputer. QEMU dapat mem-boot banyak sistem operasi tamu, termasuk Linux, Solaris, Microsoft Windows, DOS, dan BSD; mendukung beberapa set instruksi, termasuk x86, MIPS, 32-bit ARMv7, ARMv8, PowerPC, SPARC, ETRAX CRIS dan MicroBlaze.
KVM Hosting = Di sini QEMU berkaitan dengan pengaturan dan migrasi gambar KVM. Ini masih terlibat dalam persaingan perangkat keras, tetapi eksekusi tamu dilakukan oleh KVM seperti yang diminta oleh QEMU.
Xen Hosting QEMU hanya terlibat dalam persaingan perangkat keras; eksekusi tamu dilakukan dalam Xen dan benar-benar tersembunyi dari QEMU.
QEMU dapat menyimpan dan memulihkan keadaan mesin virtual dengan semua program yang berjalan. Sistem operasi tamu tidak perlu menambal untuk dijalankan di QEMU.
QEMU mendukung persaingan berbagai arsitektur, termasuk:
Mesin virtual dapat berinteraksi dengan banyak jenis perangkat fisik host, termasuk hard disk pengguna, drive CD-ROM, kartu jaringan, antarmuka audio, dan perangkat USB. Perangkat USB dapat sepenuhnya diemulasi, atau perangkat USB host dapat digunakan, meskipun ini memerlukan hak istimewa administrator dan tidak berfungsi dengan semua perangkat.
Gambar disk virtual dapat disimpan dalam format khusus (qcow atau qcow2) yang hanya menggunakan ruang disk yang benar-benar digunakan oleh OS tamu. Dengan cara ini, disk 120 GB yang teremulasi dapat menempati hanya beberapa ratus megabyte pada host. Format QCOW2 juga memungkinkan pembuatan gambar overlay yang merekam perbedaan dari file gambar dasar yang lain (tidak dimodifikasi). Ini memberikan kemungkinan untuk mengembalikan isi disk yang ditiru ke keadaan sebelumnya. Sebagai contoh, gambar dasar dapat menyimpan instalasi baru dari sistem operasi yang diketahui berfungsi, dan gambar overlay digunakan. Jika sistem tamu menjadi tidak dapat digunakan (melalui serangan virus, penghancuran sistem yang tidak disengaja, dll.), Pengguna dapat menghapus overlay dan merekonstruksi versi disk image yang diemulasikan sebelumnya.
QEMU dapat meniru kartu jaringan (model yang berbeda) yang berbagi konektivitas sistem host dengan melakukan terjemahan alamat jaringan, secara efektif memungkinkan tamu untuk menggunakan jaringan yang sama sebagai tuan rumah. Kartu jaringan virtual juga dapat terhubung ke kartu jaringan contoh lain QEMU atau ke antarmuka TAP lokal. Konektivitas jaringan juga dapat dicapai dengan menjembatani antarmuka TUN / TAP yang digunakan oleh QEMU dengan antarmuka Ethernet non-virtual pada OS host menggunakan fitur bridging OS host.
QEMU mengintegrasikan beberapa layanan untuk memungkinkan sistem host dan tamu untuk berkomunikasi; misalnya, server SMB terintegrasi dan pengalihan port jaringan (untuk memungkinkan koneksi masuk ke mesin virtual). Itu juga dapat mem-boot kernel Linux tanpa bootloader.
QEMU tidak bergantung pada kehadiran metode output grafis pada sistem host. Sebaliknya, dapat memungkinkan seseorang untuk mengakses layar OS tamu melalui server VNC yang terintegrasi. Ia juga dapat menggunakan saluran serial yang ditiru, tanpa layar apa pun, dengan sistem operasi yang berlaku.
Mensimulasikan beberapa CPU menjalankan SMP dimungkinkan.
QEMU tidak memerlukan hak administratif untuk dijalankan, kecuali modul kernel tambahan untuk meningkatkan kecepatan digunakan (seperti KQEMU), atau ketika beberapa mode dari model konektivitas jaringannya digunakan.
The Tiny Code Generator (TCG) bertujuan untuk menghapus kekurangan mengandalkan versi tertentu dari GCC atau kompilator, melainkan menggabungkan compiler (generator kode) ke dalam tugas-tugas lain yang dilakukan oleh QEMU pada waktu proses. Oleh karena itu, seluruh tugas penerjemahan terdiri dari dua bagian: blok kode target (TB) yang ditulis ulang dalam ops TCG - sejenis notasi perantara mesin-independen, dan selanjutnya notasi ini dikompilasi untuk arsitektur host oleh TCG. Optimalisasi pengabaian dilakukan di antara mereka.
TCG membutuhkan kode khusus yang ditulis untuk mendukung setiap arsitektur yang dijalankannya. Ini juga mengharuskan terjemahan instruksi target ditulis ulang untuk memanfaatkan ops TCG, bukan ops dingen yang sebelumnya digunakan.
Dimulai dengan QEMU Versi 0.10.0, kapal TCG dengan rilis stabil QEMU.
"KQEMU" adalah modul kernel Linux, juga ditulis oleh Fabrice Bellard, yang terutama mempercepat emulasi tamu x86 atau x86-64 pada platform dengan arsitektur CPU yang sama. Ini bekerja dengan menjalankan kode mode pengguna (dan secara opsional beberapa kode kernel) secara langsung pada CPU komputer host, dan dengan menggunakan prosesor dan emulasi perifer hanya untuk mode kernel dan kode real-mode. KQEMU dapat mengeksekusi kode dari banyak OS tamu bahkan jika CPU host tidak mendukung virtualisasi hardware-assisted. KQEMU awalnya adalah produk sumber tertutup yang tersedia secara gratis, tetapi mulai dari versi 1.3.0pre10, itu diberikan lisensi di bawah Lisensi Publik Umum GNU. Versi QEMU dimulai dengan 0.12.0 (per Agustus 2009) mendukung memori besar yang membuat mereka tidak kompatibel dengan KQEMU. Rilis QEMU yang lebih baru telah sepenuhnya menghapus dukungan untuk KQEMU.
QVM86 adalah pengganti drop-in berlisensi GNU GPLv2 untuk KQEMU sumber tertutup. Para pengembang QVM86 berhenti pembangunannya pada Januari 2007.
Mesin Virtual berbasis Kernel (KVM) sebagian besar telah diambil alih sebagai solusi virtualisasi hardware-assisted berbasis Linux untuk digunakan dengan QEMU di tengah kurangnya dukungan untuk KQEMU dan QVM86.
Intel Hardware Accelerated Execution Manager (HAXM) adalah alternatif open-source untuk KVM untuk virtualisasi hardware-assisted berbasis x86 pada Windows dan macOS. Pada 2013 Intel kebanyakan meminta penggunaannya dengan QEMU untuk pengembangan Android. Dimulai dengan versi 2.9.0, QEMU resmi termasuk dukungan untuk HAXM.
QEMU mendukung format gambar disk berikut:
Prosesor Loongson-3 MIPS yang kompatibel menambahkan 200 instruksi baru untuk membantu QEMU menerjemahkan instruksi x86; instruksi-instruksi baru itu menurunkan overhead mengeksekusi instruksi gaya x86 / CISC dalam pipa MIPS. Dengan peningkatan tambahan di QEMU oleh Chinese Academy of Sciences, Loongson-3 mencapai rata-rata 70% kinerja mengeksekusi binari asli saat menjalankan biner x86 dari sembilan tolak ukur.
Solusi virtualisasi yang menggunakan QEMU dapat menjalankan beberapa CPU virtual secara paralel. Untuk emulasi-emulasi mode pengguna, peta QEMU meniru untaian untuk menghosting untaian. Untuk emulasi sistem penuh, QEMU mampu menjalankan thread host untuk setiap CPU virtual yang teremulasi (vCPU). Ini tergantung pada tamu yang telah diperbarui untuk mendukung emulasi sistem paralel, saat ini ARM, Alpha, HP-PA, PowerPC, RISC-V, dan s390x. Jika tidak, satu utas digunakan untuk meniru semua CPUS virtual (vCPUS) yang mengeksekusi setiap vCPU dengan cara round-robin.
QEMU mencakup beberapa komponen: emulator CPU, perangkat yang diemulasi, perangkat generik, deskripsi mesin, antarmuka pengguna, dan debugger. Perangkat yang diemulasi dan perangkat generik dalam QEMU membuat model perangkatnya untuk virtualisasi I / O. Mereka terdiri dari IDE PIIX3 (dengan beberapa kemampuan PIIX4 yang belum sempurna), Cirrus Logic atau video emulasi VGA polos, emulasi jaringan RTL8139 atau E1000, dan dukungan ACPI. Dukungan APIC disediakan oleh Xen.
Xen-HVM memiliki emulasi perangkat berdasarkan proyek QEMU untuk menyediakan virtualisasi I / O ke VM. Perangkat keras ditiru melalui "daemon model perangkat" QEMU yang berjalan sebagai backend di dom0. Tidak seperti mode menjalankan QEMU lainnya (terjemahan dinamis atau KVM), CPU virtual benar-benar dikelola ke hypervisor, yang mengurus menghentikan mereka sementara QEMU meniru akses I / O yang dipetakan memori.
Pada bulan September 2006, Win4Lin mengumumkan perubahan nama perusahaan menjadi Jembatan Virtual dengan merilis Win4BSD Pro Desktop, port produk ke FreeBSD dan PC-BSD. Dukungan Solaris diikuti pada Mei 2007 dengan merilis Win4Solaris Pro Desktop dan Win4Solaris Virtual Desktop Server.