Episode ini memandu menjalankan Windows di Cloud Hypervisor: boot Windows 10/Server via UEFI (CLOUDHV.fd), install virtio drivers, perbedaan edk2 upstream vs fork CLOUDHV khusus AArch64, serta best practice agar Windows stabil di atas perangkat virtio.

Sejauh ini semua guest kita berbasis Linux. Di episode 15 kita menantang asumsi itu dan menjalankan Windows — Windows 10 atau Windows Server — di atas Cloud Hypervisor. Ini mungkin terdengar aneh untuk VMM "cloud-native", tapi Cloud Hypervisor memang dirancang untuk mendukung guest Windows penuh, dan banyak platform PaaS modern menjalankan workload Windows dengan isolasi VM.
Tantangan utamanya jelas: Windows butuh UEFI yang benar, driver untuk perangkat virtio, dan kebiasaan-kebiasaan Windows yang tidak kenal kompromi (licensing, activation, timers). Kita bahas semuanya langkah demi langkah.
Linux bisa di-boot langsung dengan PVH (episode 4) tanpa firmware. Windows tidak bisa. Windows mengharuskan firmware UEFI (atau BIOS, yang lebih rumit lagi di Cloud Hypervisor) untuk menemukan boot loader-nya di ESP (EFI System Partition). Karena itu, Windows di Cloud Hypervisor selalu memakai CLOUDHV.fd:
cloud-hypervisor \
--firmware CLOUDHV.fd \
--disk path=windows.raw \
--cpus boot=4 \
--memory size=8G \
--serial tty \
--console offTidak ada --kernel di sini: CLOUDHV.fd (UEFI berbasis edk2) membaca ESP, menjalankan Windows Boot Manager, lalu memuat kernel Windows. --console off --serial tty mengalihkan console sehingga output boot Windows terlihat di terminal.
Windows lebih pemilih soal "hardware". Setidaknya siapkan:
Unduh ISO Windows (versi evaluasi bisa diambil dari Microsoft) lalu sajikan sebagai CD-ROM virtio:
qemu-img create -f raw windows.raw 40G
cloud-hypervisor \
--firmware CLOUDHV.fd \
--disk path=windows.raw \
--disk path=Win10_22H2.iso,readonly=on \
--cpus boot=4 \
--memory size=8G \
--serial ttyMasalah terbesar saat instalasi: Windows tidak mengenal virtio-blk/virtio-net. Selama setup, Windows tidak akan melihat disk virtio karena tidak ada driver. Solusinya menyediakan driver di media lain:
cloud-hypervisor \
--firmware CLOUDHV.fd \
--disk path=windows.raw \
--disk path=Win10_22H2.iso,readonly=on \
--disk path=virtio-win.iso,readonly=on \
--cpus boot=4 \
--memory size=8G \
--serial ttySaat setup menolak menemukan disk, pilih "Load driver" dan arahkan ke CD-ROM virtio-win — pilih driver viostor (storage) dan NetKVM (network). Driver virtio untuk Windows resmi disediakan di repositori virtio-win (di-maintain komunitas, termasuk driver untuk Cloud Hypervisor).
Important
Driver virtio Windows adalah kunci segalanya: tanpa viostor, Windows tidak bisa boot dari disk virtio; tanpa NetKVM, tidak ada NIC. Urutan yang benar: boot installer → load storage driver → install ke disk virtio → setelah masuk Windows, install driver lain (net, fs, balloon).
Licensing Windows bukan masalah teknis VMM, tapi tetap relevan: pastikan kalian memakai lisensi yang valid untuk VM. Windows Server modern diinstalasi tanpa aktivasi bisa dipakai dengan masa evaluasi, dan aktivasi dilakukan lewat cara standar Microsoft (KMS atau digital license) — Cloud Hypervisor tidak menyediakan mekanisme khusus di sini.
CLOUDHV.fd adalah build edk2 yang di-fork khusus untuk Cloud Hypervisor. Mengapa tidak memakai edk2 upstream langsung? Karena Cloud Hypervisor menyediakan antarmuka firmware tertentu (misal device layout MMIO yang konsisten dengan VMM-nya), dan fork ini memastikan firmware dioptimalkan untuk konteks itu — ukuran lebih kecil, boot lebih cepat, dan dukungan device yang relevan.
Perbedaan paling mencolok ada di AArch64. Di arsitektur ini, edk2 upstream tidak memberikan console output dan device setup yang cocok dengan konvensi Cloud Hypervisor tanpa penyesuaian. Fork CLOUDHV menambahkan dukungan yang dibutuhkan (misal serial UART yang benar, device tree, dan dukungan virtio untuk boot Arm guest seperti Windows on Arm atau Linux). Ini alasan mengapa dokumentasi resmi menyarankan CLOUDHV_EFI.fd untuk aarch64:
cloud-hypervisor \
--firmware CLOUDHV_EFI.fd \
--disk path=windows-arm.raw \
--cpus boot=4 \
--memory size=8G \
--serial ttyJika kalian mencoba edk2 upstream di AArch64 dan gagal menampilkan output, kemungkinan besar inilah alasannya — gunakan fork yang di-maintain Cloud Hypervisor.
hotplug_size untuk pertumbuhan.viostor dari virtio-win.CLOUDHV.fd boot dari disk pertama secara default.NetKVM; verifikasi di Device Manager.CLOUDHV_EFI.fd), bukan edk2 upstream.Tip
Untuk lab, jalankan Windows dengan config JSON (episode 5) yang menyimpan semua opsi — ISO, disk driver, memory. Menyalin config ini membuat setup reproducible, dan mudah diadaptasi saat kalian beralih ke templat production.
Inti yang harus dibawa pulang:
--firmware CLOUDHV.fd, tanpa direct boot PVH.CLOUDHV.fd adalah fork edk2 khusus Cloud Hypervisor; di AArch64 gunakan CLOUDHV_EFI.fd.Di episode 16 selanjutnya kita akan membahas testing & CI — cargo test, integration tests (integration.rs), CI yang berjalan terhadap kernel 5.15, serta benchmark boot time, memory overhead, dan throughput dibanding QEMU. Cara proyek ini menjaga kualitas, dan cara kalian mengujinya sendiri.