5 puan yazan GN⁺ 2024-01-31 | 1 yorum | WhatsApp'ta paylaş
  • Quickemu, QEMU için bir sarmalayıcıdır; çalıştırılacak işletim sistemi seçildiğinde sanal makine oluşturmak için gereken ayarları otomatik olarak yaparak Windows, macOS ve Linux VM'lerini hızlıca oluşturup çalıştırır
  • quickget, istenen işletim sisteminin upstream OS imajını otomatik olarak indirip VM yapılandırma dosyasını oluşturur; quickemu ise donanımı algılayarak bilgisayara uygun yapılandırmayla VM'i çalıştırır
  • İlk hedef, Linux dağıtımlarını hızlıca test etmekti; VM ve ayarlar harici USB depolama ya da ev dizini gibi istenen bir konuma yerleştirilebilir ve çalıştırmak için yükseltilmiş ayrıcalıklar gerekmez
  • Günümüzde macOS, Windows, çoğu BSD, FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS ve daha fazlası dahil neredeyse 1000 işletim sistemi sürümünü destekler
  • Linux ve macOS ana sistemlerinde çalışır; SPICE, dosya paylaşımı, QEMU Guest Agent, VirGL, USB passthrough, port yönlendirme, ses, EFI ve Legacy BIOS önyükleme gibi VM kullanımı için gerekli özellikleri sunar

Quickemu ne yapar

  • Quickemu, QEMU etrafına sarılmış bir araçtır ve sanal makine oluştururken gereken ayarları otomatik olarak yapar
  • Kullanıcının yalnızca çalıştıracağı işletim sistemini seçmesi yeterlidir; çok sayıdaki ayar seçeneğini elle belirtmesi gerekmez
  • Temel araçlar iki tanedir
    • quickget: İstenen işletim sisteminin upstream OS imajını otomatik olarak indirir ve VM yapılandırma dosyasını oluşturur
    • quickemu: Ana sistem donanımını taradıktan sonra ilgili bilgisayara uygun optimize edilmiş yapılandırmayla sanal makineyi çalıştırır

Projenin çıkış noktası ve bugünkü kapsamı

  • İlk hedef, Linux dağıtımlarını test etmeyi hızlandırmaktı
  • VM ve ayarlar, harici USB depolama ya da ev dizini gibi istenen bir konumda saklanabilir
  • Sanal makineyi çalıştırmak için yükseltilmiş ayrıcalıklar gerekmez
  • Güncel destek kapsamı Linux dağıtımlarının ötesine geçerek macOS, Windows, çoğu BSD ve Linux dışı işletim sistemlerine genişlemiştir
    • Desteklenen örnekler arasında FreeDOS, Haiku, KolibriOS, OpenIndiana ve ReactOS yer alır

Desteklenen işletim sistemleri ve ana sistemler

  • Ana sistem olarak Linux ve macOS desteklenir
  • Misafir işletim sistemleri şunları içerir
    • macOS Sequoia, Sonoma, Ventura, Monterey, Big Sur, Catalina, Mojave
    • Windows 10 ve 11, TPM 2.0 dahil
    • Windows Server 2022, 2019, 2016
    • Ubuntu ve tüm resmi Ubuntu flavor'ları
    • Çoğu BSD ve çeşitli Linux dışı işletim sistemleri
  • ARM64 misafir desteği sayesinde aarch64 VM'ler çalıştırılabilir
    • ARM ana sistemlerde native çalıştırma
    • x86_64 ana sistemlerde emülasyonla çalıştırma
  • Desteklenen işletim sistemi sürümü sayısı neredeyse 1000'e ulaşır

VM özellikleri

  • SPICE için tam destek sunar ve ana sistem/misafir pano paylaşımını içerir
  • Dosya paylaşımı, misafir işletim sistemine göre birden fazla yöntemle desteklenir
    • VirtIO-webdavd: Linux ve Windows misafirleri için dosya paylaşımı
    • VirtIO-9p: Linux ve macOS misafirleri için dosya paylaşımı
    • Samba: Linux, macOS ve Windows misafirleri için dosya paylaşımı; ana sistemde smbd kurulu olmalıdır
  • QEMU Guest Agent desteğiyle standart QMP komutları üzerinden sistem düzeyi ajana erişilebilir
  • Grafik ve aygıt özellikleri olarak VirGL hızlandırma, USB aygıt passthrough ve akıllı kart passthrough desteği sunar
  • Ağ ve giriş/çıkış özellikleri de dahildir
    • Misafire otomatik SSH port yönlendirme
    • Ağ port yönlendirme
    • Tam çift yönlü ses
    • Braille desteği
    • SecureBoot'lu veya SecureBoot'suz EFI önyükleme
    • Legacy BIOS önyükleme

Hızlı başlangıç akışı

  • Quickemu kurulumu sonrasında VM iki adımda oluşturulup çalıştırılır
  • quickget ile ISO imajı indirilir ve VM yapılandırma dosyası oluşturulur
quickget nixos unstable minimal
  • quickemu, quickget tarafından oluşturulan yapılandırma dosyasını kullanarak VM'i başlatır
quickemu --vm nixos-unstable-minimal.conf
  • quickget bağımsız değişken olmadan çalıştırıldığında desteklenen tüm işletim sistemlerinin listesi görülebilir

Belgeler ve referans materyalleri

1 yorum

 
GN⁺ 2024-01-31
Hacker News görüşleri
  • https://virt-manager.org/ tavsiye ederim. Benim ortamımda çok daha iyi çalıştı ve QEMU’yu uzak bir sistemde SSH üzerinden çalıştırmayı da destekliyor
    Eskiden farklı VM host’larını ve yerel VM’leri çok yönettiğim dönemde bunu hep kullanırdım
    • virt-manager, en kıymeti bilinmeyen yazılımlardan biri. Güçlü ve sık sık ihtiyaç duyulan bir araç
      VM’lerle ilgili temel terimlere bir miktar hakim olmak gerekiyor ama işlev ve güç dolu eski tarz bir GUI’yi çok hatırlatıyor
      İhtiyacınız daha basitse ya da VM tarafına daha az aşinaysanız Gnome Boxes, aynı backend’i kullanırken daha sade bir GUI sunuyor. Basit olduğu için esnekliği daha az ama sonradan Boxes’ta görünmeyen ayarları kurcalamanız gerekirse Gnome Boxes VM’ini virt-manager ile açabilmeniz güzel
    • Aynı şey değil ama Quickemu da SSH üzerinden gayet iyi çalışıyor
      Uzak sistemde SSH ile çalıştırınca QEMU konsolunu Fedora’daki yerel Wayland oturumuma “X forwarding” ile aktarıyor
      Başta headless modda çalıştığını sanmıştım ama pencere açılınca epey şaşırdım :)
    • Sadece yapılandırma yapan bir programın bu kadar önemli ve faydalı olabilmesi şaşırtıcı
      Yapılandırma, yapılandırdığı yazılımdan ayrılmış olsa nasıl olurdu diye düşündürüyor. Her UI programının tekerleği yeniden icat etme biçimini öğrenmek yerine sevdiğiniz bir yapılandırma yöneticisini seçip kullanabilirdiniz
      Şu an buna en yakın şey metin tabanlı yapılandırma dosyaları. Bunları kullanan her program belirli bir dil ve kayıt konumu seçmek zorunda
      Son zamanlarda sık düşündüğüm fikir bir yapılandırma aracılık katmanı. Kullanıcının gördüğü yapılandırma arayüzü istediği dili/formatı kullanır, bu veriyi tek doğru kaynak kabul eder ve yazılımın okuyacağı yapılandırma dosyalarını üretir
    • libvirt ve virt-manager, aslında QEMU ve KVM gibi gerçek yazılımlar için basitleştirilmiş kullanıcı arayüzlerinden ibaret. Yapılandırma dosyalarını parse edip QEMU ikilisine doğru seçenekleri geçirmek gibi görece ufak sorunları çözüyorlar
      Yapılandırma dosyası tabanlı başlatma/durdurma veya seri konsol erişimi gibi faydalı yönetim özellikleri de var ama bunları shell script ile kendiniz yazmak da oldukça basit. libvirt’ün storage tarafı korkunç derecede ayrıntılı ve karmaşık, üstelik thin LV ya da ZFS’yi de düzgün ele alamıyor
      Kurumsal standart yaklaşımla çalıştırmak istemiyorsanız ve QEMU ya da shell gibi temel yazılımları öğrenmeye kapalı değilseniz, ayrıca libvirt’ün o belirsiz özelliklerine gerçekten ihtiyacınız yoksa, KVM üzerinde QEMU’yu doğrudan kullanıp kendi script’lerinizi yazmanızı öneririm. Vasat bir Python wrapper yerine QEMU hakkında daha çok şey öğrenirsiniz ve sistem üzerinde daha fazla kontrolünüz olur
      Ayrıca IBM/Red Hat, virt-manager’ı yeni web arayüzü Copilot lehine itip fiilen terk etmiş gibi görünüyor
      Quickemu daha ilgi çekici çünkü büyük ve karmaşık bir UI öğrenmeye zaman harcamadan, örneklere kısa bir göz atıp hemen yeni bir VM başlatabiliyorsunuz
    • QEMU’ya komut satırı seçeneklerini doğrudan geçebilmek hoşuma gidiyor. Windows NT on MIPS ya da Ultrix gibi eski işletim sistemleri için bu yaklaşım çok uygun
  • Bir önceki paylaşımda belirtilen güvenlik uyarısını tekrar bırakıyorum[1]
    Bu araç internetten rastgele dosyalar indiriyor ve bunların checksum’unu yine internetteki başka rastgele dosyalarla karşılaştırıyor[2]
    Bu en iyi güvenlik pratiği değil. Doğru yöntem, dağıtım geliştiricisinin GPG anahtarlarını repoya commit etmek ve tüm dosyaları o anahtarla doğrulamak
    Yine de bununla, bu projenin çeşitli işletim sistemlerini boot ettirmek için QEMU’ya geçirilecek doğru bayrakları bulma çabasını küçümsemek istemiyorum
    [1] https://news.ycombinator.com/item?id=28797129
    [2] https://github.com/quickemu-project/quickemu/blob/0c8e1a5205...
    • Bunun neden bir güvenlik sorunu olduğunu açıklar mısınız? GPG anahtarı doğrulaması özgünlüğü sağlamanın en iyi yolu olabilir ama bu, neredeyse herkesin yaptığı gibi dağıtımın kendi HTTPS sitesinden ISO indirmekten çok da farklı değil
      Üstelik çoğu kişinin yapmadığı bir şeyi de ekliyor: hash eşleşmesini doğruluyor
    • Bunun ne kadarı eski alışkanlık? TCP/TLS zaten checksum ve kaynak imzası sağlamıyor mu?
      FTP döneminde checksum ve GPG şarttı. HTTP/TCP tarafında yeniden deneme ve checksum işini TCP yaptığı için GPG’nin önemi daha da artıyordu ama ortadaki adam saldırıları yüzünden ikisi de yine gerekliydi
      Peki HTTPS varsa neden hâlâ önemli? HTTPS bu iki doğrulama ve imza kontrolünün yerini almıyor mu
    • Ayrıca geliştirici canlı yayın sırasında mikrofonu açıkken mekanik klavyesiyle kullanıcı şifresini yazmış
    • “İnternetten rastgele dosyalar” indirmiyor, yalnızca asıl kaynakları kullanıyor gibi görünüyor
    • Bilgi olarak, macOS artık imza doğrulaması yapıyor. Windows için kullanılabilir bir imza yok
      Umarım bu yıl Hacker News ilgisi sayesinde biri Linux için imza doğrulamayı da ekler
  • macOS’te UTM[0] bunu oldukça iyi yapıyor. Küçük de olsa hazır imajlardan oluşan bir galeri[1] de sunuyor
    0. https://mac.getutm.app/
    1. https://mac.getutm.app/gallery/
  • libvirt, Windows ve çeşitli Linux dağıtımlarını hızlıca oluşturup otomatik kurulum yapabilen virt-install aracını da içeriyor. macOS’te denemedim
    Yakın tarihli bir Alma Linux örneği şöyle
    $ virt-install --name alma9 --memory 1536 --vcpus 1 --disk path=$PWD/alma9.img,size=20 --cdrom alma9.iso --unattended

Bir kahve içip gelince kurulumun tamamlandığını ve Alma Linux VM’inin çalıştığını görüyorsunuz. Desteklenen işletim sistemi listesi libvirt sürümüne göre değişiyor; şu komutla kontrol ediliyor
$ osinfo-query os

  • Fedora 39 disk imajı gerekiyorsa virt-builder da var
    $ virt-builder fedora-39
    Daha sonra virt-install --import ile libvirt içine aktarılabilir

  • virt-install ISO’yu otomatik indiriyor mu? Deneyince şu mesaj çıkıyor
    $ 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'.

  • Sonucun tam olarak nasıl olacağı net değil. Hostname ne olacak, disk nasıl bölümlendirilecek, hangi paketler kurulacak, saat dilimi ve klavye düzeni ne olarak ayarlanacak gibi şeyleri merak ediyorum

  • Bunu yapmak için libosinfo-bin kurmam gerekti

  • Bu tür araçların sağladığı kullanım kolaylığı harika, ama iki ana betiği birleştirince yaklaşık 5000 satır Bash ediyor
    Çalıştırmadan önce incelemek isterim ama 5000 satır Bash okumak da istemiyorum

    • Kabuk betiklerinin genelde keyifle okunmadığına büyük ölçüde katılıyorum, ama bu kod aslında o kadar da kötü değil
      İkna edici olur mu bilmiyorum ama çalıştırmadan önce Bash betiğini okudum ve oldukça iyi yapılandırılmıştı. İşlevler fonksiyonlara düzgünce ayrılmış, değişken adları makul, faydalı yorumlar var, garip kontrol akışı ya da dolaylı çağrılar yok ve anlaşılmaz komut kullanımı en aza indirilmiş. Şimdiye kadar gördüğüm kabuk betikleri arasında okunması en kolay olanlardan biri
      Bu betiğin gerçekte ne yaptığını düşününce kodun nispeten düz bir yapıda olması da mantıklı. Temelde yapılan şey QEMU’yu başlatan tek bir komutu çalıştırmak. Kalan kod ise o komuta hangi argümanların verileceğini belirlemek için yerel sistemi incelemek ya da gerekirse birkaç dosya indirmek
    • Sırf kabuk betiği diye buna diğer yazılımlardan farklı yaklaşmak için bir neden var mı? Bir işletim sistemini çalıştırmadan önce çekirdek kaynak kodunu mu okuyorsunuz? Ya da web tarayıcısını?
      Bunun körü körüne çalıştırılması gerektiğini söylemiyorum ama çalıştıracağımız yazılımı seçerken kullandığımız ölçütler genelde kaynak koda ne kadar aşina olduğumuza bağlı olmuyor
    • Gerçekten endişeniz varsa ve vaktiniz de bulunuyorsa, tepki çekebilir ama kod hakkında ChatGPT ile konuşmayı deneyebilirsiniz. Prompt örneği şöyle olabilir
      “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.”
      Bunu daha kısa kodlarda, yine de prompt sınırını aşan ama 1000 satırın altındaki örneklerde denedim ve oldukça iyi çalıştı. ChatGPT’nin bu aralar tembelleştiğini kabul ediyorum; bazen tembellik etmemesini ve istediğiniz tam çıktıyı vermesini açıkça söylemeniz gerekiyor, ama genel olarak kod açıklamada oldukça iyi
    • Bence bu mesele, yazılım genelinde güven inşası ile ilgili. Güveni nasıl kurduğumuz, geliştiricilerle kullanıcılar arasında hangi beklenti ve sorumlulukların olduğu meselesi
      “Yeterince çok göz, bütün hataları sığlaştırır” sözü bazı kullanıcılar için düşünmeyi durduran bir klişe gibi görünüyor. Kod açık ve incelenebilir olduğu için her şeyin yolunda olduğunu varsayıyorlar; sanki her şeyi denetleyen bir kod denetçileri topluluğu ortalıkta dolaşıyormuş gibi. Oysa pratikte iyi niyetten çok kötü niyet bekler oldum
      Windows tarafında onlarca yıldır sürekli çeşitli tweak araçları vardı. “Büyük şirket” geliştiricilerinin sistem performansını sonuna kadar zorlama motivasyonu olmadığını ve hızlı ayarlar ya da registry tweak’lerinin arkasında herkes için faydalı, kolay seçenekler bıraktıklarını düşünen kişileri cezbediyorlar. Ara sıra görünen TronScript aklıma geliyor; geçmişi ve katılım düzeyi nedeniyle ilk bakış testini geçiyor gibi göründüğünden iyi buluyorum, ama otomasyon adına ayrıntıları gizliyor ve kullanıcı adına iyi kararlar vermesini bekletiyor. İsterseniz derinlemesine girip ne olduğunu, neden olduğunu araştırıp öğrenebilirsiniz ama birçok kişi için bu fiilen ikili dosyadan farksız
      Neyse ki bu tür araçların çoğunun kullanıcı kitlesi sınırlı, bu yüzden ele geçirilmesi çok cazip değil. Belirli bir marka yeterince yaygınlaşırsa, 2017’de arka kapı eklenen Piriform CCleaner örneğindeki gibi bir durum yaşanabilir
  • İlginç görünüyor ama Ubuntu’da ara sıra VirtualBox ile sadece Windows 11 çalıştıran biri için ne gibi avantajları olduğunu anlatabilir misiniz?

    • VM içinde ne yaptığınıza çok bağlı olduğu için yanıtlaması zor. Bu, QEMU için bir sarmalayıcı gibi görünüyor ve yeni VM’leri kolayca ayağa kaldırmak için makul varsayılanlar seçmeye çalışan bir araç gibi duruyor
    • Özellikle GPU hızlandırma tarafı var. vbox içindeki Windows’ta görüntülü toplantı çalıştırmak neredeyse imkânsız ve biraz karmaşık herhangi bir GUI uygulaması bile ciddi şekilde gecikiyor
    • Daha çok Gnome Boxes’a alternatif gibi görünüyor. Güncel imajları indirip ilgili dağıtım/işletim sistemi için varsayılan ayarları sunuyor; ayrıca Windows ve macOS gibi uğraştırıcı işletim sistemlerini de ek olarak destekliyor
    • Gerçekten macOS çalıştırıyorsa, bunu VirtualBox ya da VMware’e kurmaya kıyasla büyük bir avantaj. O tarafta pek çok şeyi yamalamak gerektiğinden çalıştırması çok zor
  • Linux’ta Incus/LXD’yi güçlü biçimde tavsiye ederim. VM çalıştırmak şu kadar basit

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

    Çalıştıktan sonra kabuk erişimi şöyle sağlanıyor

    incus exec my-ubuntu-vm /bin/bash  
    

    Incus/LXD sistem konteynerlerini de destekliyor

  • Sevdiğim ama neredeyse hiç bahsedilmeyen bir seçenek de systemd-nspawn. docker create --name ubuntu ubuntu:22.04 komutunu çalıştırıp docker export ubuntu ile herhangi bir Docker imajından bir tar oluşturabilirsiniz
    Ardından bunu /var/lib/machines/ubuntu içine açmanız yeterli. systemd içeren bir imaj seçmeniz ya da konteyner içine systemd kurmanız gerekir. Son olarak machinectl start ubuntu ve machinectl shell ubuntu ile içine girersiniz
    systemd-nspawn çok basit ve hafiftir, ayrıca gerçek bir Linux makinesini oldukça iyi emüle eder. systemd tabanlı herhangi bir kök bölümü alıp systemd-nspawn ile başlatırsanız olduğu gibi çalışır

  • Bunu sadece bir VM çalıştırmakla kıyasladığınızda performans farkına dair sayılar var mı? Genelde Linux ana makine içinde Linux misafir çalıştırıyorum ama misafir performansından sık sık hayal kırıklığına uğruyorum
    VM deneyimini ayarlamaya yönelik hiç araştırma yapmadım, bu yüzden ne kadarını kaçırdığımı merak ediyorum. %5 daha mı hızlı? %100 mü?

    • Nasıl çalıştırıyorsunuz? KVM/QEMU'yu uygun ayarlarla çalıştırırsanız neredeyse bare-metal performansı alırsınız
  • Arm, yani Apple Silicon üzerinde yerel olarak çalışıyor mu? En güncel macOS sürümleri nasıl? Grafik hızlandırma var mı? Ağ nasıl ele alınıyor?

  • Proxmox'tan farkının ne olduğunu ve burada yapılan optimizasyonları kendi Proxmox ortamımda elle yeniden üretip üretemeyeceğimi merak ediyorum

    • Bu, Proxmox'tan son derece farklı. Proxmox, çok sayıda sunucuyu VM olarak barındırması gereken laboratuvarlar ve veri merkezleri için yapılmış
      Quickemu ise esas olarak masaüstü kullanımını hedefliyor gibi görünüyor