[ QEMU mendukung sistem x86, PowerPC, dan SPARC; namun karena saya memiliki fokus sendiri dan tidak adanya software yang membutuhkan arsitektur lain, saya hanya membahas dukungan emulator pada x86. Namun harus diingat bahwa, walaupun saya mencoba untuk memberikan penjelasan sedetil mungkin mengenai pengalaman saya dengan QEMU, saya melewatkan sebagian kemampuan software ini. Saya belum pernah menggunakan software ini untuk menjalankan sistem operasi non-x86, kecuali hanya untuk melakukan boot pada sebuah file ISO Darwin. ]
Pengantar
Saya telah menggunakan Linux sejak tahun 1997, bersama dengan Windows. Terkadang saya menggunakan salah satu sistem operasi untuk sementara waktu, kemudian menggantinya dengan yang lain. Terkadang saya menggunakan dual-booting, dengan dua sistem operasi terinstal pada satu komputer. Saya tidak pernah benar-benar merasa puas dengan kedua cara tersebut. Saat menggunakan salah satunya, ada saja aplikasi pada sistem operasi yang lain yang tidak bisa dijalankan, dan port Win32 dan WINE sepertinya selalu gagal menjalankan aplikasi secara native. Saat menggunakan dual-booting, pembagian ruang harddisk selalu menjadi masalah, terutama karena Linux bisa membaca NTFS (dan membaca dan menulis ke FAT32), sedangkan semua ruang harddisk yang diinstal Linux tidak dapat diakses di Windows.
Saya teringat saat menggunakan OS/2 Warp pada pertengahan 1977. Saya pikir sebuah ide yang menarik untuk mengintegrasikan apa yang sebenarnya sebuah virtual DOS (atau DOS/Windows) pada sebuah komputer. Secara tidak langsung pemikiran ini membawa saya untuk menjelajahi suatu bentuk virtualisasi yang lain, termasuk menjalankan AppleDOS pada ApplePC di bawah DOSEMU di Linux. Saat VMWare merilis software mereka, saya mencobanya, namun pada saat itu saya tidak berhasil menjalankannya pada mesin Slackware. Pada waktu itu, kemampuan emulasi dan kebutuhan hardwarenya terlalu berat untuk dijalankan pada komputer 486 yang masih harus saya pergunakan untuk bekerja hingga beberapa tahun berikutnya.
Sekarang saya telah memiliki komputer yang lebih modern, dan saya kembali mencoba-coba emulator modern seperti Basilisk II, Bochs, dan QEMU. Saya bisa melihat potensi yang sangat dekat untuk bisa berpindah dari satu lingkungan operasi ke lingkungan operasi yang lain. Sejauh ini, program yang paling saya sukai untuk emulasi x86 adalah QEMU. Saya ingin mencoba menulis sedikit pengalaman dan pemikiran mengenai software ini.
Memasang dan membangun QEMU di Linux
QEMU adalah sebuah suite emulasi (yang cepat!) yang ditulis oleh Fabrice Bellard (tersedia di http://fabrice.bellard.free.fr/qemu/). QEMU berisi program-program untuk mengemulasi sejumlah platform, termasuk x86, SPARC, dan PowerPC. Software ini juga mampu menjalankan program stand-alone dari berbagai platform (seperti WINE menjalankan Microsoft Windows di bawah X Window).
Kompilasi QEMU dari source membutuhkan sejumlah pustaka dan paket-paket tambahan. Pada tiga sistem operasi dimana saya mencoba menjalankan QEMU, dua diantaranya (NetBSD dan Windows) gagal saat mengkompilasi dari source, sehingga saya harus menggunakan pkg_add atau instaler binary yang disediakan.
Sebelum rilis QEMU 0.7.0, Fabrice Bellard menulis dan merilis module closed-source kqemu untuk kernel Linux, yang membutuhkan kompilasi modul dan program QEMU dari source untuk menginstalnya. Diperkirakan bahwa tanpa modul ini, QEMU bekerja pada rasio 5:1 atau 10:1 (dibutuhkan lima atau sepuluh instruksi native untuk menjalankan satu instruksi teremulasi), dimana dengan modul ini, rasio tersebut bisa mencapai 2:1. Peningkatan performa ini hanya bisa kita dapatkan dengan melakukan kompilasi dari source. (Versi eksperimental modul kqemu tersedia untuk FreeBSD dan Windows, namun pada artikel ini, saya akan memfokuskan pembahasan pada Linux.)
Mengkompilasi program ini dari source bisa dilakukan dengan mudah, walaupun sedikit lebih kompleks daripada kompilasi yang biasa kita lakukan, ./configure && make && make install. Penjelasan di bawah ini didasarkan pada pengalaman saya menggunakan Debian. Jika Anda menggunakan distribusi lain, akan ada sedikit perbedaan, namun ide dasarnya tetaplah sama. Kompilasi kqemu juga akan berbeda jika Anda menggunakan kernel 2.6, sedangkan saya menggunakan kernel 2.4. Perbedaan ini dijelaskan pada halaman dokumentasi kqemu, http://fabrice.bellard.free.fr/qemu/kqemu-doc.html.
Pertama, saya menjalankan sudo apt-get install qemu untuk membangun infrastruktur yang dibutuhkan (terutama paket program bochsbios dan pustaka SDL yang belum terinstal). Setelah itu, dengan menggunakan apt-get, saya menginstal paket libsdl-dev serta kernel-source. Halaman instruksi kqemu menerangkan langkah demi langkah dalam mengkonfigurasi kode sumber kernel agar dapat bekerja dengan kqemu. Namun pada sistem saya, kernel Linux yang saya kompilasi sendiri selalu gagal untuk melakukan boot. Mungkin saya melakukan hal yang salah. Untungnya kita tidak perlu menginstal kernel yang baru. Yang saya lakukan hanyalah mengekstrak source kernel Linux sesuai versi yang kita gunakan, dan kemudian membuat symbolic link menuju /usr/src/linux.
Hal berikutnya lebih mudah. Ambil file source QEMU dan kqemu, ekstrak file source QEMU, kemudian masuklah ke direktori hasil ekstrak tersebut. Ekstraklah source kqemu di dalam direktori tersebut. Kemudian lakukan ritual ./configure && make && sudo make install untuk membangun dan menginstalnya.
Seorang ahli Linux tahu bagaimana membuat link dan script yang benar di /etc/init.d/. Namun saya tidak ingin melakukannya. Saya cukup menjalankan sudo insmod kqemu sebelum menjalankan QEMU.
Melakukan pengaturan dan menggunakan lingkungan QEMU
Setelah QEMU terinstal dengan benar, sekarang waktunya untuk menjalankannya. Saya memiliki primary HD pada satu kontroler IDE, sedangkan kontroler IDE satunya berisi DVD dan hardisk kedua. Konfigurasi ini berguna untuk meningkatkan performa karena mengurangi waktu pencarian pada head harddisk. Saya menyalin ISO image ke dalam sebuah direktori pada harddisk kedua, dan membuat harddisk image pada harddisk pertama. Hal ini akan meningkatkan performa QEMU dengan menggunakan file ISO sebagai virtual CD (di samping juga tambahan performa dari penggunaan harddisk untuk menggantikan drive CDROM). Dari direktori home, saya membuat sebuah direktori QEMU, dan beberapa direktori yang terpisah untuk setiap mesin virtual, walaupun anda bisa saja menyimpan beberapa harddisk image dengan nama yang berbeda pada satu direktori.
Seperti halnya Bochs, QEMU menyediakan program pembuatan harddisk. Namun menggunakan harddisk image dengan QEMU lebih mudah daripada dengan Bochs. Dengan Bochs, anda harus mencatat sector, head, dan sector per track pada setiap harddisk image (dan kemudian menyimpan informasi ini pada file ~/.boschrc). Dengan QEMU, kompleksitasnya berada pada format image yang didukung (yaitu vvfat, vpc, bochs, dmg, cloop, vmdk, qcow, cow, dan raw). Saya lebih sering mengabaikannya, dan menggunakan format default yaitu raw.
Terdapat beberapa front-end untuk QEMU, namun menurut saya yang paling mudah adalah dengan menulis sendiri parameter-parameter perintah, tanpa harus menggunakan front-end. Sebab hanya ada beberapa parameter yang mungkin harus kita sesuaikan :
- Device virtual dari mana anda melakukan boot. (Saat anda menginstal sebuah sistem operasi, anda akan memilih untuk boot melalui CD, dan kemudian keluar dari QEMU setelah sistem operasi tersebut terinstal, dan kemudian memilih untuk boot melalui harddisk.)
- Nama dan lokasi dari virtual CD (atau mungkin anda tidak mempergunakan virtual CD sama sekali).
- Jumlah RAM yang anda berikan untuk mesin virtual. (Settingan default sebesar 128 MB biasanya sudah mencukupi, namun anda mungkin ingin melakukan pengaturan sendiri, atau anda mungkin ingin sedikit menghemat memori.)
Setelah sistem operasi anda terinstal pada harddisk image, dan anda telah selesai melakukan pengaturan, mungkin anda ingin membuat shell script sederhana untuk menjalankan QEMU dengan perintah yang sesuai dengan keinginan anda.
Saya telah mencoba menginstal Windows XP, FreeDOS, FreeBSD, dan NetBSD pada QEMU. Saya telah mencoba Windows 2000, namun instalasinya macet dan saya pun menyerah. Satu hal yang masih belum berhasil adalah pengaturan jaringan. Jika saya menggunakan device default /dev/net/tun, DHCP akan hang hingga saya menekan tombol Ctrl-C. Jika saya menggunakan opsi unprivileged -user-net, DHCP “bekerja”, namun jaringan komputer tidak bisa diakses. Trik yang saya lakukan untuk mengatasi permasalahan ini adalah dengan menggunakan mkisofs untuk membuat ISO image untuk file-file yang ingin diimpor ke mesin virtual, dan mengaksesnya sebagai CD-ROM virtual. Saya juga mengalami permasalahan pada fokus layar (QEMU mengambil fokus pada mode window, setelah saya menekan Ctrl-Alt untuk melepaskan kursor).
Pengalaman saya dalam melakukan back-up dan sharing virtual harddisk kurang menyenangkan. Setelah melakukan unzip sebuah harddisk image, Windows XP menampilkan pesan kesalahan mengenai adanya kerusakan data. Namun saya bisa dengan lancar menjalankan image NetBSD. Saya belum mencoba apakah dengan menggunakan format selain format raw bisa mengatasi hal tersebut.
Satu hal yang perlu dicatat adalah saat menggunakan floppy image, lebih baik anda melakukan dd image ke file lain dari dalam mesin virtual. Sebagai contoh, jika anda ingin melakukan boot dari file big.fs, anda menyalin file tersebut ke virtual harddisk, boot virtual harddisk dengan file lain sebagai drive floppy (misalnya dengan menambahkan -fda 2.fs pada baris perintah), dan kemudian menjalankan perintah seperti dd if=bif.fs of=/dev/fd0 bs=512 di dalam emulator, lalu melakukan reboot. Sekarang file 2.fs memiliki isi yang sama dengan big.fs.
Penutup
Sebagai penutup, menurut saya QEMU adalah program yang hebat, dan sangat penting bagi mereka yang ingin menggunakan lingkungan virtual untuk tujuan apapun. QEMU bisa bekerja dengan baik dengan CLI maupun window manager yang ringan, namun saya tidak merekomendasikannya kepada mereka yang ingin menggunakan lingkungan GUI yang intensif seperti Windows XP atau GNOME/KDE secara rutin. Dibandingkan dengan Bochs, QEMU jauh lebih cepat, namun antarmukanya lebih sederhana, baik di sisi command line maupun saat anda ingin melepaskan suatu device saat program masih berjalan. (Dengan QEMU, anda cukup menekan Ctrl-Alt-2, dan menggunakan perintah eject dan change.)
Jika dibandingkan dengan VMWare, menurut saya QEMU — dengan menggunakan modul kqemu — bisa mendekati performa VMWare. Namun QEMU masih kurang dalam hal fleksibilitas pengaturan memori yang diberikan kepada mesin virtual. Dengan VMWare, kita bisa menukar sebagian dari RAM mesin virtual ke harddisk, sedangkan QEMU hanya bisa menggunakan memori dengan ukuran yang telah dialokasikan ke /dev/shm. QEMU saat ini tidak dilengkapi dengan antarmuka GUI, namun anda memang tidak terlalu membutuhkannya karena kemampuan QEMU menggunakan kombinasi tombol (Ctrl-Alt-f) untuk berpindah dari mode full-screen ke mode window, dan perintah-perintah konsol internal QEMU yang simpel, sudah cukup untuk anda gunakan.
shandi responded on 28 Feb 2010 at 9:17 am #
gan…bagi infonya ya……thanx…..
jey responded on 25 Mei 2010 at 12:55 pm #
friend, thanks infonya…..
sy mo tanya nich… laptop saya processornya dual core n sudah terinstal xp sp2, klo saya pengen linux n qemu, yg harus saya instal qemu dulu pa linuxnya dulu….?
satu lagi tolong bagi info ttg qemu lengkap + cara instalnya dlm bahasa indo…
thanks y freinds ats bantuannnya…