5 poin oleh GN⁺ 2024-01-31 | 1 komentar | Bagikan ke WhatsApp
  • Quickemu adalah wrapper untuk QEMU yang secara otomatis menangani konfigurasi yang diperlukan untuk membuat mesin virtual, sehingga Anda cukup memilih sistem operasi yang ingin dijalankan untuk dengan cepat membuat dan menjalankan VM Windows, macOS, dan Linux
  • quickget secara otomatis mengunduh image OS upstream dari sistem operasi yang diinginkan dan membuat file konfigurasi VM, sementara quickemu mendeteksi perangkat keras dan menjalankan VM dengan konfigurasi yang sesuai untuk komputer tersebut
  • Tujuan awalnya adalah agar distribusi Linux dapat diuji dengan cepat, dan VM beserta konfigurasinya dapat ditempatkan di lokasi mana pun seperti penyimpanan USB eksternal atau direktori home, tanpa memerlukan hak akses istimewa untuk menjalankannya
  • Saat ini mendukung hampir 1000 edisi sistem operasi termasuk macOS, Windows, sebagian besar BSD, FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS, dan lainnya
  • Berjalan di host Linux dan macOS serta menyediakan fitur yang dibutuhkan untuk penggunaan VM seperti SPICE, berbagi file, QEMU Guest Agent, VirGL, USB passthrough, port forwarding, audio, boot EFI dan Legacy BIOS, dan lainnya

Apa yang dilakukan Quickemu

  • Quickemu adalah wrapper yang membungkus QEMU dan secara otomatis menangani konfigurasi yang diperlukan saat membuat mesin virtual
  • Pengguna hanya perlu memilih sistem operasi yang ingin dijalankan, tanpa harus menentukan banyak opsi konfigurasi secara manual
  • Ada dua alat inti
    • quickget: secara otomatis mengunduh OS upstream yang diinginkan dan membuat file konfigurasi VM
    • quickemu: menginventarisasi perangkat keras host lalu menjalankan mesin virtual dengan konfigurasi optimal yang sesuai untuk komputer tersebut

Titik awal proyek dan cakupan saat ini

  • Tujuan awalnya adalah memungkinkan pengujian distribusi Linux dilakukan dengan cepat
  • VM dan konfigurasi dapat disimpan di lokasi mana pun seperti penyimpanan USB eksternal atau direktori home
  • Menjalankan mesin virtual tidak memerlukan hak akses istimewa
  • Saat ini cakupan dukungannya telah melampaui distribusi Linux ke macOS, Windows, sebagian besar BSD, dan sistem operasi non-Linux
    • Contoh yang didukung antara lain FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS

Sistem operasi dan host yang didukung

  • Host yang didukung adalah Linux dan macOS
  • Sistem operasi guest mencakup berikut ini
    • macOS Sequoia, Sonoma, Ventura, Monterey, Big Sur, Catalina, Mojave
    • Windows 10 dan 11, termasuk TPM 2.0
    • Windows Server 2022, 2019, 2016
    • Ubuntu dan semua Ubuntu flavour resmi
    • Sebagian besar BSD dan berbagai sistem operasi non-Linux
  • Mendukung guest ARM64 untuk menjalankan VM aarch64
    • Pada host ARM, berjalan secara native
    • Pada host x86_64, berjalan melalui emulasi
  • Jumlah edisi sistem operasi yang didukung mencapai hampir 1000

Fitur VM

  • Menyediakan dukungan penuh SPICE, termasuk berbagi clipboard host/guest
  • Mendukung berbagai metode berbagi file tergantung sistem operasi guest
    • VirtIO-webdavd: berbagi file untuk guest Linux dan Windows
    • VirtIO-9p: berbagi file untuk guest Linux dan macOS
    • Samba: berbagi file untuk guest Linux, macOS, dan Windows, dan mengharuskan smbd terpasang di host
  • Mendukung QEMU Guest Agent, sehingga agen tingkat sistem dapat diakses melalui perintah QMP standar
  • Untuk grafis dan perangkat, mendukung akselerasi VirGL, USB device passthrough, dan smartcard passthrough
  • Fitur jaringan dan I/O juga disertakan
    • Port forwarding SSH otomatis ke guest
    • Network port forwarding
    • Audio full-duplex
    • Dukungan braille
    • Boot EFI dengan atau tanpa SecureBoot
    • Boot Legacy BIOS

Alur mulai cepat

  • Setelah menginstal Quickemu, VM dibuat dan dijalankan dalam dua langkah
  • Gunakan quickget untuk mengunduh image ISO dan membuat file konfigurasi VM
quickget nixos unstable minimal
  • Gunakan quickemu untuk memulai VM dengan file konfigurasi yang dibuat quickget
quickemu --vm nixos-unstable-minimal.conf
  • Menjalankan quickget tanpa argumen akan menampilkan daftar semua sistem operasi yang didukung

Dokumentasi dan referensi

1 komentar

 
GN⁺ 2024-01-31
Komentar Hacker News
  • Merekomendasikan https://virt-manager.org/. Di lingkungan saya ini berjalan jauh lebih baik, dan juga mendukung menjalankan QEMU di sistem jarak jauh lewat SSH
    Dulu saya selalu memakainya saat sering mengelola host VM yang berbeda-beda dan VM lokal
    • virt-manager adalah salah satu software yang paling diremehkan. Sangat kuat dan sering terpakai
      Memang perlu sedikit memahami istilah dasar tentang VM, tetapi ini mengingatkan pada GUI gaya lama yang padat fitur dan bertenaga
      Jika kebutuhan Anda sederhana atau Anda kurang akrab dengan VM, Gnome Boxes memakai backend yang sama tetapi menawarkan GUI yang rapi. Karena lebih sederhana, fleksibilitasnya juga lebih sedikit, tetapi bagusnya jika nanti perlu mengubah pengaturan yang tidak diekspos di Boxes, Anda bisa membuka VM Gnome Boxes itu di virt-manager
    • Tidak persis sama, tetapi Quickemu juga bekerja baik lewat SSH
      Jika dijalankan di sistem jarak jauh lewat SSH, ia akan “meneruskan X” konsol QEMU ke sesi Wayland lokal Fedora
      Awalnya saya kira akan berjalan dalam mode headless, jadi cukup terkejut saat jendelanya muncul :)
    • Menarik bahwa program yang hanya melakukan konfigurasi bisa sedemikian penting dan berguna
      Ini membuat saya membayangkan bagaimana jika konfigurasi dipisahkan dari software yang dikonfigurasi. Alih-alih mempelajari cara tiap program UI menciptakan ulang rodanya sendiri, kita bisa memilih manajer konfigurasi favorit untuk dipakai
      Hal terdekat saat ini adalah file konfigurasi teks. Semua program yang memakainya harus memilih bahasa tertentu dan lokasi penyimpanan tertentu
      Ide yang belakangan sering saya pikirkan adalah lapisan perantara konfigurasi. UI konfigurasi yang terlihat oleh pengguna bisa memakai bahasa/format apa pun yang diinginkan, lalu data itu dijadikan satu-satunya sumber kebenaran untuk menghasilkan file konfigurasi yang dibaca software
    • libvirt dan virt-manager hanyalah antarmuka pengguna yang disederhanakan untuk software sebenarnya, yaitu QEMU dan KVM. Mereka menyelesaikan masalah yang relatif sepele seperti mengurai file konfigurasi dan meneruskan opsi yang benar ke biner QEMU
      Memang ada juga fitur manajemen yang berguna seperti start/stop berbasis file konfigurasi atau akses konsol serial, tetapi hal seperti itu juga sangat mudah diimplementasikan sendiri dengan shell script. Penanganan storage di libvirt sangat bertele-tele dan rumit, tetapi tetap tidak bisa menangani thin LV atau ZFS dengan baik
      Jika Anda tidak harus menjalankannya dengan cara standar ala enterprise, tidak berniat mempelajari software dasar seperti QEMU atau shell, atau memang tidak butuh fitur-fitur samar milik libvirt, saya sarankan memakai QEMU langsung di atas KVM dan menulis skrip sendiri. Anda akan belajar lebih banyak tentang QEMU dibanding memakai wrapper Python yang kurang bagus, dan kontrol atas sistem juga lebih besar
      Selain itu, IBM/Red Hat tampaknya pada dasarnya telah menelantarkan virt-manager sambil mendorongnya ke antarmuka web baru bernama Copilot
      Quickemu terasa lebih menarik karena Anda bisa langsung menyalakan VM baru setelah sekilas melihat contoh, tanpa menghabiskan waktu mempelajari UI besar yang rumit
    • Saya suka pendekatan yang memungkinkan opsi command line diteruskan langsung ke QEMU. Ini cocok untuk OS lama seperti Windows NT on MIPS atau Ultrix
  • Saya ingin mengulang kembali catatan keamanan dari saat ini terakhir diposting[1]
    Alat ini mengunduh file arbitrer dari internet, lalu mencocokkan checksum-nya dengan file arbitrer lain di internet[2]
    Ini bukan praktik keamanan terbaik. Cara yang benar adalah meng-commit kunci GPG pengembang distro ke dalam repositori lalu memverifikasi semua file dengan kunci tersebut
    Meski begitu, ini bukan upaya untuk meremehkan kerja proyek ini dalam menemukan flag yang benar untuk diberikan ke QEMU agar bisa mem-boot berbagai OS
    [1] https://news.ycombinator.com/item?id=28797129
    [2] https://github.com/quickemu-project/quickemu/blob/0c8e1a5205...
    • Bisa dijelaskan kenapa ini jadi masalah keamanan? Verifikasi kunci GPG memang cara terbaik untuk menjamin keaslian, tetapi ini pada dasarnya tidak berbeda dari yang hampir semua orang lakukan: mengunduh ISO dari situs HTTPS distro itu sendiri
      Bahkan ini menambahkan pemeriksaan kecocokan hash yang kebanyakan orang juga tidak lakukan
    • Seberapa usang praktik ini? Bukankah TCP/TLS seharusnya sudah menangani checksum dan tanda tangan asal?
      Pada era FTP, checksum dan GPG itu wajib. Dengan HTTP/TCP, penanganan retry dan checksum dilakukan oleh TCP, jadi kebutuhan GPG justru lebih besar, tetapi keduanya tetap diperlukan karena serangan man-in-the-middle
      Namun kalau HTTPS, kenapa ini masih penting? Bukankah HTTPS menggantikan kedua verifikasi itu sekaligus pengecekan tanda tangan
    • Selain itu, penulisnya memasukkan kata sandi pengguna dengan keyboard mekanis saat mikrofonnya menyala dalam siaran langsung
    • Ini tampaknya bukan mengunduh “file arbitrer dari internet”, melainkan hanya memakai sumber asli
    • Sebagai catatan, macOS sekarang melakukan verifikasi tanda tangan. Di Windows tidak ada tanda tangan yang bisa digunakan
      Semoga perhatian Hacker News tahun ini mendorong seseorang untuk mengimplementasikan verifikasi tanda tangan untuk Linux
  • Di macOS, UTM[0] melakukan ini dengan cukup baik. Ada juga galeri kecil berisi image yang sudah disiapkan[1]
    0. https://mac.getutm.app/
    1. https://mac.getutm.app/gallery/
  • libvirt menyertakan virt-install, jadi Anda bisa dengan cepat membuat dan memasang otomatis Windows serta berbagai distro Linux. Belum pernah mencobanya di Mac
    Contoh Alma Linux terbaru seperti berikut
    $ virt-install --name alma9 --memory 1536 --vcpus 1 --disk path=$PWD/alma9.img,size=20 --cdrom alma9.iso --unattended

Kalau ditinggal minum secangkir kopi, saat kembali VM Alma Linux sudah selesai terpasang dan berjalan. Daftar OS yang didukung bergantung pada versi libvirt, dan bisa dicek dengan berikut
$ osinfo-query os

  • Jika membutuhkan image disk Fedora 39, ada juga virt-builder
    $ virt-builder fedora-39
    Nanti bisa diimpor ke libvirt dengan virt-install --import

  • Apakah virt-install mengunduh ISO secara otomatis? Jika dicoba, muncul pesan seperti ini
    $ virt-install --name alma9 --memory 1536 --vcpus 1 --disk path=$PWD/alma9.img,size=20 --cdrom alma9.iso --unattended
    ERROR Validating install media 'alma9.iso' failed: Must specify storage creation parameters for non-existent path '/home/foo/alma9.iso'.

  • Tidak jelas seperti apa hasil akhirnya. Saya penasaran hostname-nya akan jadi apa, bagaimana disk dipartisi, paket apa yang dipasang, serta timezone dan layout keyboard akan diatur menjadi apa

  • Untuk melakukan ini, saya harus memasang libosinfo-bin

  • Kemudahan alat seperti ini memang luar biasa, tetapi jika dua skrip utamanya digabung, totalnya sekitar 5000 baris Bash
    Saya ingin meninjaunya sebelum menjalankan, tetapi saya juga tidak ingin membaca 5000 baris Bash

    • Saya umumnya setuju bahwa skrip shell biasanya tidak menyenangkan untuk dibaca, tetapi kode ini sebenarnya tidak buruk
      Entah ini akan meyakinkan atau tidak, tetapi saya membaca skrip Bash-nya sebelum menjalankannya dan strukturnya cukup baik. Fungsinya dipisahkan dengan rapi, nama variabelnya masuk akal, ada komentar yang berguna, tidak ada alur kontrol aneh atau pemanggilan tidak langsung, dan penggunaan perintah yang sulit dipahami juga minim. Ini termasuk salah satu skrip shell yang paling mudah dibaca yang pernah saya lihat
      Jika memikirkan apa yang sebenarnya dilakukan skrip ini, masuk akal juga kalau kodenya relatif lurus. Intinya hanya menjalankan satu perintah untuk memulai QEMU. Sisanya adalah kode untuk memeriksa sistem lokal guna menentukan argumen apa yang harus diberikan ke perintah itu, atau mengunduh beberapa file bila perlu
    • Apakah ada alasan memperlakukan skrip shell berbeda dari perangkat lunak lain hanya karena ini skrip shell? Apakah Anda membaca source kernel sebelum menjalankan OS? Bagaimana dengan browser web?
      Ini bukan berarti semuanya harus dijalankan secara membabi buta, tetapi kriteria kita saat memilih perangkat lunak untuk dijalankan biasanya tidak bergantung pada apakah kita akrab dengan source code-nya
    • Jika benar-benar khawatir dan punya waktu, meski mungkin akan dicemooh, Anda juga bisa mencoba berdiskusi soal kodenya dengan ChatGPT. Prompt-nya bisa seperti ini
      “You are a linux guru, and you have extensive experience with bash and all forms of unix/linux. I am going to be pasting a large amount of code in a little bit at a time. Every time I paste code and send it to you, you are going to add it to the previous code and ask me if I am done. When I am done we are going to talk about the code, and you are going to help me break it down and understand what is going on. If you understand you will ask me to start sending code, otherwise ask me any questions before you ask for the code.”
      Saya pernah memakai cara ini untuk kode yang lebih pendek, meski tetap kurang dari 1000 baris yang melampaui batas prompt, dan hasilnya cukup baik. Saya akui ChatGPT akhir-akhir ini jadi lebih malas, dan kadang perlu ditegaskan agar jangan malas dan berikan seluruh output yang diminta, tetapi secara keseluruhan penjelasan kodenya cukup bagus
    • Saya melihat ini sebagai masalah membangun kepercayaan pada perangkat lunak secara umum. Bagaimana kepercayaan dibangun, serta ekspektasi dan tanggung jawab apa yang ada pada pengembang dan pengguna
      Ungkapan “banyak mata membuat semua bug menjadi dangkal” tampak seperti klise yang membuat sebagian pengguna berhenti berpikir. Karena terbuka dan bisa ditinjau, mereka menganggap semuanya aman, lalu membayangkan ada gerombolan auditor kode yang memeriksa semuanya, padahal dalam kenyataannya saya justru lebih mengharapkan niat jahat daripada niat baik
      Di dunia Windows, utilitas tweak sudah ada secara konsisten selama puluhan tahun. Ini menarik orang-orang yang percaya bahwa pengembang “perusahaan besar” tidak termotivasi untuk memaksimalkan performa sistem, dan bahwa mereka sengaja menyisakan opsi mudah yang berguna untuk semua orang di balik pengaturan cepat atau tweak registry. Saya jadi teringat TronScript yang kadang terlihat; melihat sejarah dan tingkat partisipasinya, saya cenderung menilai lolos uji bau, tetapi tetap menyembunyikan detail atas nama otomatisasi dan membuat pengguna berharap alat itu akan mengambil keputusan yang baik untuk mereka. Orang bisa saja menggali lebih dalam, menyelidiki apa yang terjadi dan kenapa, lalu belajar darinya, tetapi bagi banyak orang alat seperti ini pada praktiknya tidak beda jauh dari binary
      Untungnya, sebagian besar alat seperti ini punya basis pengguna yang terbatas sehingga nilainya tidak terlalu besar untuk disusupi. Kalau sebuah merek tertentu dipakai cukup luas, bisa muncul situasi seperti CCleaner milik Piriform yang disusupi backdoor pada 2017
  • Kelihatannya menarik, tetapi bisakah dijelaskan keuntungan apa yang didapat oleh orang yang di Ubuntu kadang hanya menjalankan Windows 11 lewat VirtualBox?

    • Sulit dijawab karena sangat bergantung pada apa yang dilakukan dengan VM. Ini tampak seperti wrapper QEMU, alat yang mencoba memilih pengaturan yang masuk akal agar VM baru bisa dijalankan dengan mudah
    • Ada aspek akselerasi GPU khususnya. Menjalankan konferensi video di Windows dalam vbox hampir mustahil, dan bahkan aplikasi GUI yang sedikit lebih kompleks pun terasa cukup lag
    • Ini tampaknya lebih dekat ke alternatif Gnome Boxes. Sebuah alat yang mengunduh image terbaru dan menyediakan pengaturan default yang sesuai untuk distro/OS tersebut, sekaligus memberi dukungan tambahan untuk OS yang rumit seperti Windows dan macOS
    • Kalau benar-benar menjalankan macOS, ini adalah keunggulan besar dibanding memasangnya di VirtualBox atau VMware. Di sana Anda harus menambal berbagai hal sehingga sangat sulit untuk bisa berjalan
  • Di Linux saya sangat merekomendasikan Incus/LXD. Menjalankan VM sesederhana ini

    incus launch images:ubuntu/22.04 --vm my-ubuntu-vm  
    

    Setelah berjalan, akses shell bisa dilakukan seperti ini

    incus exec my-ubuntu-vm /bin/bash  
    

    Incus/LXD juga mendukung container sistem

  • Ada systemd-nspawn yang saya suka tetapi hampir tidak pernah disebut. Jalankan docker create --name ubuntu ubuntu:22.04 lalu buat tar dari image Docker apa pun dengan docker export ubuntu
    Setelah itu, ekstrak ke /var/lib/machines/ubuntu. Anda perlu memilih image yang sudah berisi systemd atau memasang systemd di dalam container. Terakhir, masuk dengan machinectl start ubuntu dan machinectl shell ubuntu
    systemd-nspawn sangat sederhana dan ringan, serta meniru mesin Linux sungguhan dengan sangat baik. Ambil partisi root berbasis systemd apa pun dan boot dengan systemd-nspawn, maka itu akan berjalan begitu saja

  • Apakah ada angka perubahan performa dibanding sekadar menjalankan VM? Saya biasanya menjalankan guest Linux di dalam host Linux, dan sering kecewa dengan performa guest
    Saya belum pernah menyelidiki tuning pengalaman VM, jadi penasaran seberapa banyak yang saya lewatkan. Apakah 5% lebih cepat? 100%?

    • Menjalankannya bagaimana? Jika KVM/QEMU dijalankan dengan konfigurasi yang tepat, performanya bisa mendekati bare metal
  • Apakah ini berjalan secara native di Arm, yaitu Apple Silicon? Bagaimana dengan versi macOS terbaru? Apakah ada akselerasi grafis? Bagaimana jaringan ditangani?

  • Saya penasaran apa bedanya dengan Proxmox, dan apakah optimasi yang dilakukan di sini bisa saya tiru secara manual di lingkungan Proxmox saya

    • Ini sangat berbeda dari Proxmox. Proxmox dibuat untuk lab dan pusat data yang perlu meng-host banyak server sebagai VM
      Quickemu tampaknya terutama ditujukan untuk penggunaan desktop