QEMU Tanpa Monitor (Headless)

30 Mar 2011

Dalam tulisan saya sebelumnya mengenai QEMU, saya telah menuliskan bagaimana menjalankan QEMU tanpa menggunakan output monitor untuk mesin virtual kita. Jika sebelumnya saya menulis tentang fitur VNC di QEMU, maka saat ini saya akan membahas bagaimana menjalankan QEMU tanpa monitor dan tanpa VNC. Untuk tujuan itu saya menggunakan fasilitas konsol serial yang sudah ada pada hampir semua sistem operasi termasuk linux (Slackware). Dalam tulisan ini saya tidak akan membahas pengarahan ke konsol serial untuk sistem operasi dari keluarga MS Windows atau BSD. Saya akan menggunakan sistem operasi kesayangan saya, Slackware Linux. Apa keuntungan dari konsol serial? Kan sudah ada jaringan internet, jadi bisa menggunakan SSH atau VNC? 

Konsol serial adalah 'barang lama' yang masih ampuh hingga sekarang. Prinsipnya sederhana saja yaitu mengarahkan semua input/output dari konsol biasa (Video Monitor, Keyboard, Mouse) ke sebuah perangkat serial sehingga dapat diakses menggunakan perangkat terminal eksternal baik berupa perangkat keras ataupun perangkat lunak. Kenapa harus menggunakan konsol serial? Apakah koneksi internet masih tidak memadai? Baik, ini adalah sebuah pertanyaan klasik. Tapi begini, mari kita bayangkan bahwa mesin kita adalah sebuah mesin kontrol yang tidak terhubung ke internet dan karena keterbatasan sumber daya energi, maka semua input/output standar tidak kita tancapkan pada mesin kita. Atau misalkan mesin kita tersebut karena suatu alasan keamanan tertentu tidak boleh berhubungan dengan internet dan tetapi harus dapat dikontrol secara berkala secara remote alias kita tidak boleh mendekat pada mesin tersebut. Tentunya masih ada perangkat-perangkat penyambung yaitu berupa kabel input/output yang sering ditancapkan pada terminal serial pada mesin tersebut. Atau dalam kasus saya saat menggunakan QEMU, saya tidak ingin QEMU membuka sebuah terminal lagi di desktop dan saya ingin agar setelah saya mengeksekusi QEMU, sistem operasi yang saya jalankan langsung tampak pada layar terminal yang sedang saya gunakan. Hemat jendela dan pastinya sumber daya . Jika alasan-alasan tersebut masih belum mencukupi, biarkan saya merenung beberapa hari/minggu untuk mengarang alasan yang lain .

Lanjut ke QEMU dulu. Nah agar QEMU tidak memunculkan terminal baru, kita dapat memaksa QEMU untuk berjalan tanpa kepala (headless/tanpa monitor) dengan menambahkan opsi -nographic. Secara default QEMU akan membuka port serial pertama atau di ttyS0 yang dapat kita manfaatkan dengan mengkonfigurasi OS Guest QEMU (Host OS tidak perlu diutak atik):

Pertama, konfigurasi LILO agar mengarahkan input/output boot loader ke konsol serial:

boot = /dev/sda
lba32
# Buat LILO membuka kanal konsol serial
serial = 0,57600n8

Kedua, konfigurasi kernel yang akan di-boot agar mengarahkan input/output-nya ke konsol serial:

image = /boot/vmlinuz
initrd = /boot/initrd
# Buat supaya kernel membuka kanal konsol serial
append=" console=tty0 console=ttyS0,57600n8"

ketiga, konfigurasi inittab agar membuka kanal konsol serial setelah sistem operasi selesai boot dan masuk ke init:

# Local serial lines:
s1:12345:respawn:/sbin/agetty -L ttyS0 57600 vt100

Setelah itu tinggal boot Guest OS-nya di QEMU dengan menambahkan opsi -nographic dan wallaaaaaaaaaaaa:

qemu_serial_01.png

LILO Boot on QEMU Serial Console

qemu_serial_02.png

Slackware kernel boot progress on QEMU serial console.

qemu_serial_03.png

Slackware console login screen on QEMU serial console.

qemu_serial_04.png

Slackware shutdown progress on QEMU serial console.

Meskipun berjalan dalam kondisi tanpa monitor, QEMU Monitor sendiri masih dapat diakses dengan menggunakan kombinasi tombol CTRL+a+c. QEMU Monitor akan menggunakan terminal yang sama dengan Guest OS jadi terkadang sedikit membingungkan jika tidak terbiasa.

Untuk informasi yang lebih lengkap mengenai konsol serial di linux silakan lihat di sini:

http://tldp.org/HOWTO/Remote-Serial-Console-HOWTO/index.html

Selamat mencoba.